diff options
Diffstat (limited to 'src/parted-usb.sh')
-rwxr-xr-x | src/parted-usb.sh | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/parted-usb.sh b/src/parted-usb.sh index bb63070..e688473 100755 --- a/src/parted-usb.sh +++ b/src/parted-usb.sh | |||
@@ -16,17 +16,29 @@ MiB() | |||
16 | initialize_target() | 16 | initialize_target() |
17 | { | 17 | { |
18 | rm -f "$target" | 18 | rm -f "$target" |
19 | fallocate -l $(($(KiB 17) + $(MiB $end_keys))) "$target" | 19 | if [ "$ROOTFS" ] |
20 | then | ||
21 | fallocate -l $(($(KiB 17) + $(MiB $end_keys) + $(MiB $rootfs_size))) "$target" | ||
22 | else | ||
23 | fallocate -l $(($(KiB 17) + $(MiB $end_keys))) "$target" | ||
24 | fi | ||
20 | } | 25 | } |
21 | 26 | ||
27 | # TODO: Use GUID type tags for each Samizdat partition type. | ||
22 | partition_target() | 28 | partition_target() |
23 | { | 29 | { |
24 | parted "$target" -sm -a optimal \ | 30 | parted "$target" -sm -a optimal \ |
25 | unit B \ | 31 | unit MiB \ |
26 | mklabel gpt \ | 32 | mklabel gpt \ |
27 | mkpart samizdat-grub 1MiB 8MiB \ | 33 | mkpart samizdat-grub 1 8 \ |
28 | set 1 bios_grub on \ | 34 | set 1 bios_grub on \ |
29 | mkpart samizdat-plaintext btrfs ${start_keys}MiB ${end_keys}MiB | 35 | mkpart samizdat-keys btrfs ${start_keys} ${end_keys} |
36 | |||
37 | if [ "$ROOTFS" ] | ||
38 | then | ||
39 | parted "$target" -sm -a optimal \ | ||
40 | mkpart samizdat-rootfs btrfs ${end_keys}MiB 100% | ||
41 | fi | ||
30 | } | 42 | } |
31 | 43 | ||
32 | make_target_bootable() | 44 | make_target_bootable() |
@@ -74,12 +86,13 @@ with_target() | |||
74 | 86 | ||
75 | add_keys() | 87 | add_keys() |
76 | { | 88 | { |
77 | rsync -a --info=STATS "$GPG_INPUT_DIR"/ "$mnt"/gnupghome/ | 89 | rsync -a --info=STATS "$GPG_INPUT_DIR"/ "$mnt"/gnupghome/ |
78 | } | 90 | } |
79 | 91 | ||
92 | initrd_suffix=.samizdat | ||
80 | add_initrd() | 93 | add_initrd() |
81 | { | 94 | { |
82 | rsync -aL --info=STATS "$samizdat_linux_dir"/vmlinuz${version} "$samizdat_linux_dir"/initrd.img${version} "$mnt"/linux/ | 95 | rsync -aL --info=STATS "${1}vmlinuz${2}" "${1}initrd.img${2}${initrd_suffix}" "$mnt"/linux/ |
83 | } | 96 | } |
84 | 97 | ||
85 | add_grub_cfg() | 98 | add_grub_cfg() |
@@ -91,7 +104,7 @@ add_grub_cfg() | |||
91 | add_all() | 104 | add_all() |
92 | { | 105 | { |
93 | add_keys | 106 | add_keys |
94 | add_initrd | 107 | add_initrd "$samizdat_linux_dir"/ "${version_suffix}" |
95 | add_grub_cfg | 108 | add_grub_cfg |
96 | } | 109 | } |
97 | 110 | ||
@@ -128,7 +141,7 @@ fi | |||
128 | 141 | ||
129 | if [ "$1" ] | 142 | if [ "$1" ] |
130 | then | 143 | then |
131 | version=-$1 | 144 | version_suffix=-$1 |
132 | fi | 145 | fi |
133 | cp --reflink=always "$target" "$target".keyed | 146 | cp --reflink=always "$target" "$target".keyed |
134 | with_target "$target".keyed add_all | 147 | with_target "$target".keyed add_all |