From fe346dbf56622d03fed1251e8bbefa5501bddf8b Mon Sep 17 00:00:00 2001 From: James Bunton Date: Sun, 11 Jun 2023 14:03:56 +1000 Subject: [PATCH] multiboot improvements - Split into ESP and ext4 partition to support larger ISO images - Wipe filesystem labels - Better graphics mode on HiDPI screens - Quiet/Splash on by default - memtest now works on EFI - Debian Live support - Updated Ubuntu/Fedora to work with the latest images - Fix FreeDOS URL --- hacks/multiboot-setup | 100 ++++++++++++++++++++++++++++++------------ 1 file changed, 72 insertions(+), 28 deletions(-) diff --git a/hacks/multiboot-setup b/hacks/multiboot-setup index 1358aa5..aafcb48 100755 --- a/hacks/multiboot-setup +++ b/hacks/multiboot-setup @@ -2,7 +2,8 @@ set -eu -PARTITION_LABEL="multiboot" +PARTITION_LABEL_ESP="multibt-esp" +PARTITION_LABEL_DATA="multiboot" MULTIBOOT_MNT="${MULTIBOOT_MNT:-/mnt/multiboot}" function cmd_format { @@ -14,9 +15,21 @@ function cmd_format { sudo -k DISK_DEVICE="$1" - PARTITION_DEVICE="${DISK_DEVICE}1" - echo -ne 'label: dos\ntype=c, bootable\n' | sudo sfdisk "$DISK_DEVICE" - sudo mkfs.vfat -n "$PARTITION_LABEL" "$PARTITION_DEVICE" + print_sfdisk_command | sudo sfdisk --wipe always --wipe-partitions always "$DISK_DEVICE" + udevadm settle + sudo mkfs.vfat -n "${PARTITION_LABEL_ESP}" "/dev/disk/by-partlabel/${PARTITION_LABEL_ESP}" + sudo mkfs.ext4 -L "${PARTITION_LABEL_DATA}" -E "root_owner=$(id -u):$(id -g)" "/dev/disk/by-partlabel/${PARTITION_LABEL_DATA}" +} + +function print_sfdisk_command { + cat < /dev/null; do true; done + while sudo umount "/dev/disk/by-partlabel/${PARTITION_LABEL_DATA}" &> /dev/null; do true; done sudo mkdir -p "$MULTIBOOT_MNT" - while sudo umount "$PARTITION_DEVICE" &> /dev/null; do true; done - sudo mount "$PARTITION_DEVICE" "$MULTIBOOT_MNT" -o "uid=$(whoami)" + sudo mount "/dev/disk/by-partlabel/${PARTITION_LABEL_DATA}" "$MULTIBOOT_MNT" + mkdir -p "${MULTIBOOT_MNT}/EFI" + sudo mount "/dev/disk/by-partlabel/${PARTITION_LABEL_ESP}" "${MULTIBOOT_MNT}/EFI" } function cmd_umount { set -x - sudo umount "$MULTIBOOT_MNT" + sudo umount "${MULTIBOOT_MNT}/EFI" || true + sudo umount "$MULTIBOOT_MNT" || true sudo rmdir "$MULTIBOOT_MNT" } @@ -87,7 +103,7 @@ function cmd_freedos { local SYSLINUX_VERSION="6.03" local SYSLINUX_URL="https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-${SYSLINUX_VERSION}.tar.gz" - local FREEDOS_URL="http://www.freedos.org/download/download/FD12LITE.zip" + local FREEDOS_URL="https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/official/FD12LITE.zip" curl -fL "$SYSLINUX_URL" | \ tar xz --no-same-owner --strip-components=3 -C "$MULTIBOOT_MNT" \ @@ -97,30 +113,43 @@ function cmd_freedos { } function cmd_memtest { - curl -fL "https://www.memtest.org/download/5.01/memtest86+-5.01.bin.gz" | \ - zcat - > "${MULTIBOOT_MNT}/memtest.bin" + curl -fL -o "${MULTIBOOT_MNT}/memtest.tmp.zip" "https://memtest.org/download/v6.20/mt86plus_6.20_64.grub.iso.zip" + unzip -d "$MULTIBOOT_MNT" "${MULTIBOOT_MNT}/memtest.tmp.zip" + rm "${MULTIBOOT_MNT}/memtest.tmp.zip" } function print_grub_cfg { cat <