From c778405a46b2b45388282a0b12fceb14c0399db1 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sun, 11 Oct 2020 00:36:09 -0400 Subject: it boots to ram --- src/initrd/btrfs-create.sh | 16 +++++++++++++--- src/parted-usb.sh | 17 ++++++++++++++++- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/initrd/btrfs-create.sh b/src/initrd/btrfs-create.sh index cdf73ef..9604340 100644 --- a/src/initrd/btrfs-create.sh +++ b/src/initrd/btrfs-create.sh @@ -58,7 +58,8 @@ cdrom_has_rootfs() losetup_layers() { - if cdrom_has_rootfs; then + if cdrom_has_rootfs + then # TODO: This is some kind of shortcut or short circuit to find these # files, that ought to be found through the grok-block system (i.e., # event-driven rather than polling). @@ -68,14 +69,23 @@ losetup_layers() dd if=/dev/zero of="$fs_rw" bs=1M count=10 losetup_snapshot "$fs" "$fs_rw" || return 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 else bootwait samizdat-nbd-dev local dev - for dev in nbd0 nbd1; do + for dev in nbd0 nbd1 + do dd if=/dev/zero of=/$dev.rw bs=1M count=10 dm_snapshot /dev/$dev /$dev.rw done - return fi } diff --git a/src/parted-usb.sh b/src/parted-usb.sh index 730dc26..50fcb78 100755 --- a/src/parted-usb.sh +++ b/src/parted-usb.sh @@ -34,7 +34,7 @@ initialize_target() if [ "$ROOTFS" ] then get_rootfs_size - fallocate -l $(($(KiB 17) + $(MiB $end_keys) + rootfs_size)) "$target" + fallocate -l $(($(KiB 17) + $(MiB $end_keys) + rootfs_size + $(KiB 640))) "$target" else fallocate -l $(($(KiB 17) + $(MiB $end_keys))) "$target" fi @@ -74,6 +74,20 @@ make_target_bootable() sync } +copy_rootfs() +{ + if [ -z "$ROOTFS" ] + then + return + fi + [ -e "$ROOTFS" -a -b "$part"3 ] + get_rootfs_size + part_size=$(blockdev --getsize64 "$part"3) + [ "$rootfs_size" -le "$part_size" ] || die "rootfs_size=$rootfs_size > part_size=$part_size" + + dd if="$ROOTFS" of="$part"3 +} + acquire_target_block_devices() { if [ -b "$target" ] @@ -143,6 +157,7 @@ globalize() partition_target acquire_target_block_devices make_target_bootable + copy_rootfs } sanity_checks() -- cgit v1.2.3