diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/parted-usb.sh | 58 |
1 files changed, 48 insertions, 10 deletions
diff --git a/src/parted-usb.sh b/src/parted-usb.sh index 3bf95be..05b776c 100755 --- a/src/parted-usb.sh +++ b/src/parted-usb.sh | |||
@@ -1,4 +1,5 @@ | |||
1 | #!/bin/bash | 1 | #!/bin/bash |
2 | USE_EFI= | ||
2 | die() | 3 | die() |
3 | { | 4 | { |
4 | printf 'Error: %s\n' "$*" >&2 | 5 | printf 'Error: %s\n' "$*" >&2 |
@@ -51,8 +52,10 @@ partition_target() | |||
51 | parted "$target" -sm -a optimal \ | 52 | parted "$target" -sm -a optimal \ |
52 | unit MiB \ | 53 | unit MiB \ |
53 | mklabel gpt \ | 54 | mklabel gpt \ |
54 | mkpart samizdat-grub 1 8 \ | 55 | mkpart samizdat-efi 1 8 \ |
55 | set 1 bios_grub on \ | 56 | set 1 esp on \ |
57 | mkpart samizdat-grub 8 64 \ | ||
58 | set 2 bios_grub on \ | ||
56 | mkpart samizdat-keys btrfs ${start_keys} ${end_keys} | 59 | mkpart samizdat-keys btrfs ${start_keys} ${end_keys} |
57 | if [ -b "$target" ] | 60 | if [ -b "$target" ] |
58 | then | 61 | then |
@@ -76,23 +79,57 @@ sex() | |||
76 | 79 | ||
77 | make_target_bootable() | 80 | make_target_bootable() |
78 | { | 81 | { |
79 | mkfs.btrfs -f --mixed "$part"2 | 82 | mkfs.btrfs -f --mixed "$part"3 |
80 | mkdir -p "$mnt" | 83 | mkdir -p "$mnt" |
81 | mount "$part"2 "$mnt" | 84 | mount "$part"3 "$mnt" |
82 | 85 | ||
83 | mkdir -p "$mnt"/boot/grub | 86 | mkdir -p "$mnt"/boot/grub |
84 | cp -avL "$GRUB_CONFIG" "$mnt"/boot/grub | 87 | cp -avL "$GRUB_CONFIG" "$mnt"/boot/grub |
85 | 88 | ||
89 | mkdir -p "$mnt"/boot/efi | ||
90 | mkfs.vfat "$part"1 | ||
91 | if [ "$USE_EFI" ] | ||
92 | then | ||
93 | efi_dir="$mnt".efi | ||
94 | mkdir -p "$efi_dir" | ||
95 | mount "$part"1 "$mnt".efi | ||
96 | mkdir "$efi_dir"/boot | ||
97 | boot_dir=$efi_dir/boot | ||
98 | else | ||
99 | boot_dir=$mnt/boot | ||
100 | fi | ||
101 | |||
102 | # https://wiki.archlinux.org/index.php/Multiboot_USB_drive#Hybrid_UEFI_GPT_+_BIOS_GPT/MBR_boot | ||
103 | # grub-install --target=x86_64-efi --removable --boot-directory=/mnt/boot --efi-directory=/mnt | ||
104 | |||
86 | GRUB_LOGFILE=$(mktemp) || exit | 105 | GRUB_LOGFILE=$(mktemp) || exit |
87 | set -- eatmydata -- grub-install -v --boot-directory "$mnt"/boot "$dev" | 106 | set -- eatmydata -- \ |
107 | grub-install ${VERBOSE:+ -v} \ | ||
108 | ${USE_EFI:+ --target=i386-efi} \ | ||
109 | ${USE_EFI:+ --recheck} \ | ||
110 | ${USE_EFI:+ --removable} \ | ||
111 | ${USE_EFI:+ --efi-directory "$efi_dir"} \ | ||
112 | --boot-directory "$boot_dir" \ | ||
113 | "$dev" | ||
88 | echo "running: $* >$GRUB_LOGFILE 2>&1" >&2 | 114 | echo "running: $* >$GRUB_LOGFILE 2>&1" >&2 |
89 | if "$@" >"$GRUB_LOGFILE" 2>&1 | 115 | if "$@" >"$GRUB_LOGFILE" 2>&1 |
90 | then | 116 | then |
91 | rm "$GRUB_LOGFILE" | 117 | fail= |
92 | else | 118 | else |
119 | fail=y | ||
120 | fi | ||
121 | if [ "$USE_EFI" ] | ||
122 | then | ||
123 | umount -l "$mnt"/boot/efi || : | ||
124 | fi | ||
125 | umount -l "$mnt" || : | ||
126 | if [ "$fail" ] | ||
127 | then | ||
93 | set -x | 128 | set -x |
94 | tail -n5 "$GRUB_LOGFILE" | 129 | tail -n5 "$GRUB_LOGFILE" |
95 | exit 1 | 130 | exit 1 |
131 | else | ||
132 | rm "$GRUB_LOGFILE" | ||
96 | fi | 133 | fi |
97 | sync | 134 | sync |
98 | } | 135 | } |
@@ -103,15 +140,15 @@ copy_rootfs() | |||
103 | then | 140 | then |
104 | return | 141 | return |
105 | fi | 142 | fi |
106 | [ -e "$ROOTFS" -a -b "$part"3 ] | 143 | [ -e "$ROOTFS" -a -b "$part"4 ] |
107 | get_rootfs_size | 144 | get_rootfs_size |
108 | part_size=$(blockdev --getsize64 "$part"3) | 145 | part_size=$(blockdev --getsize64 "$part"4) |
109 | [ "$rootfs_size" -le "$part_size" ] || die "rootfs_size=$rootfs_size > part_size=$part_size" | 146 | [ "$rootfs_size" -le "$part_size" ] || die "rootfs_size=$rootfs_size > part_size=$part_size" |
110 | 147 | ||
111 | ( | 148 | ( |
112 | set -x | 149 | set -x |
113 | dd if="$ROOTFS" of="$part"3 | 150 | dd if="$ROOTFS" of="$part"4 |
114 | # dd if=rootfs/samizdat.patch.seed.btrfs of="$part"4 | 151 | # dd if=rootfs/samizdat.patch.seed.btrfs of="$part"5 |
115 | ) | 152 | ) |
116 | } | 153 | } |
117 | 154 | ||
@@ -224,6 +261,7 @@ boot_vm() | |||
224 | find_mac 52-54-00-12-34-56 | 261 | find_mac 52-54-00-12-34-56 |
225 | qemu-system-x86_64 \ | 262 | qemu-system-x86_64 \ |
226 | -enable-kvm \ | 263 | -enable-kvm \ |
264 | ${USE_EFI:+ -bios /usr/share/OVMF/OVMF_CODE.fd} \ | ||
227 | -smp 2 \ | 265 | -smp 2 \ |
228 | -m 512 \ | 266 | -m 512 \ |
229 | -k en-us \ | 267 | -k en-us \ |