From c70db0da13bc29e3d82339f5457911c95c15a94b Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sun, 17 Jan 2021 17:16:27 -0500 Subject: partvi: try to run grub-install it appears to fail because of a bug in grub-install. grub tries to be too smart, and detects /dev/loop0 as the device underlying the /dev/mapper/ device. But this is wrong, because it's a dm-linear device, and /dev/loop0 is only one section of the device. --- src/partvi | 83 +++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 55 insertions(+), 28 deletions(-) (limited to 'src/partvi') diff --git a/src/partvi b/src/partvi index 6c65104..126900e 100755 --- a/src/partvi +++ b/src/partvi @@ -97,8 +97,8 @@ build_partition_image() esac case "$type" in - efi-system-partition) mkfs.vfat "$tmp" || die "mkfs.vfat failed" ;; - bios-grub) mkfs.vfat "$tmp" || die "mkfs.vfat failed" ;; + efi-system-partition) mkfs.fat -F 32 -I "$tmp" || die "mkfs.vfat failed" ;; + bios-grub) mkfs.fat -F 32 -I "$tmp" || die "mkfs.vfat failed" ;; samizdat-keys) mkfs.btrfs -q "$tmp" || die "mkfs.btrfs failed" ;; dm-verity-data) partuuid=${root_hash:0:32} @@ -214,7 +214,7 @@ fi map_name=samline - +quietly $sudo umount *.mnt quietly $sudo kpartx -dv /dev/mapper/"$map_name" quietly $sudo dmsetup remove "$map_name" quietly $sudo losetup -D @@ -234,47 +234,74 @@ 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 -- - i=1 - while read a b c d e - do - echo "a=$a c=$c" - [ "$a" -gt 0 ] || continue - [ "$b" -gt 2048 ] || continue - [ "$c" = linear ] || continue - - set -- "$@" -n "$i:$a:$((a + b - 1))" - let ++i - done < "$map" - $sudo sgdisk -o "$@" -p "$dev" -) -$sudo kpartx -u "$dev" + + +# exit +# +# dev=/dev/mapper/$map_name +# ( +# set -- +# i=1 +# while read a b c d e +# do +# echo "a=$a c=$c" +# [ "$a" -gt 0 ] || continue +# [ "$b" -gt 2048 ] || continue +# [ "$c" = linear ] || continue +# +# set -- "$@" -n "$i:$a:$((a + b - 1))" +# let ++i +# done < "$map" +# $sudo sgdisk -o "$@" -p "$dev" +# ) +# $sudo kpartx -u "$dev" + +$sudo kpartx -a "$dev" + +target=i386-pc +target=x86_64-efi +set -- grub-install --target=$target --removable # --boot-directory=/mnt/boot --efi-directory=/mnt for f in part*.conf do notice "Processing $f" img=${f%.conf} - + dev=/dev/mapper/$map_name${img#part} + mnt=${f%.conf}.mnt read_config_file || warn "Received error return from command: read_config_file $img" require_var name - require_var type case "$type" in - efi-system-partition|bios-grub|samizdat-*|dm-verity-data) - dev=/dev/mapper/$map_name${img#part} - mkdir -p test.mnt - loudly $sudo mount "$dev" test.mnt - $sudo umount test.mnt + efi-system-partition|bios-grub) + mkdir -p "$mnt" + loudly $sudo mount "$dev" "$mnt" + + if [ "$type" = 'bios-grub' ] + then + $sudo mkdir "$mnt"/grub + # set -- "$@" --boot-directory="$mnt" + else + set -- "$@" --efi-directory="$mnt" + fi ;; *) notice "Not mounting $name" ;; esac done +loudly ls -l /dev/mapper/ +loudly $sudo "$@" -v -s --force /dev/mapper/$map_name + +for f in part*.conf +do + mnt=${f%.conf}.mnt + if mountpoint -q "$mnt" + then + loudly $sudo umount "$mnt" + $sudo rmdir "$mnt" + fi +done quietly $sudo kpartx -dv "$dev" quietly $sudo dmsetup remove "$map_name" -- cgit v1.2.3