From 2b948633f002af0dd1e428bfeca0453cb6ac72c3 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Tue, 28 Mar 2017 09:25:16 -0400 Subject: use mountpoint /plaintext for samizdat-plaintext partition --- src/initrd/btrfs-create.sh | 2 +- src/initrd/grok-block | 20 ++++++++++++++------ src/initrd/menu-select | 14 ++++++++------ 3 files changed, 23 insertions(+), 13 deletions(-) (limited to 'src/initrd') diff --git a/src/initrd/btrfs-create.sh b/src/initrd/btrfs-create.sh index c076b9e..917f957 100644 --- a/src/initrd/btrfs-create.sh +++ b/src/initrd/btrfs-create.sh @@ -76,7 +76,7 @@ samizdat_movemounts() fi mkdir /root/cdrom mount -o move /cdrom /root/cdrom - umount /gpg + umount /plaintext true } diff --git a/src/initrd/grok-block b/src/initrd/grok-block index 1152584..d3fe7a2 100755 --- a/src/initrd/grok-block +++ b/src/initrd/grok-block @@ -136,14 +136,15 @@ grok_block() esac # Skip partitions that we created. - # TODO: make these names more unique + # The name 'samizdat-plaintext' is recognized and used to add the menu entry, below. + case "$DEVNAME" in + # Avoid mouting this multiple times in case this script gets called multiple times, + # because while it's mounted, the dmsetup stuff will fail with device busy. + /dev/nbd0) [ -e /bootwait/samizdat-nbd-dev ] && return ;; + esac case "$ID_PART_ENTRY_NAME" in samizdat-grub-incomplete|samizdat-plaintext-incomplete|samizdat-luks-encrypted-incomplete) return ;; - samizdat-grub|samizdat-plaintext|samizdat-luks-encrypted) - # TODO: Possibly only some of these are complete - addmenu_choose_native_root "$(parent_device "$DEVNAME")" - return - ;; + samizdat-grub|samizdat-luks-encrypted) return ;; esac if [ "$ID_FS_TYPE" = hfsplus ] && ! fsck.hfsplus -q "$DEVNAME"; then @@ -168,6 +169,13 @@ grok_block() # TODO: Need option to boot the partitions we create # TODO: And what if we create partitions and then reboot the machine mid-install? + elif [ "$ID_PART_ENTRY_NAME" = samizdat-plaintext ]; then + # TODO: First ensure we can decrypt the key + if [ -e "$mountpoint"/disk.key ]; then + addmenu_choose_native_root "$(parent_device "$DEVNAME")" + fi + umount "$mountpoint" + elif [ "$DEVNAME" = /dev/nbd0 ]; then # This is our rootfs, over the network umount "$mountpoint" diff --git a/src/initrd/menu-select b/src/initrd/menu-select index 4c921b0..8347c28 100755 --- a/src/initrd/menu-select +++ b/src/initrd/menu-select @@ -88,10 +88,11 @@ case "$1" in partition_new_hard_drive_DESTROYING_EVERYTHING "$dev" || error mkfs.btrfs -f "$dev"2 || error - mount "$dev"2 /gpg || error + mkdir /plaintext + mount "$dev"2 /plaintext || error init_gpg || error - init_samizdat_blockdev "$dev"3 /gpg/disk.key || error + init_samizdat_blockdev "$dev"3 /plaintext/disk.key || error init_samizdat /dev/mapper/samizdatcrypt '' || error mark_partitions_as_complete "$dev" @@ -100,10 +101,11 @@ case "$1" in ;; boot-native) dev="$2" - init_gpg || error - mount "$dev"2 /gpg || error - open_samizdat_blockdev "$dev"3 /gpg/disk.key || error - open_samizdat || error + init_gpg || error + mkdir /plaintext + mount "$dev"2 /plaintext || error + open_samizdat_blockdev "$dev"3 /plaintext/disk.key || error + open_samizdat || error bootdone root-mounted ;; boot-overwrite|boot-new|boot-luks) -- cgit v1.2.3