From 3ac29af74b574f0c8910a86016bd777b4221eb6f Mon Sep 17 00:00:00 2001 From: punoko <36707250+punoko@users.noreply.github.com> Date: Wed, 31 Jul 2024 23:44:19 +0200 Subject: [PATCH] re-enable secureboot after sbctl fix --- build.sh | 130 +++++++++++++++++++++++++++---------------------------- 1 file changed, 63 insertions(+), 67 deletions(-) diff --git a/build.sh b/build.sh index 363b612..813c642 100755 --- a/build.sh +++ b/build.sh @@ -33,7 +33,7 @@ PACKAGES=( polkit reflector systemd-ukify - # sbctl + sbctl zsh ) SERVICES=( @@ -42,7 +42,7 @@ SERVICES=( cloud-config cloud-final pacman-init - # secure-boot-init + secure-boot-init sshd systemd-boot-update systemd-networkd @@ -58,75 +58,72 @@ cleanup() { if findmnt --mountpoint "$MOUNT" >/dev/null; then umount --recursive "$MOUNT" fi - if [[ -n $LOOPDEV ]]; then + if [[ -n "$LOOPDEV" ]]; then losetup --detach "$LOOPDEV" fi rm -rf "$MOUNT" } -trap cleanup ERR +trap cleanup EXIT # Image setup -rm -f $IMG_FILE -truncate --size $IMG_SIZE $IMG_FILE +rm -f "$IMG_FILE" +truncate --size "$IMG_SIZE" "$IMG_FILE" # Image format sfdisk --label gpt $IMG_FILE <"${MOUNT}/etc/mkinitcpio.conf.d/custom.conf" +rm -f "$MOUNT"/boot/initramfs-linux{,-fallback}.img +mv "$MOUNT/etc/mkinitcpio.d/linux."{preset,original} +cat <"$MOUNT/etc/mkinitcpio.conf.d/custom.conf" MODULES=(btrfs) HOOKS=(systemd autodetect microcode modconf keyboard block) EOF -cat <"${MOUNT}/etc/mkinitcpio.d/linux.preset" +cat <"$MOUNT/etc/mkinitcpio.d/linux.preset" PRESETS=('default') default_kver="/boot/vmlinuz-linux" -default_uki="/efi/EFI/Linux/arch.efi" +default_uki="/$ESP_DIR/EFI/Linux/arch.efi" default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp -S autodetect" EOF -arch-chroot "${MOUNT}" mkinitcpio --allpresets -sed -i "s/ -S autodetect//" "${MOUNT}/etc/mkinitcpio.d/linux.preset" +arch-chroot "$MOUNT" mkinitcpio --allpresets +sed -i "s/ -S autodetect//" "$MOUNT/etc/mkinitcpio.d/linux.preset" # https://systemd.io/BUILDING_IMAGES/ rm -f "$MOUNT/etc/machine-id" @@ -135,13 +132,13 @@ rm -f "$MOUNT/$ESP_DIR/loader/random-seed" # Use systemd-repart to grow the root partition mkdir "$MOUNT/etc/repart.d" -cat <"${MOUNT}/etc/repart.d/root.conf" +cat <"$MOUNT/etc/repart.d/root.conf" [Partition] Type=root EOF # Basic Network DHCP Setup -cat <"${MOUNT}/etc/systemd/network/99-ethernet.network" +cat <"$MOUNT/etc/systemd/network/99-ethernet.network" [Match] Name=en* Type=ether @@ -151,7 +148,7 @@ DHCP=yes EOF # Pacman Keyring Initialization -cat <"${MOUNT}/etc/systemd/system/pacman-init.service" +cat <"$MOUNT/etc/systemd/system/pacman-init.service" [Unit] Description=Pacman Keyring Initialization After=systemd-growfs-root.service @@ -169,28 +166,28 @@ WantedBy=multi-user.target EOF # # Secure Boot Initialization -# cat <"${MOUNT}/etc/systemd/system/secure-boot-init.service" -# [Unit] -# Description=Secure Boot Initialization -# After=systemd-growfs-root.service -# ConditionFirstBoot=yes - -# [Service] -# Type=oneshot -# RemainAfterExit=yes -# ExecStart=/usr/bin/sbctl create-keys -# ExecStart=/usr/bin/sbctl sign -s /boot/vmlinuz-linux -# ExecStart=/usr/bin/sbctl sign -s /boot/EFI/BOOT/BOOTX64.EFI -# ExecStart=/usr/bin/sbctl sign -s /boot/EFI/systemd/systemd-bootx64.efi -# ExecStart=/usr/bin/sbctl sign -s /usr/lib/systemd/boot/efi/systemd-bootx64.efi -# ExecStart=/usr/bin/sbctl enroll-keys --yes-this-might-brick-my-machine - -# [Install] -# WantedBy=multi-user.target -# EOF +cat <"$MOUNT/etc/systemd/system/secure-boot-init.service" +[Unit] +Description=Secure Boot Initialization +After=systemd-growfs-root.service +ConditionFirstBoot=yes + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/sbctl create-keys +ExecStart=/usr/bin/sbctl sign -s "/$ESP_DIR/EFI/Linux/arch.efi" +ExecStart=/usr/bin/sbctl sign -s "/$ESP_DIR/EFI/BOOT/BOOTX64.EFI" +ExecStart=/usr/bin/sbctl sign -s "/$ESP_DIR/EFI/systemd/systemd-bootx64.efi" +ExecStart=/usr/bin/sbctl sign -s /usr/lib/systemd/boot/efi/systemd-bootx64.efi +ExecStart=/usr/bin/sbctl enroll-keys --yes-this-might-brick-my-machine + +[Install] +WantedBy=multi-user.target +EOF # Cloud Init Settings -cat <"${MOUNT}/etc/cloud/cloud.cfg.d/custom.cfg" +cat <"$MOUNT/etc/cloud/cloud.cfg.d/custom.cfg" system_info: default_user: shell: /usr/bin/zsh @@ -205,32 +202,31 @@ disable_root_opts: "#" EOF # Neovim Symlinks -ln -sf /usr/bin/nvim "${MOUNT}/usr/local/bin/vim" -ln -sf /usr/bin/nvim "${MOUNT}/usr/local/bin/vi" +ln -sf /usr/bin/nvim "$MOUNT/usr/local/bin/vim" +ln -sf /usr/bin/nvim "$MOUNT/usr/local/bin/vi" # Services -arch-chroot "${MOUNT}" /usr/bin/systemctl enable "${SERVICES[@]}" -arch-chroot "${MOUNT}" /usr/bin/systemctl mask systemd-nsresourced.socket systemd-userdbd.socket -ln -sf /run/systemd/resolve/stub-resolv.conf "${MOUNT}/etc/resolv.conf" +arch-chroot "$MOUNT" /usr/bin/systemctl enable "${SERVICES[@]}" +arch-chroot "$MOUNT" /usr/bin/systemctl mask systemd-nsresourced.socket systemd-userdbd.socket +ln -sf /run/systemd/resolve/stub-resolv.conf "$MOUNT/etc/resolv.conf" # Pacman config -sed -i 's/^#Color/Color/' "${MOUNT}/etc/pacman.conf" -sed -i 's/^#ParallelDownloads/ParallelDownloads/' "${MOUNT}/etc/pacman.conf" +sed -i 's/^#Color/Color/' "$MOUNT/etc/pacman.conf" +sed -i 's/^#ParallelDownloads/ParallelDownloads/' "$MOUNT/etc/pacman.conf" # Mirror list -cat <"${MOUNT}/etc/pacman.d/mirrorlist" +cat <"$MOUNT/etc/pacman.d/mirrorlist" Server = https://geo.mirror.pkgbuild.com/\$repo/os/\$arch EOF # Disable SSH password and root login -cat <"${MOUNT}/etc/ssh/sshd_config.d/custom.conf" +cat <"$MOUNT/etc/ssh/sshd_config.d/custom.conf" PermitRootLogin no PasswordAuthentication no EOF # Image cleanup sync -f "$MOUNT/etc/os-release" -fstrim --verbose "${MOUNT}/${ESP_DIR}" -fstrim --verbose "${MOUNT}" -cleanup -qemu-img convert -f raw -O qcow2 "${IMG_FILE}" "${QCOW_FILE}" +fstrim --verbose "$MOUNT/$ESP_DIR" +fstrim --verbose "$MOUNT" +qemu-img convert -f raw -O qcow2 "$IMG_FILE" "$QCOW_FILE"