From 364f92b8dbe973fb0e172be53ffea792184bafb5 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Tue, 17 Nov 2020 16:06:32 -0500 Subject: partvi: create the dm map --- src/partvi | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'src/partvi') diff --git a/src/partvi b/src/partvi index 57a3dba..322b5ba 100755 --- a/src/partvi +++ b/src/partvi @@ -79,6 +79,7 @@ do case "$type" in efi-system-partition|bios-grub|samizdat-*) ;; dm-verity-hashes|dm-verity-data) require_var data_path ;; + partition-table) ;; *) die "invalid type: $type" ;; esac @@ -129,9 +130,48 @@ do cp -f -T --reflink "$data_path".verity "$builddir"/"$partuuid" ln -sfT "$partuuid" "$tmp" ;; - *) die "Unrecognized type: $type" ;; esac mv -T "$tmp" "$imgfile" notice "Successfully wrote $imgfile" fi done + +if [ "$UID" = 0 ] +then sudo= +else sudo=sudo +fi + +map_name=samline + +quietly() +{ + "$@" >/dev/null 2>&1 || true +} + +quietly $sudo dmsetup remove "$map_name" +quietly $sudo losetup -D + +start=0 +map=$builddir/dmsetup.map +: > "$map" + +for f in part*.conf +do + part=$builddir/${f%.conf} + if [ -h "$part" ] + then + partuuid=$(readlink -e "$part") + else + partuuid= + fi + #stat -L --format="$part %s" "$part" + $sudo losetup -L -f "$part" + dev=$(losetup -j "$part" -O NAME --noheadings) + devsz=$($sudo blockdev --getsz $dev) + printf '%d %d linear %s 0\n' $start $devsz "$dev" >> "$map" + start=$((start + devsz)) + +done +$sudo dmsetup -v create "$map_name" "$map" +$sudo dmsetup remove "$map_name" + -- cgit v1.2.3