fix: embed grub finder configuration

Helps GRUB find the ShredOS volume when it otherwise cannot (such as when the IMG is used with Ventoy in BIOS)

Signed-off-by: desertwitch <24509509+desertwitch@users.noreply.github.com>
This commit is contained in:
desertwitch
2025-11-19 10:25:07 +01:00
parent 39cb0dd4f7
commit 66e7c16de3
13 changed files with 34 additions and 5 deletions

View File

@@ -0,0 +1,16 @@
This file is embedded into the GRUB bootloaders at build-time
Helps GRUB find our ShredOS volume when it cannot (Ventoy BIOS)
There is no point to put it anywhere on the USB - so don't do that.
Keep consistent with BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE
when building any configurations that build both an ISO and the IMG.
Do not use the version file as identification file though, because
the ISO9660 filesystem does not have it (but has the needed grub.cfg),
so you should always use a unique file not otherwise used for anything.
Also ensure it is in a location where users cannot delete it by accident.
Note that contrary to the GNU manual the BIOS bootloader seems to need an
explicit "configfile" directive, otherwise the Buildroot static prefix takes
precedence over the actual found volume path (which may be entirely different).

View File

@@ -0,0 +1,3 @@
search --file --set=root /boot/buildroot
set prefix=($root)/boot/grub
configfile $prefix/grub.cfg

View File

@@ -4,6 +4,7 @@ image boot.vfat {
file boot/bzImage { image = 'bzImage' } file boot/bzImage { image = 'bzImage' }
file boot/grub/grub.cfg { image = 'grub.cfg' } file boot/grub/grub.cfg { image = 'grub.cfg' }
file boot/version.txt { image = 'version.txt' } file boot/version.txt { image = 'version.txt' }
file boot/buildroot { image = '/dev/null' }
file EFI/BOOT/bootx64.efi { image = 'bootx64.efi' } file EFI/BOOT/bootx64.efi { image = 'bootx64.efi' }
file EFI/BOOT/grub.cfg { image = 'grub.cfg' } file EFI/BOOT/grub.cfg { image = 'grub.cfg' }
file shredos.ico { image = 'shredos.ico' } file shredos.ico { image = 'shredos.ico' }

View File

@@ -4,6 +4,7 @@ image boot.vfat {
file boot/bzImage { image = 'bzImage' } file boot/bzImage { image = 'bzImage' }
file boot/grub/grub.cfg { image = 'grub.cfg' } file boot/grub/grub.cfg { image = 'grub.cfg' }
file boot/version.txt { image = 'version.txt' } file boot/version.txt { image = 'version.txt' }
file boot/buildroot { image = '/dev/null' }
file EFI/BOOT/bootia32.efi { image = 'bootia32.efi' } file EFI/BOOT/bootia32.efi { image = 'bootia32.efi' }
file EFI/BOOT/grub.cfg { image = 'grub.cfg' } file EFI/BOOT/grub.cfg { image = 'grub.cfg' }
file shredos.ico { image = 'shredos.ico' } file shredos.ico { image = 'shredos.ico' }

View File

@@ -175,7 +175,9 @@ BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_I386_PC=y BR2_TARGET_GRUB2_I386_PC=y
BR2_TARGET_GRUB2_X86_64_EFI=y BR2_TARGET_GRUB2_X86_64_EFI=y
BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal progress biosdisk all_video video_cirrus video_bochs net tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile" BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal progress biosdisk all_video video_cirrus video_bochs net tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660" BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_INSTALL_TOOLS=y BR2_TARGET_GRUB2_INSTALL_TOOLS=y
BR2_TARGET_SYSLINUX=y BR2_TARGET_SYSLINUX=y
BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_E2FSPROGS=y

View File

@@ -172,7 +172,9 @@ BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_I386_PC=y BR2_TARGET_GRUB2_I386_PC=y
BR2_TARGET_GRUB2_I386_EFI=y BR2_TARGET_GRUB2_I386_EFI=y
BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal progress biosdisk all_video video_cirrus video_bochs net tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile" BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal progress biosdisk all_video video_cirrus video_bochs net tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660" BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_INSTALL_TOOLS=y BR2_TARGET_GRUB2_INSTALL_TOOLS=y
BR2_TARGET_SYSLINUX=y BR2_TARGET_SYSLINUX=y
BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_E2FSPROGS=y

View File

@@ -165,13 +165,14 @@ BR2_PACKAGE_UTIL_LINUX_SU=y
BR2_PACKAGE_UTIL_LINUX_SULOGIN=y BR2_PACKAGE_UTIL_LINUX_SULOGIN=y
BR2_TARGET_ROOTFS_CPIO_LZMA=y BR2_TARGET_ROOTFS_CPIO_LZMA=y
BR2_TARGET_ROOTFS_INITRAMFS=y BR2_TARGET_ROOTFS_INITRAMFS=y
# BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
# BR2_TARGET_ROOTFS_TAR is not set # BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_GRUB2=y BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_I386_PC=y BR2_TARGET_GRUB2_I386_PC=y
BR2_TARGET_GRUB2_X86_64_EFI=y BR2_TARGET_GRUB2_X86_64_EFI=y
BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal progress biosdisk all_video video_cirrus video_bochs net tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile" BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal progress biosdisk all_video video_cirrus video_bochs net tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile" BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_INSTALL_TOOLS=y BR2_TARGET_GRUB2_INSTALL_TOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_GENIMAGE=y

View File

@@ -162,13 +162,14 @@ BR2_PACKAGE_UTIL_LINUX_SU=y
BR2_PACKAGE_UTIL_LINUX_SULOGIN=y BR2_PACKAGE_UTIL_LINUX_SULOGIN=y
BR2_TARGET_ROOTFS_CPIO_LZMA=y BR2_TARGET_ROOTFS_CPIO_LZMA=y
BR2_TARGET_ROOTFS_INITRAMFS=y BR2_TARGET_ROOTFS_INITRAMFS=y
# BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
# BR2_TARGET_ROOTFS_TAR is not set # BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_GRUB2=y BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_I386_PC=y BR2_TARGET_GRUB2_I386_PC=y
BR2_TARGET_GRUB2_I386_EFI=y BR2_TARGET_GRUB2_I386_EFI=y
BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal progress biosdisk all_video video_cirrus video_bochs net tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile" BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal progress biosdisk all_video video_cirrus video_bochs net tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile" BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_INSTALL_TOOLS=y BR2_TARGET_GRUB2_INSTALL_TOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_GENIMAGE=y

View File

@@ -174,6 +174,7 @@ BR2_TARGET_ROOTFS_ISO9660_HYBRID=y
BR2_TARGET_GRUB2=y BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_X86_64_EFI=y BR2_TARGET_GRUB2_X86_64_EFI=y
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660" BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_INSTALL_TOOLS=y BR2_TARGET_GRUB2_INSTALL_TOOLS=y
BR2_TARGET_SYSLINUX=y BR2_TARGET_SYSLINUX=y
BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_E2FSPROGS=y

View File

@@ -171,6 +171,7 @@ BR2_TARGET_ROOTFS_ISO9660_HYBRID=y
BR2_TARGET_GRUB2=y BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_I386_EFI=y BR2_TARGET_GRUB2_I386_EFI=y
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660" BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_INSTALL_TOOLS=y BR2_TARGET_GRUB2_INSTALL_TOOLS=y
BR2_TARGET_SYSLINUX=y BR2_TARGET_SYSLINUX=y
BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_E2FSPROGS=y

View File

@@ -167,12 +167,12 @@ BR2_TARGET_ROOTFS_CPIO_LZMA=y
BR2_TARGET_ROOTFS_INITRAMFS=y BR2_TARGET_ROOTFS_INITRAMFS=y
BR2_TARGET_ROOTFS_ISO9660=y BR2_TARGET_ROOTFS_ISO9660=y
BR2_TARGET_ROOTFS_ISO9660_BOTH=y BR2_TARGET_ROOTFS_ISO9660_BOTH=y
# BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
BR2_TARGET_ROOTFS_ISO9660_HYBRID=y BR2_TARGET_ROOTFS_ISO9660_HYBRID=y
# BR2_TARGET_ROOTFS_TAR is not set # BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_GRUB2=y BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_X86_64_EFI=y BR2_TARGET_GRUB2_X86_64_EFI=y
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660" BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_INSTALL_TOOLS=y BR2_TARGET_GRUB2_INSTALL_TOOLS=y
BR2_TARGET_SYSLINUX=y BR2_TARGET_SYSLINUX=y
BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_E2FSPROGS=y

View File

@@ -164,12 +164,12 @@ BR2_TARGET_ROOTFS_CPIO_LZMA=y
BR2_TARGET_ROOTFS_INITRAMFS=y BR2_TARGET_ROOTFS_INITRAMFS=y
BR2_TARGET_ROOTFS_ISO9660=y BR2_TARGET_ROOTFS_ISO9660=y
BR2_TARGET_ROOTFS_ISO9660_BOTH=y BR2_TARGET_ROOTFS_ISO9660_BOTH=y
# BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
BR2_TARGET_ROOTFS_ISO9660_HYBRID=y BR2_TARGET_ROOTFS_ISO9660_HYBRID=y
# BR2_TARGET_ROOTFS_TAR is not set # BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_GRUB2=y BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_I386_EFI=y BR2_TARGET_GRUB2_I386_EFI=y
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660" BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal progress efi_gop efi_uga all_video video_cirrus video_bochs net efinet tftp gzio test eval read true gfxterm gfxterm_menu gfxmenu gfxterm_background png usb usb_keyboard search configfile iso9660"
BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="board/shredos/embed/grub.cfg"
BR2_TARGET_GRUB2_INSTALL_TOOLS=y BR2_TARGET_GRUB2_INSTALL_TOOLS=y
BR2_TARGET_SYSLINUX=y BR2_TARGET_SYSLINUX=y
BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_E2FSPROGS=y

View File

@@ -120,7 +120,7 @@ config BR2_TARGET_ROOTFS_ISO9660_GRUB2_EFI_IDENT_FILE
string "Grub2 identification file (EFI)" string "Grub2 identification file (EFI)"
depends on (BR2_TARGET_ROOTFS_ISO9660_GRUB2 || BR2_TARGET_ROOTFS_ISO9660_BOTH) \ depends on (BR2_TARGET_ROOTFS_ISO9660_GRUB2 || BR2_TARGET_ROOTFS_ISO9660_BOTH) \
&& BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER && BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER
default "/buildroot" default "/boot/buildroot"
help help
Use this option to provide a custom name for the identification Use this option to provide a custom name for the identification
file that is added to the ISO9660 filesystem, so the EFI bootloader file that is added to the ISO9660 filesystem, so the EFI bootloader