From 3f95d391eff6145e0546b8c0b69bd2851fc3c400 Mon Sep 17 00:00:00 2001 From: nl6720 Date: Sun, 22 Jan 2023 12:17:51 +0200 Subject: configs/*/grub/grub.cfg: search for a .uuid file in /.disk/ and use the volume it's on Search for `/.disk/%UUID_SEARCH_FILENAME%.uuid` and pass the UUID of the volume it's on as `archisodevice`. mkarchiso will replace `%UUID_SEARCH_FILENAME%` with a hardcoded value generated using `SOURCE_DATE_EPOCH` durring ISO build. This allows to prepare an UEFI bootable installation medium by simply copying the directory structure without having to touch `grub.cfg`. Relying on the volume UUID instead of its LABEL also avoids collisions of multiple ISOs created in the same month. Fixes #202 --- configs/baseline/grub/grub.cfg | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'configs/baseline/grub') diff --git a/configs/baseline/grub/grub.cfg b/configs/baseline/grub/grub.cfg index d2aa4ab..7d73fe6 100644 --- a/configs/baseline/grub/grub.cfg +++ b/configs/baseline/grub/grub.cfg @@ -20,6 +20,11 @@ if serial --unit=0 --speed=115200; then terminal_output --append serial fi +# Search for the ISO volume +regexp --set=1:ARCHISO_HINT '^\(([^)]+)\)' "${cmdpath}" +search --no-floppy --set=root --file '/.disk/%UUID_SEARCH_FILENAME%.uuid' --hint "${ARCHISO_HINT}" +probe --set ARCHISO_UUID --fs-uuid "${root}" + # Set default menu entry default=archlinux timeout=15 @@ -30,7 +35,6 @@ timeout_style=menu menuentry "Arch Linux (x86_64, UEFI)" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' { set gfxpayload=keep - search --no-floppy --set=root --label %ARCHISO_LABEL% - linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% + linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisodevice=/dev/disk/by-uuid/${ARCHISO_UUID} initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img } -- cgit v1.2.3-70-g09d2