summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon GECOS <u@adam>2020-10-30 23:03:17 -0400
committerGordon GECOS <u@adam>2020-10-31 12:46:57 -0400
commit111b011a6b0c514fb8912710fd132b3ff983c004 (patch)
tree001ec60ecb5d6b24a1352a11bc289525a963bb0c
parent3b98146d0d51f9092eca98c4cf7fbb1b0675d686 (diff)
it still works
-rw-r--r--build-deps.control1
-rwxr-xr-xsrc/parted-usb.sh58
2 files changed, 49 insertions, 10 deletions
diff --git a/build-deps.control b/build-deps.control
index d3205e8..a30f93f 100644
--- a/build-deps.control
+++ b/build-deps.control
@@ -3,6 +3,7 @@ Build-Depends: bridge-utils,
3 build-essential, 3 build-essential,
4 cryptsetup, 4 cryptsetup,
5 devscripts, 5 devscripts,
6 dosfstools,
6 eatmydata, 7 eatmydata,
7 equivs, 8 equivs,
8 kpartx, 9 kpartx,
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
2USE_EFI=
2die() 3die()
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
77make_target_bootable() 80make_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 \