From f6e4c392a2709420434a987b288d9ea90e9b5542 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sun, 11 Oct 2020 01:38:17 -0400 Subject: Installed and successfully ran btrfs dev rem. Ran it in the VM with the command: make install; sudo ./src/mkinitramfs-samizdat ; sudo bash ./src/parted-usb.sh Didn't use the .patch.btrfs here yet. --- src/initrd/btrfs-create.sh | 61 ++++++++++++++++++++++------------------------ src/initrd/grok-block | 4 +++ src/parted-usb.sh | 11 ++++++++- 3 files changed, 43 insertions(+), 33 deletions(-) diff --git a/src/initrd/btrfs-create.sh b/src/initrd/btrfs-create.sh index 9604340..c3cfcbb 100644 --- a/src/initrd/btrfs-create.sh +++ b/src/initrd/btrfs-create.sh @@ -71,13 +71,15 @@ losetup_layers() done elif [ -e /dev/disk/by-partlabel/samizdat-rootfs ] then - local dev - for dev in samizdat-rootfs - do - umount /dev/disk/by-partlabel/$dev - dd if=/dev/zero of=/$dev.rw bs=1M count=10 - dm_snapshot /dev/disk/by-partlabel/$dev /$dev.rw - done + # TODO: prevent raciness + umount /dev/disk/by-partlabel/samizdat-rootfs + if [ -e /dev/disk/by-partlabel/samizdat-patchfs ] + then + umount /dev/disk/by-partlabel/samizdat-patchfs + mountdev=/dev/disk/by-partlabel/samizdat-patchfs + else + mountdev=/dev/disk/by-partlabel/samizdat-rootfs + fi else bootwait samizdat-nbd-dev local dev @@ -93,20 +95,24 @@ init_samizdat() { local blockdev="$1" imgfile="$2" uuid - losetup_layers || return - modprobe btrfs || return - btrfs device scan || return + losetup_layers || return + modprobe btrfs || return + btrfs device scan || return - uuid=$(choose_uuid) || return - [ "$uuid" ] || return - - mount -t btrfs UUID="$uuid" /root || return + if [ "$mountdev" ] + then + mount -t btrfs "$mountdev" /root || return + else + uuid=$(choose_uuid) || return + [ "$uuid" ] || return + mount -t btrfs UUID="$uuid" /root || return + fi - btrfs device add "$blockdev" /root || return - mount -o rw,remount /root || return - samizdat_movemounts "$imgfile" || return + btrfs device add "$blockdev" /root || return + mount -o rw,remount /root || return + samizdat_movemounts "$imgfile" || return - initialize_root_filesystem || return + initialize_root_filesystem || return } movemounts() @@ -248,24 +254,15 @@ filesystem_incomplete() partition_new_hard_drive_DESTROYING_EVERYTHING() { - # TODO: get the actual size of the btrfs master and actually triple it. The empty - # space can be left available to allow the local machine to boot a - # locally-regenerated rootfs seed. - sz=3 - u=GiB - actual_sz=$sz$u - tripled_sz=$((sz * 3))$u - pct=100% # TODO: use 50% - - local target="$1" sz=6GiB + local target="$1" sz=2910 # [ "$(parted -sm "$target" print | grep -c :)" = 1 ] || return parted "$target" -sm \ - unit B \ + unit MiB \ mklabel gpt \ - mkpart samizdat-grub-incomplete 32KiB 8MiB \ + mkpart samizdat-grub-incomplete 1 8 \ set 1 bios_grub on \ - mkpart samizdat-plaintext-incomplete btrfs 64MiB $actual_sz \ - mkpart samizdat-luks-encrypted-incomplete $tripled_sz $pct \ + mkpart samizdat-plaintext-incomplete btrfs 64 $((sz + 64)) \ + mkpart samizdat-luks-encrypted-incomplete $((sz + 64)) 100% \ && udevadm settle } diff --git a/src/initrd/grok-block b/src/initrd/grok-block index 0b5f3f9..f925061 100755 --- a/src/initrd/grok-block +++ b/src/initrd/grok-block @@ -186,6 +186,7 @@ grok_block() return ;; samizdat-keys) ;; + samizdat-rootfs) ;; samizdat-grub) return ;; samizdat-luks-encrypted) menu-select boot-native "$(parent_device "$DEVNAME")" @@ -219,6 +220,9 @@ 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-rootfs ]; then + : + elif [ "$ID_PART_ENTRY_NAME" = samizdat-keys ]; then mkdir -p /gpg cp -a "$mountpoint"/gnupghome /gpg/ && bootdone samizdat-gpg && bootdone samizdat-cdrom diff --git a/src/parted-usb.sh b/src/parted-usb.sh index 50fcb78..0f62019 100755 --- a/src/parted-usb.sh +++ b/src/parted-usb.sh @@ -199,7 +199,8 @@ boot_vm() -smp 2 \ -m 512 \ -k en-us \ - -net nic,model=virtio,macaddr=$MAC \ + -net nic,model=virtio,macaddr="$MAC" \ + -net tap,ifname=tap0,script=no,downscript=no \ -vga qxl \ -drive file="$boot_drive",format=raw \ -drive file="$installer_target",format=raw @@ -207,6 +208,14 @@ boot_vm() . samizdat-paths.sh || die 'samizdat-paths.sh not found' samizdat_linux_dir=/boot + + + +ROOTFS=rootfs/samizdat.seed.btrfs +PATCHFS=rootfs/samizdat.patch.btrfs +GPG_INPUT_DIR=/root/.gnupg + + : ${GPG_INPUT_DIR:=/cdrom/gnupghome} : ${GRUB_CONFIG:=conf/grub.cfg} start_keys=64 # megs -- cgit v1.2.3