From ea8e80b3b4d49a18441ce08157badad7fdc120de Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sun, 17 Jan 2021 15:26:39 -0500 Subject: old changes, unreviewed --- src/partvi | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/src/partvi b/src/partvi index b9efe18..6c65104 100755 --- a/src/partvi +++ b/src/partvi @@ -124,7 +124,7 @@ iterate_partitions() notice "Processing $f" img=${f%.conf} - read_config_file "$img" || warn "Received error return from command: read_config_file $img" + read_config_file || warn "Received error return from command: read_config_file $img" require_var name require_var type @@ -141,6 +141,11 @@ iterate_partitions() done } +set_var() +{ + eval "conf_${img}_${1}=\$${1}" +} + create_dmsetup_map() { part=$builddir/${f%.conf} @@ -159,6 +164,9 @@ create_dmsetup_map() alignment_error=$((devsz % 2048)) printf '%d %d linear %s 0\n' $start $devsz "$dev" >> "$map" + + set_var start + set_var devsz start=$((start + devsz)) if [ $alignment_error -gt 0 ] @@ -169,6 +177,29 @@ create_dmsetup_map() fi } +create_ptable_conf() +{ + inquire_var start && inquire_var devsz || return 0 + [ "$start" -a "$devsz" ] || return 0 + + case "$type" in + partition-table) return;; + efi-system-partition) typecode=ef00 ;; + bios-grub) typecode=ef02 ;; + samizdat-*) typecode=8e00 ;; + dm-verity-hashes|dm-verity-data) typecode=8e00 ;; + esac + + set -- --new "$i:$start:$((start + devsz - 1))" --change-name "$i:$name" + if [ "$typecode" ] + then + set -- "$@" --typecode "$i:$typecode" + fi + + printf '%s\0' "$@" >> $ptable + let ++i +} + set -e builddir=_build @@ -188,14 +219,23 @@ quietly $sudo kpartx -dv /dev/mapper/"$map_name" quietly $sudo dmsetup remove "$map_name" quietly $sudo losetup -D -start=0 map=$builddir/dmsetup.map : > "$map" - +start=0 iterate_partitions create_dmsetup_map - $sudo dmsetup -v create "$map_name" "$map" +ptable=$builddir/ptable.bin +: > "$ptable" +i=1 +iterate_partitions create_ptable_conf +dev=/dev/mapper/$map_name +printf '%s\0' '-h1' '-p' "$dev" >> "$ptable" +xargs -0 -x $sudo sgdisk -o < "$ptable" >&2 +$sudo sfdisk --dump "$dev" +$sudo sfdisk -Y MBR --dump "$dev" +exit + dev=/dev/mapper/$map_name ( set -- -- cgit v1.2.3