From c08551a63baa3cab98a6172cb819f7b8b62ba0d0 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Tue, 23 Feb 2021 22:05:53 -0500 Subject: key-only mode for partvi; integrated partvi These commands are available in sami: make upgrade make emu make key They use partvi. --- Makefile | 9 ++++----- partitions/Makefile | 12 ++++++++++-- src/partvi | 13 ++++++++++++- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 1cd71a1..9892c7f 100644 --- a/Makefile +++ b/Makefile @@ -167,11 +167,10 @@ FORCE: $(btrfs_images): FORCE $(MAKE) -C rootfs $(notdir $@) -.PHONY: usb key -usb: rootfs - sudo ROOTFS=rootfs/$(rootfs) ./src/parted-usb.sh USB -key: - sudo ROOTFS=none ./src/parted-usb.sh USB +.PHONY: usb key emu +usb emu: rootfs +usb key emu: + make -C partitions $@ boot: rootfs sudo ./src/mkinitramfs-samizdat diff --git a/partitions/Makefile b/partitions/Makefile index cf8ac28..a1a7fea 100644 --- a/partitions/Makefile +++ b/partitions/Makefile @@ -6,12 +6,20 @@ all: whole.img whole.img: partvi -.PHONY: usb emu +key.img: + partvi key + +.PHONY: usb emu key usb: whole.img - usb=$$(usb) && dd status=progress if="$<" of="$$usb" + usb=$$(usb) && sudo dd status=progress if="$<" of="$$usb" emu: whole.img qemu-system-x86_64 -m 800 -enable-kvm -boot c "$<" +key: key.img + usb=$$(usb) && \ + sudo dd status=progress bs=1048576 if="$<" of="$$usb" && \ + sudo qemu-system-x86_64 -m 800 -enable-kvm -boot c "$$usb" + clean: rm -rf _build whole.img diff --git a/src/partvi b/src/partvi index e35169e..ddf4e45 100755 --- a/src/partvi +++ b/src/partvi @@ -207,6 +207,7 @@ create_ptable_conf() partition-table) start=$((start + devsz)); return;; efi-system-partition) typecode=C12A7328-F81F-11D2-BA4B-00A0C93EC93B ;; dm-verity-data|dm-verity-hashes) + check_for_key_only_skip || return 0 case "$name" in samizdat-rootfs|samizdat-root-patch) typecode=4f68bce3-e8cd-4db1-96e7-fbcaf984b709 ;; samizdat-root-patch-verity) typecode=2c7357ed-ebd2-46d9-aec1-23d437ec2bf5 ;; @@ -319,10 +320,20 @@ pee_on_table() $sudo sfdisk -Y dos "$dev" < "$DOS_TABLE_FILE" || return } +check_for_key_only_skip() +{ + [ "$KEY_ONLY" ] || return 0 + case "$type" in + dm-verity-data|dm-verity-hashes) false ;; + *) true ;; + esac +} clone_parts_to_target() { - f=$(readlink -e _build/"${f%.conf}") || break + + check_for_key_only_skip || return 0 + f=$(readlink -e _build/"${f%.conf}") || return ficlonerange.py "$f" "$target" } -- cgit v1.2.3