home · contact · privacy
Extend sanity checks. master
authorPlom Heller <plom@plomlompom.com>
Wed, 9 Sep 2026 02:53:25 +0000 (04:53 +0200)
committerPlom Heller <plom@plomlompom.com>
Wed, 9 Sep 2026 02:53:25 +0000 (04:53 +0200)
setup_scripts/_lib.sh
setup_scripts/install_debian.sh
setup_scripts/setup_luksvg.sh
setup_scripts/update_efi.sh

index 1c917b3a59af8e61aa0c27712caa29300c386690..eeeee826adcd99abef8b4445749b98798bfae147 100644 (file)
@@ -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}")
index de37d295d2860b46127abe5493744a6111e79a46..32796d91c0f845a46f33dcbe4ce6d0349c421b8d 100755 (executable)
@@ -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_.-]*|"")
index 0781a1d5af32e8e0165764144774b66672a315c7..76377d7e5fb9901acf76849ba96887f0babd0aa0 100755 (executable)
@@ -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}"\
index a2183deb02b4a7dda43150d6fa7e0c38ac42f3ce..cb345c1dbd8fd052683a361c89052ebccc6f5a20 100755 (executable)
@@ -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}"