diff options
author | Andrew Cady <d@cryptonomic.net> | 2021-01-17 17:16:27 -0500 |
---|---|---|
committer | Andrew Cady <d@cryptonomic.net> | 2021-01-17 17:16:27 -0500 |
commit | c70db0da13bc29e3d82339f5457911c95c15a94b (patch) | |
tree | 7227932aa23a9334cc9afab50c368a46ae1409c9 | |
parent | ea8e80b3b4d49a18441ce08157badad7fdc120de (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-x | src/partvi | 83 |
1 files changed, 55 insertions, 28 deletions
@@ -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 | ||
215 | map_name=samline | 215 | map_name=samline |
216 | 216 | ||
217 | 217 | quietly $sudo umount *.mnt | |
218 | quietly $sudo kpartx -dv /dev/mapper/"$map_name" | 218 | quietly $sudo kpartx -dv /dev/mapper/"$map_name" |
219 | quietly $sudo dmsetup remove "$map_name" | 219 | quietly $sudo dmsetup remove "$map_name" |
220 | quietly $sudo losetup -D | 220 | quietly $sudo losetup -D |
@@ -234,47 +234,74 @@ printf '%s\0' '-h1' '-p' "$dev" >> "$ptable" | |||
234 | xargs -0 -x $sudo sgdisk -o < "$ptable" >&2 | 234 | xargs -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" |
237 | exit | ||
238 | 237 | ||
239 | dev=/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 | |||
262 | target=i386-pc | ||
263 | target=x86_64-efi | ||
264 | set -- grub-install --target=$target --removable # --boot-directory=/mnt/boot --efi-directory=/mnt | ||
256 | 265 | ||
257 | for f in part*.conf | 266 | for f in part*.conf |
258 | do | 267 | do |
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 |
276 | done | 291 | done |
277 | 292 | ||
293 | loudly ls -l /dev/mapper/ | ||
294 | loudly $sudo "$@" -v -s --force /dev/mapper/$map_name | ||
295 | |||
296 | for f in part*.conf | ||
297 | do | ||
298 | mnt=${f%.conf}.mnt | ||
299 | if mountpoint -q "$mnt" | ||
300 | then | ||
301 | loudly $sudo umount "$mnt" | ||
302 | $sudo rmdir "$mnt" | ||
303 | fi | ||
304 | done | ||
278 | 305 | ||
279 | quietly $sudo kpartx -dv "$dev" | 306 | quietly $sudo kpartx -dv "$dev" |
280 | quietly $sudo dmsetup remove "$map_name" | 307 | quietly $sudo dmsetup remove "$map_name" |