summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2020-10-09 22:09:33 -0400
committerAndrew Cady <d@jerkface.net>2020-10-09 22:09:33 -0400
commit334c9ea453567fcde5c0d046f03e38e040408e80 (patch)
treecf49eebf04bd5172313e8375772ffc41af565fbb
parent9078d3ec63f51d85c501e49f46bcf980c7c4da64 (diff)
parted-usb.sh
-rwxr-xr-xsrc/parted-usb.sh96
1 files changed, 96 insertions, 0 deletions
diff --git a/src/parted-usb.sh b/src/parted-usb.sh
new file mode 100755
index 0000000..b19389d
--- /dev/null
+++ b/src/parted-usb.sh
@@ -0,0 +1,96 @@
1#!/bin/bash
2die()
3{
4 printf 'Error: %s\n' "$*" >&2
5 exit 1
6}
7KiB()
8{
9 printf %s $(("$1" * 1024))
10}
11MiB()
12{
13 KiB $(KiB "$1")
14}
15
16. samizdat-paths.sh || die 'samizdat-paths.sh not found'
17: ${GPG_INPUT_DIR:=/cdrom/gnupghome}
18
19if [[ $UID != 0 ]]
20then
21 exit 1
22fi
23
24for d in "$samizdat_linux_dir" "$GPG_INPUT_DIR"
25do
26 if ! test -d "$d"
27 then
28 exit 1
29 fi
30done
31
32end_keys=256 # megs
33
34target=fallacy.img.tmp
35
36initialize_target()
37{
38 rm -f "$target"
39 fallocate -l $(($(KiB 17) + $(MiB $end_keys))) "$target"
40}
41
42partition_target()
43{
44 parted "$target" -sm -a optimal \
45 unit B \
46 mklabel gpt \
47 mkpart samizdat-grub 1MiB 8MiB \
48 set 1 bios_grub on \
49 mkpart samizdat-keys btrfs 64MiB ${end_keys}MiB
50}
51
52make_target_bootable()
53{
54 losetup -f "$target"
55 dev=$(losetup -j "$target" -O NAME --noheadings)
56
57 kpartx -vasas "$dev"
58 kdev=/dev/mapper/${dev##*/}
59
60 mnt=$target.mnt
61
62 mkfs.btrfs --mixed "$kdev"p2
63 mkdir -p "$mnt"
64 mount "$kdev"p2 "$mnt"
65 rsync -a --info=STATS "$GPG_INPUT_DIR"/ "$mnt"/gnupghome/
66 rsync -a --info=STATS "$samizdat_linux_dir"/ "$mnt"/linux/
67
68 boot_dir=$mnt/boot
69 mkdir -p "$boot_dir"/grub
70 cp -a grub.cfg "$boot_dir"/grub
71
72 # grub-install -v -d "$samizdat_grub_efi_dir"/grub/i386-pc --boot-directory "$mnt"/boot "$dev"
73 grub-install -v --boot-directory "$boot_dir" "$dev"
74}
75
76release_target()
77{
78 umount "$mnt"
79 kpartx -d "$dev"
80 losetup -d "$dev"
81}
82
83set -e
84
85if [ ! -e "$target" ]
86then
87 initialize_target
88 partition_target
89 make_target_bootable
90 release_target
91fi
92
93qemu-system-x86_64 -enable-kvm -drive file="$target",format=raw
94
95# rm -f "$target"
96