From 5a52abaf3f0efa4a20d1a773ea333d16c95ae4c6 Mon Sep 17 00:00:00 2001 From: Plom Heller Date: Wed, 9 Sep 2026 04:53:25 +0200 Subject: [PATCH] Extend sanity checks. --- setup_scripts/_lib.sh | 28 ++++++++++++++++++++++++++++ setup_scripts/install_debian.sh | 2 +- setup_scripts/setup_luksvg.sh | 1 + setup_scripts/update_efi.sh | 1 + 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/setup_scripts/_lib.sh b/setup_scripts/_lib.sh index 1c917b3..eeeee82 100644 --- a/setup_scripts/_lib.sh +++ b/setup_scripts/_lib.sh @@ -9,12 +9,14 @@ FNAME_INITRD=initrd.img FNAME_PROFILE=.profile FNAME_VMLINUZ=vmlinuz PATH_DEV="/${DIRNAME_DEV}" +PATH_EFI=/boot/efi PATH_MNT=/mnt TO_RBIND="${DIRNAME_DEV} proc sys" # constants we might want to change at some point IDX_PARTITION_EFI=1 IDX_PARTITION_LUKSVG=3 +IDX_PARTITION_RESCUE=2 NAME_BOOT_DEVICE=nvme0n1 NAME_DATA=data NAME_LUKSVG=cryptolvm @@ -28,6 +30,7 @@ PATH_BOOT_DEVICE="${PATH_DEV}/${NAME_BOOT_DEVICE}" PATH_MY_SSH="${HOME}/${DIRNAME_SSH}" PATH_PARTITION_EFI="${PATH_BOOT_DEVICE}p${IDX_PARTITION_EFI}" PATH_PARTITION_LUKSVG="${PATH_BOOT_DEVICE}p${IDX_PARTITION_LUKSVG}" +PATH_PARTITION_RESCUE="${PATH_BOOT_DEVICE}p${IDX_PARTITION_RESCUE}" PATH_PROFILE="${HOME}/${FNAME_PROFILE}" PATH_REPO=$(cd .. && pwd) NAME_REPO_DIR=$(basename "${PATH_REPO}") @@ -78,6 +81,31 @@ check_partition_mountable() { && error "${PARTITION} is already mounted" true } +check_boot_device_layout() { + local COUNT_NVME + COUNT_NVME=$(find "${PATH_DEV}" -maxdepth 1 -name 'nvme*n[0-9]' | wc -l) + [ "${COUNT_NVME}" -eq 1 ]\ + || error "expected 1 NVMe device in ${PATH_DEV}, found ${COUNT_NVME}" + [ -b "${PATH_BOOT_DEVICE}" ]\ + || error "NVMe device in ${PATH_DEV} not expected ${PATH_BOOT_DEVICE}" + + local COUNT_PARTITIONS + COUNT_PARTITIONS=$(find "${PATH_DEV}" -maxdepth 1 \ + -name "$(basename "${PATH_BOOT_DEVICE}")p[0-9]*" | wc -l) + [ "${COUNT_PARTITIONS}" -eq 3 ]\ + || error "expected 3 partitions on ${PATH_BOOT_DEVICE}, found ${COUNT_PARTITIONS}" + local IDX + for IDX in 1 2 3; do + [ -b "${PATH_BOOT_DEVICE}p${IDX}" ]\ + || error "missing expected partition ${PATH_BOOT_DEVICE}p${IDX}" + done + + try_quiet findmnt --source "${PATH_PARTITION_RESCUE}" --target /\ + || error "not running from expected rescue partition \ +${PATH_PARTITION_RESCUE} (mounted as /)" + try_quiet findmnt --source "${PATH_PARTITION_EFI}" --target "${PATH_EFI}"\ + || error "expected ${PATH_PARTITION_EFI} mounted at ${PATH_EFI}" +} check_new_luksvg() { local PATH_LUKS_MAPPER PATH_LUKS_MAPPER=$(path_luks_mapper "${NAME_LUKSVG}") diff --git a/setup_scripts/install_debian.sh b/setup_scripts/install_debian.sh index de37d29..32796d9 100755 --- a/setup_scripts/install_debian.sh +++ b/setup_scripts/install_debian.sh @@ -4,7 +4,6 @@ # constants unlikely to change FNAME_NM_CONN=wifi.nmconnection PATH_CRYPTTAB=/etc/crypttab -PATH_EFI=/boot/efi PATH_FSTAB=/etc/fstab PATH_HOSTNAME=/etc/hostname PATH_HOSTS=/etc/hosts @@ -39,6 +38,7 @@ PATH_VG_SWAP=${PATH_VG}/${NAME_SWAP} # sanity checks check_tools cryptsetup debootstrap efibootmgr lvcreate mkfs.ext4 vgchange vgs +check_boot_device_layout check_partition_mountable "${PATH_PARTITION_LUKSVG}" check_openable_luksvg case "${NAME_BOOT}" in *[!A-Za-z0-9_.-]*|"") diff --git a/setup_scripts/setup_luksvg.sh b/setup_scripts/setup_luksvg.sh index 0781a1d..76377d7 100755 --- a/setup_scripts/setup_luksvg.sh +++ b/setup_scripts/setup_luksvg.sh @@ -13,6 +13,7 @@ PATH_VG_SWAP=${PATH_VG}/${NAME_SWAP} # sanity checks check_tools cryptsetup lvcreate mkfs.ext4 mkswap vgchange vgcreate vgs +check_boot_device_layout check_partition_mountable "${PATH_PARTITION_LUKSVG}" check_new_luksvg try_quiet cryptsetup isLuks "${PATH_PARTITION_LUKSVG}"\ diff --git a/setup_scripts/update_efi.sh b/setup_scripts/update_efi.sh index a2183de..cb345c1 100755 --- a/setup_scripts/update_efi.sh +++ b/setup_scripts/update_efi.sh @@ -6,6 +6,7 @@ usage $# PATH_TEMP=$(mktemp --directory) PATH_EFI_NAME_BOOT="${PATH_TEMP}/$(hostname)" +check_partition_mountable "${PATH_PARTITION_EFI}" msg 'Mounting EFI partition %s at %s …' "${PATH_PARTITION_EFI}" "${PATH_TEMP}" mount "${PATH_PARTITION_EFI}" "${PATH_TEMP}" -- 2.30.2