archiso/configs/baseline/grub/grub.cfg
nl6720 3f95d391ef
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
2023-02-02 11:49:16 +02:00

41 lines
1.1 KiB
INI

# Load partition table and file system modules
insmod part_gpt
insmod part_msdos
insmod fat
insmod iso9660
# Use graphics-mode output
insmod all_video
insmod font
if loadfont "${prefix}/fonts/unicode.pf2" ; then
insmod gfxterm
set gfxmode="auto"
terminal_input console
terminal_output gfxterm
fi
# Enable serial console
if serial --unit=0 --speed=115200; then
terminal_input --append serial
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
timeout_style=menu
# Menu entries
menuentry "Arch Linux (x86_64, UEFI)" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' {
set gfxpayload=keep
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
}