diff options
author | Andrew Cady <d@jerkface.net> | 2021-02-27 11:04:02 -0500 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2021-02-27 11:04:02 -0500 |
commit | 963ffcbcecfddbcf950fc96da5a8c7e4d0bea3b7 (patch) | |
tree | 260b497ea0a6be0187b5d6315112bf15afccfbe3 | |
parent | 3b4d7432fac47ccb89fdd65e851f84985c415ff2 (diff) |
partvi: move all functions to top
-rwxr-xr-x | src/partvi | 104 |
1 files changed, 62 insertions, 42 deletions
@@ -1,11 +1,4 @@ | |||
1 | #!/bin/bash | 1 | #!/bin/bash |
2 | shopt -s nullglob | ||
3 | PATH=/sbin:$PATH | ||
4 | |||
5 | : ${GRUB_CONFIG:=../conf/grub.cfg} | ||
6 | samizdat_linux_dir=/ | ||
7 | |||
8 | |||
9 | 2 | ||
10 | add_initrd() | 3 | add_initrd() |
11 | { | 4 | { |
@@ -282,6 +275,47 @@ cleanup() | |||
282 | fi | 275 | fi |
283 | } | 276 | } |
284 | 277 | ||
278 | copy_data_to_mounted_target_filesystems() | ||
279 | { | ||
280 | case "$type" in | ||
281 | efi-system-partition|boot|samizdat-keys) ;; | ||
282 | dm-verity-hashes|partition-table|bios-grub) return ;; | ||
283 | *) notice "Not mounting $name"; return ;; | ||
284 | esac | ||
285 | |||
286 | img=${f%.conf} | ||
287 | dev=/dev/mapper/${whole#/dev/}p${img#part} | ||
288 | mnt=${f%.conf}.mnt | ||
289 | |||
290 | mkdir -p "$mnt" | ||
291 | loudly $sudo mount "$dev" "$mnt" | ||
292 | |||
293 | case "$type" in | ||
294 | boot) | ||
295 | BOOT_DIR=$mnt | ||
296 | install_boot_dir "$mnt" | ||
297 | ;; | ||
298 | samizdat-keys) | ||
299 | $sudo rsync -a --info=STATS "$GPG_INPUT_DIR"/ "$mnt"/gnupghome/ | ||
300 | ;; | ||
301 | efi-system-partition) | ||
302 | EFI_DIR=$mnt | ||
303 | ;; | ||
304 | esac | ||
305 | } | ||
306 | |||
307 | shopt -s nullglob | ||
308 | PATH=/sbin:$PATH | ||
309 | |||
310 | : ${GRUB_CONFIG:=../conf/grub.cfg} | ||
311 | samizdat_linux_dir=/ | ||
312 | builddir=_build | ||
313 | |||
314 | if [ "$UID" = 0 ] | ||
315 | then sudo= | ||
316 | else sudo=sudo | ||
317 | fi | ||
318 | |||
285 | if [ "$GPG_INPUT_DIR" ] | 319 | if [ "$GPG_INPUT_DIR" ] |
286 | then | 320 | then |
287 | $sudo [ -d "$GPG_INPUT_DIR" ] | 321 | $sudo [ -d "$GPG_INPUT_DIR" ] |
@@ -293,6 +327,7 @@ else | |||
293 | break | 327 | break |
294 | done | 328 | done |
295 | fi | 329 | fi |
330 | |||
296 | SKIP_ROOTFS_COPY= | 331 | SKIP_ROOTFS_COPY= |
297 | if [ "$1" = 'key' ] | 332 | if [ "$1" = 'key' ] |
298 | then | 333 | then |
@@ -301,14 +336,8 @@ fi | |||
301 | 336 | ||
302 | set -e | 337 | set -e |
303 | 338 | ||
304 | builddir=_build | ||
305 | mkdir -p "$builddir" | 339 | mkdir -p "$builddir" |
306 | 340 | ||
307 | if [ "$UID" = 0 ] | ||
308 | then sudo= | ||
309 | else sudo=sudo | ||
310 | fi | ||
311 | |||
312 | if [ "$SKIP_ROOTFS_COPY" ] | 341 | if [ "$SKIP_ROOTFS_COPY" ] |
313 | then | 342 | then |
314 | target=key.img | 343 | target=key.img |
@@ -316,7 +345,11 @@ else | |||
316 | target=whole.img | 345 | target=whole.img |
317 | fi | 346 | fi |
318 | 347 | ||
319 | iterate_partitions build_partition_image | 348 | |
349 | |||
350 | |||
351 | |||
352 | |||
320 | 353 | ||
321 | if whole=$(losetup -j "$target" -O NAME --noheadings) | 354 | if whole=$(losetup -j "$target" -O NAME --noheadings) |
322 | then | 355 | then |
@@ -324,43 +357,30 @@ then | |||
324 | whole= | 357 | whole= |
325 | fi | 358 | fi |
326 | truncate -s0 "$target" | 359 | truncate -s0 "$target" |
327 | iterate_partitions clone_parts_to_target | 360 | iterate_partitions build_partition_image |
361 | |||
362 | |||
328 | 363 | ||
364 | |||
365 | iterate_partitions clone_parts_to_target | ||
329 | $sudo losetup -L -f "$target" | 366 | $sudo losetup -L -f "$target" |
330 | whole=$(losetup -j "$target" -O NAME --noheadings) | 367 | whole=$(losetup -j "$target" -O NAME --noheadings) |
368 | |||
369 | |||
370 | |||
371 | |||
372 | |||
373 | |||
374 | |||
331 | pee_on_table "$whole" | 375 | pee_on_table "$whole" |
332 | $sudo kpartx -su "$whole" | ||
333 | 376 | ||
334 | trap cleanup EXIT | ||
335 | 377 | ||
336 | copy_data_to_mounted_target_filesystems() | ||
337 | { | ||
338 | case "$type" in | ||
339 | efi-system-partition|boot|samizdat-keys) ;; | ||
340 | dm-verity-hashes|partition-table|bios-grub) return ;; | ||
341 | *) notice "Not mounting $name"; return ;; | ||
342 | esac | ||
343 | 378 | ||
344 | img=${f%.conf} | ||
345 | dev=/dev/mapper/${whole#/dev/}p${img#part} | ||
346 | mnt=${f%.conf}.mnt | ||
347 | 379 | ||
348 | mkdir -p "$mnt" | ||
349 | loudly $sudo mount "$dev" "$mnt" | ||
350 | 380 | ||
351 | case "$type" in | 381 | trap cleanup EXIT |
352 | boot) | 382 | $sudo kpartx -su "$whole" |
353 | BOOT_DIR=$mnt | 383 | |
354 | install_boot_dir "$mnt" | ||
355 | ;; | ||
356 | samizdat-keys) | ||
357 | $sudo rsync -a --info=STATS "$GPG_INPUT_DIR"/ "$mnt"/gnupghome/ | ||
358 | ;; | ||
359 | efi-system-partition) | ||
360 | EFI_DIR=$mnt | ||
361 | ;; | ||
362 | esac | ||
363 | } | ||
364 | iterate_partitions copy_data_to_mounted_target_filesystems | 384 | iterate_partitions copy_data_to_mounted_target_filesystems |
365 | 385 | ||
366 | loudly $sudo eatmydata -- grub-install --target=i386-pc --recheck --boot-directory="$BOOT_DIR" "$whole" | 386 | loudly $sudo eatmydata -- grub-install --target=i386-pc --recheck --boot-directory="$BOOT_DIR" "$whole" |