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
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}")
&& 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}")
# 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
# 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_.-]*|"")