summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@cryptonomic.net>2021-01-17 17:16:27 -0500
committerAndrew Cady <d@cryptonomic.net>2021-01-17 17:16:27 -0500
commitc70db0da13bc29e3d82339f5457911c95c15a94b (patch)
tree7227932aa23a9334cc9afab50c368a46ae1409c9
parentea8e80b3b4d49a18441ce08157badad7fdc120de (diff)
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.
-rwxr-xr-xsrc/partvi83
1 files changed, 55 insertions, 28 deletions
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()
97 esac 97 esac
98 98
99 case "$type" in 99 case "$type" in
100 efi-system-partition) mkfs.vfat "$tmp" || die "mkfs.vfat failed" ;; 100 efi-system-partition) mkfs.fat -F 32 -I "$tmp" || die "mkfs.vfat failed" ;;
101 bios-grub) mkfs.vfat "$tmp" || die "mkfs.vfat failed" ;; 101 bios-grub) mkfs.fat -F 32 -I "$tmp" || die "mkfs.vfat failed" ;;
102 samizdat-keys) mkfs.btrfs -q "$tmp" || die "mkfs.btrfs failed" ;; 102 samizdat-keys) mkfs.btrfs -q "$tmp" || die "mkfs.btrfs failed" ;;
103 dm-verity-data) 103 dm-verity-data)
104 partuuid=${root_hash:0:32} 104 partuuid=${root_hash:0:32}
@@ -214,7 +214,7 @@ fi
214 214
215map_name=samline 215map_name=samline
216 216
217 217quietly $sudo umount *.mnt
218quietly $sudo kpartx -dv /dev/mapper/"$map_name" 218quietly $sudo kpartx -dv /dev/mapper/"$map_name"
219quietly $sudo dmsetup remove "$map_name" 219quietly $sudo dmsetup remove "$map_name"
220quietly $sudo losetup -D 220quietly $sudo losetup -D
@@ -234,47 +234,74 @@ printf '%s\0' '-h1' '-p' "$dev" >> "$ptable"
234xargs -0 -x $sudo sgdisk -o < "$ptable" >&2 234xargs -0 -x $sudo sgdisk -o < "$ptable" >&2
235$sudo sfdisk --dump "$dev" 235$sudo sfdisk --dump "$dev"
236$sudo sfdisk -Y MBR --dump "$dev" 236$sudo sfdisk -Y MBR --dump "$dev"
237exit
238 237
239dev=/dev/mapper/$map_name 238
240( 239
241 set -- 240# exit
242 i=1 241#
243 while read a b c d e 242# dev=/dev/mapper/$map_name
244 do 243# (
245 echo "a=$a c=$c" 244# set --
246 [ "$a" -gt 0 ] || continue 245# i=1
247 [ "$b" -gt 2048 ] || continue 246# while read a b c d e
248 [ "$c" = linear ] || continue 247# do
249 248# echo "a=$a c=$c"
250 set -- "$@" -n "$i:$a:$((a + b - 1))" 249# [ "$a" -gt 0 ] || continue
251 let ++i 250# [ "$b" -gt 2048 ] || continue
252 done < "$map" 251# [ "$c" = linear ] || continue
253 $sudo sgdisk -o "$@" -p "$dev" 252#
254) 253# set -- "$@" -n "$i:$a:$((a + b - 1))"
255$sudo kpartx -u "$dev" 254# let ++i
255# done < "$map"
256# $sudo sgdisk -o "$@" -p "$dev"
257# )
258# $sudo kpartx -u "$dev"
259
260$sudo kpartx -a "$dev"
261
262target=i386-pc
263target=x86_64-efi
264set -- grub-install --target=$target --removable # --boot-directory=/mnt/boot --efi-directory=/mnt
256 265
257for f in part*.conf 266for f in part*.conf
258do 267do
259 notice "Processing $f" 268 notice "Processing $f"
260 img=${f%.conf} 269 img=${f%.conf}
261 270 dev=/dev/mapper/$map_name${img#part}
271 mnt=${f%.conf}.mnt
262 272
263 read_config_file || warn "Received error return from command: read_config_file $img" 273 read_config_file || warn "Received error return from command: read_config_file $img"
264 require_var name 274 require_var name
265
266 require_var type 275 require_var type
267 case "$type" in 276 case "$type" in
268 efi-system-partition|bios-grub|samizdat-*|dm-verity-data) 277 efi-system-partition|bios-grub)
269 dev=/dev/mapper/$map_name${img#part} 278 mkdir -p "$mnt"
270 mkdir -p test.mnt 279 loudly $sudo mount "$dev" "$mnt"
271 loudly $sudo mount "$dev" test.mnt 280
272 $sudo umount test.mnt 281 if [ "$type" = 'bios-grub' ]
282 then
283 $sudo mkdir "$mnt"/grub
284 # set -- "$@" --boot-directory="$mnt"
285 else
286 set -- "$@" --efi-directory="$mnt"
287 fi
273 ;; 288 ;;
274 *) notice "Not mounting $name" ;; 289 *) notice "Not mounting $name" ;;
275 esac 290 esac
276done 291done
277 292
293loudly ls -l /dev/mapper/
294loudly $sudo "$@" -v -s --force /dev/mapper/$map_name
295
296for f in part*.conf
297do
298 mnt=${f%.conf}.mnt
299 if mountpoint -q "$mnt"
300 then
301 loudly $sudo umount "$mnt"
302 $sudo rmdir "$mnt"
303 fi
304done
278 305
279quietly $sudo kpartx -dv "$dev" 306quietly $sudo kpartx -dv "$dev"
280quietly $sudo dmsetup remove "$map_name" 307quietly $sudo dmsetup remove "$map_name"