home · contact · privacy
Add script to update installation's EFI boot directory contents.
authorPlom Heller <plom@plomlompom.com>
Tue, 8 Sep 2026 22:33:59 +0000 (00:33 +0200)
committerPlom Heller <plom@plomlompom.com>
Tue, 8 Sep 2026 22:33:59 +0000 (00:33 +0200)
setup_scripts/_lib.sh
setup_scripts/install_debian.sh
setup_scripts/install_server.sh
setup_scripts/update_efi.sh [new file with mode: 0755]

index 8fa181a40e7dda2d6179c7fab2b957a728f98d9d..f8b1fec8e857d1a80c35b585dcf9b582dd3168f8 100644 (file)
@@ -4,7 +4,9 @@ cd "$(dirname "${SCRIPT_NAME}")"
 
 # constants unlikely to change
 DIRNAME_SSH=.ssh
+FNAME_INITRD=initrd.img
 FNAME_PROFILE=.profile
+FNAME_VMLINUZ=vmlinuz
 NAME_DEV=dev
 PATH_DEV="/${NAME_DEV}"
 PATH_MNT=/mnt
@@ -199,3 +201,11 @@ disable_apt_recommends() {
     msg 'Disabling automatic installation of APT recommends …'
     printf 'APT::Install-Recommends "false";\n' >| "${TARGET}"
 }
+efi_copy_kernel_vmlinuz() {
+    local PATH_EFI_NAME_BOOT=$1
+    local PREFIX=${2:-}
+    msg 'EFI setup: copying kernel and initrd into %s …' "${PATH_EFI_NAME_BOOT}"
+    for FILENAME in "${FNAME_INITRD}" "${FNAME_VMLINUZ}"; do
+        cp "${PREFIX}/${FILENAME}" "${PATH_EFI_NAME_BOOT}/"
+    done
+}
index 456142448bbef17d08b57f42315d301067ccb6d7..733dba7e1b8777eaf86c7593d754efc8bab72121 100755 (executable)
@@ -2,9 +2,7 @@
 . "$(dirname "$0")/_lib.sh"
 
 # constants unlikely to change
-FNAME_INITRD=initrd.img
 FNAME_NM_CONN=wifi.nmconnection
-FNAME_VMLINUZ=vmlinuz
 PATH_CRYPTTAB=/etc/crypttab
 PATH_EFI=/boot/efi
 PATH_FSTAB=/etc/fstab
@@ -18,7 +16,7 @@ DEB_SUITE=trixie
 IDX_BOOT_PARTITION=1
 PATH_BOOT_DEVICE="${PATH_DEV}/nvme0n1"
 
-# inputs to confirm
+# inputs
 usage $# "partition" "boot-name"
 PARTITION=$1
 NAME_BOOT=$2
@@ -86,8 +84,7 @@ msg 'Setting up hostname …'
 printf '%s\n' "${NAME_BOOT}" >| "${PATH_MNT_HOSTNAME}"
 printf '127.0.1.1\t%s\n' "${NAME_BOOT}" >> "${PATH_MNT_HOSTS}"
 
-# for firmware-iwlwifi below (as debootstrap only enables "main" by default)
-msg 'Enabling non-free-firmware component in target sources.list …'
+msg 'For firmware-iwlwifi, enabling non-free-firmware in target sources.list …'
 sed -i 's/ main$/ main non-free-firmware/' "${PATH_MNT_APT_SOURCES}"
 
 disable_apt_recommends "${PATH_MNT_ROOT}"
@@ -135,11 +132,8 @@ method=auto
 EOF
 chmod 600 "${PATH_MNT_NM_CONN}"
 
-msg 'EFI setup: copying kernel and initrd into %s …' "${PATH_EFI_NAME_BOOT}"
 mkdir "${PATH_EFI_NAME_BOOT}"
-for FILENAME in "${FNAME_INITRD}" "${FNAME_VMLINUZ}"; do
-    cp "${PATH_MNT_ROOT}/${FILENAME}" "${PATH_EFI_NAME_BOOT}/"
-done
+efi_copy_kernel_vmlinuz "${PATH_EFI_NAME_BOOT}" "${PATH_MNT_ROOT}"
 msg 'EFI setup: adding boot entry %s …' "${NAME_BOOT}"
 efibootmgr \
     --create \
index 330a37984c0310497174d0255367f999800dac2b..ae42373369bd69ceba90b2bc96cd0b705bddfb28 100755 (executable)
@@ -18,9 +18,9 @@ PATH_MY_KNOWN_HOSTS="${PATH_MY_SSH}/known_hosts"
 # sanity checks
 check_tools scp ssh ssh-keygen tar
 
-DIR_TEMP=$(mktemp --directory)
-PATH_REPO_TAR="${DIR_TEMP}/${FNAME_REPO_TAR}"
-msg 'Creating tar of repo in temporary directory %s …' "${DIR_TEMP}"
+PATH_TEMP=$(mktemp --directory)
+PATH_REPO_TAR="${PATH_TEMP}/${FNAME_REPO_TAR}"
+msg 'Creating tar of repo in temporary directory %s …' "${PATH_TEMP}"
 tar cf "${PATH_REPO_TAR}" -C "${PATH_REPO_PARENT}" "${NAME_REPO_DIR}"
 
 msg 'Uploading repo tar to server …'
@@ -28,7 +28,7 @@ if [ -e "${PATH_MY_KNOWN_HOSTS}" ]; then
     ssh-keygen -f "${PATH_MY_KNOWN_HOSTS}" -R "${SERVER}"
 fi
 scp ${OPTS_SSH_NEW_HOST} "${PATH_REPO_TAR}" "${TARGET}:~"
-rm -rf "${DIR_TEMP}"
+rm -rf "${PATH_TEMP}"
 
 msg 'Unpacking repo and running setup script …'
 # --no-same-owner owns the files to root, prevening "dubious ownership" when
diff --git a/setup_scripts/update_efi.sh b/setup_scripts/update_efi.sh
new file mode 100755 (executable)
index 0000000..92cd91a
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+. "$(dirname "$0")/_lib.sh"
+
+usage $# "efi-partition"
+PARTITION_EFI=$1
+
+PATH_TEMP=$(mktemp --directory)
+PATH_EFI_NAME_BOOT="${PATH_TEMP}/$(hostname)"
+
+msg 'Mounting EFI partition %s at %s …' "${PARTITION_EFI}" "${PATH_TEMP}"
+mount "${PARTITION_EFI}" "${PATH_TEMP}"
+
+efi_copy_kernel_vmlinuz "${PATH_EFI_NAME_BOOT}"
+
+msg 'Unmounting EFI partition …'
+umount "${PATH_TEMP}"
+rmdir "${PATH_TEMP}"