From: Plom Heller Date: Tue, 8 Sep 2026 22:33:59 +0000 (+0200) Subject: Add script to update installation's EFI boot directory contents. X-Git-Url: https://plomlompom.com/repos/booking/process_efforts?a=commitdiff_plain;h=c66f84f01e1401a9a8a64f2ae0b460e341015934;p=confplom Add script to update installation's EFI boot directory contents. --- diff --git a/setup_scripts/_lib.sh b/setup_scripts/_lib.sh index 8fa181a..f8b1fec 100644 --- a/setup_scripts/_lib.sh +++ b/setup_scripts/_lib.sh @@ -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 +} diff --git a/setup_scripts/install_debian.sh b/setup_scripts/install_debian.sh index 4561424..733dba7 100755 --- a/setup_scripts/install_debian.sh +++ b/setup_scripts/install_debian.sh @@ -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 \ diff --git a/setup_scripts/install_server.sh b/setup_scripts/install_server.sh index 330a379..ae42373 100755 --- a/setup_scripts/install_server.sh +++ b/setup_scripts/install_server.sh @@ -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 index 0000000..92cd91a --- /dev/null +++ b/setup_scripts/update_efi.sh @@ -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}"