Actually, it turns out that even installing this isn't practical on
anything else than media with a GTP partition. It won't fit into the
start of a DOS partition, whereas GTP always leaves plenty of empty
space at the start.

If there's any way to enable this for one specific menu entry, you're
welcome to propose a fix to my recipe.

Martin-Éric

ke 14. elok. 2024 klo 10.17 Mate Kukri ([email protected]) kirjoitti:
>
> Finding external USB disks does not in fact require "nativedisk".
>
> GRUB can boot off USB disks if the firmware supports booting off USB
> disks, which I suspect isn't the case on your machine.
>
> GRUB's nativedisk driver is designed for use cases such as "GRUB as a
> coreboot payload" where firmware disk drivers are simply not
> available.
>
> It shouldn't be used with traditional firmware as it was never widely
> deployed in such a manner and may have compatibility issues, and such
> definitely not be the default in Debian.
>
> You are always able to enable them as a workaround on your incompatible 
> machine.
>
> On Tue, Aug 13, 2024 at 9:06 PM Martin-Éric Racine
> <[email protected]> wrote:
> >
> > Package: grub-pc
> > Version: 2.06-13+deb12u1
> > Severity: normal
> >
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA256
> >
> > I've been trying to implement a chainloader (see below at 
> > /etc/grub.d/40_custom) to boot off external USB disks as needed. Finding 
> > external disks requires using GRUB's 'nativedisk', but once that has been 
> > executed, the rest of the script cannot be completed because Debian's 
> > grub-install enforces BIOS device names (hd0,msdos1) instead of bus names 
> > (ata0,msdos1). Further investigating this suggests that if Debian used 
> > 'grub-install --disk-module=native /dev/sdX' to install GRUB, this would 
> > work as expected.
> >
> > Alternately, if there's any /etc/default/grub variable I can set to 
> > accomplish this, it would suit me just as well.
> >
> > Thanks!
> > Martin-Éric
> >
> > - -- Package-specific info:
> >
> > *********************** BEGIN /proc/mounts
> > /dev/sda1 / ext4 rw,relatime,errors=remount-ro 0 0
> > *********************** END /proc/mounts
> >
> > *********************** BEGIN /boot/grub/device.map
> > (hd0)   /dev/disk/by-id/ata-ST320011A_3HT48T7R
> > *********************** END /boot/grub/device.map
> >
> > *********************** BEGIN /boot/grub/grub.cfg
> > #
> > # DO NOT EDIT THIS FILE
> > #
> > # It is automatically generated by grub-mkconfig using templates
> > # from /etc/grub.d and settings from /etc/default/grub
> > #
> >
> > ### BEGIN /etc/grub.d/00_header ###
> > if [ -s $prefix/grubenv ]; then
> >   set have_grubenv=true
> >   load_env
> > fi
> > if [ "${next_entry}" ] ; then
> >    set default="${next_entry}"
> >    set next_entry=
> >    save_env next_entry
> >    set boot_once=true
> > else
> >    set default="0"
> > fi
> >
> > if [ x"${feature_menuentry_id}" = xy ]; then
> >   menuentry_id_option="--id"
> > else
> >   menuentry_id_option=""
> > fi
> >
> > export menuentry_id_option
> >
> > if [ "${prev_saved_entry}" ]; then
> >   set saved_entry="${prev_saved_entry}"
> >   save_env saved_entry
> >   set prev_saved_entry=
> >   save_env prev_saved_entry
> >   set boot_once=true
> > fi
> >
> > function savedefault {
> >   if [ -z "${boot_once}" ]; then
> >     saved_entry="${chosen}"
> >     save_env saved_entry
> >   fi
> > }
> > function load_video {
> >   if [ x$feature_all_video_module = xy ]; then
> >     insmod all_video
> >   else
> >     insmod efi_gop
> >     insmod efi_uga
> >     insmod ieee1275_fb
> >     insmod vbe
> >     insmod vga
> >     insmod video_bochs
> >     insmod video_cirrus
> >   fi
> > }
> >
> > if [ x$feature_default_font_path = xy ] ; then
> >    font=unicode
> > else
> > insmod part_msdos
> > insmod ext2
> > set root='hd0,msdos1'
> > if [ x$feature_platform_search_hint = xy ]; then
> >   search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 
> > --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  
> > cc540c15-0f8a-4933-88de-5516da7b3414
> > else
> >   search --no-floppy --fs-uuid --set=root 
> > cc540c15-0f8a-4933-88de-5516da7b3414
> > fi
> >     font="/usr/share/grub/unicode.pf2"
> > fi
> >
> > if loadfont $font ; then
> >   set gfxmode=640x480
> >   load_video
> >   insmod gfxterm
> >   set locale_dir=$prefix/locale
> >   set lang=fi_FI
> >   insmod gettext
> > fi
> > terminal_output gfxterm
> > if [ "${recordfail}" = 1 ] ; then
> >   set timeout=30
> > else
> >   if [ x$feature_timeout_style = xy ] ; then
> >     set timeout_style=menu
> >     set timeout=5
> >   # Fallback normal timeout code in case the timeout_style feature is
> >   # unavailable.
> >   else
> >     set timeout=5
> >   fi
> > fi
> > ### END /etc/grub.d/00_header ###
> >
> > ### BEGIN /etc/grub.d/05_debian_theme ###
> > insmod part_msdos
> > insmod ext2
> > set root='hd0,msdos1'
> > if [ x$feature_platform_search_hint = xy ]; then
> >   search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 
> > --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  
> > cc540c15-0f8a-4933-88de-5516da7b3414
> > else
> >   search --no-floppy --fs-uuid --set=root 
> > cc540c15-0f8a-4933-88de-5516da7b3414
> > fi
> > insmod png
> > if background_image 
> > /usr/share/desktop-base/emerald-theme/grub/grub-4x3.png; then
> >   set color_normal=white/black
> >   set color_highlight=black/white
> > else
> >   set menu_color_normal=white/black
> >   set menu_color_highlight=black/light-gray
> > fi
> > ### END /etc/grub.d/05_debian_theme ###
> >
> > ### BEGIN /etc/grub.d/10_linux ###
> > function gfxmode {
> >         set gfxpayload="${1}"
> > }
> > set linux_gfx_mode=keep
> > export linux_gfx_mode
> > menuentry 'Debian GNU/Linux, with Linux 6.1.0-23-686-pae' --class debian 
> > --class gnu-linux --class gnu --class os $menuentry_id_option 
> > 'gnulinux-6.1.0-23-686-pae-advanced-cc540c15-0f8a-4933-88de-5516da7b3414' {
> >         load_video
> >         gfxmode $linux_gfx_mode
> >         insmod gzio
> >         if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
> >         insmod part_msdos
> >         insmod ext2
> >         set root='hd0,msdos1'
> >         if [ x$feature_platform_search_hint = xy ]; then
> >           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 
> > --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         else
> >           search --no-floppy --fs-uuid --set=root 
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         fi
> >         echo    'Loading Linux 6.1.0-23-686-pae ...'
> >         linux   /boot/vmlinuz-6.1.0-23-686-pae 
> > root=UUID=cc540c15-0f8a-4933-88de-5516da7b3414 ro panic=15 noquiet 
> > loglevel=4 nosplash
> >         echo    'Loading initial ramdisk ...'
> >         initrd  /boot/initrd.img-6.1.0-23-686-pae
> > }
> > menuentry 'Debian GNU/Linux, with Linux 6.1.0-23-686-pae (recovery mode)' 
> > --class debian --class gnu-linux --class gnu --class os 
> > $menuentry_id_option 
> > 'gnulinux-6.1.0-23-686-pae-recovery-cc540c15-0f8a-4933-88de-5516da7b3414' {
> >         load_video
> >         gfxmode $linux_gfx_mode
> >         insmod gzio
> >         if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
> >         insmod part_msdos
> >         insmod ext2
> >         set root='hd0,msdos1'
> >         if [ x$feature_platform_search_hint = xy ]; then
> >           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 
> > --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         else
> >           search --no-floppy --fs-uuid --set=root 
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         fi
> >         echo    'Loading Linux 6.1.0-23-686-pae ...'
> >         linux   /boot/vmlinuz-6.1.0-23-686-pae 
> > root=UUID=cc540c15-0f8a-4933-88de-5516da7b3414 ro single panic=15
> >         echo    'Loading initial ramdisk ...'
> >         initrd  /boot/initrd.img-6.1.0-23-686-pae
> > }
> > menuentry 'Debian GNU/Linux, with Linux 6.1.0-22-686-pae' --class debian 
> > --class gnu-linux --class gnu --class os $menuentry_id_option 
> > 'gnulinux-6.1.0-22-686-pae-advanced-cc540c15-0f8a-4933-88de-5516da7b3414' {
> >         load_video
> >         gfxmode $linux_gfx_mode
> >         insmod gzio
> >         if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
> >         insmod part_msdos
> >         insmod ext2
> >         set root='hd0,msdos1'
> >         if [ x$feature_platform_search_hint = xy ]; then
> >           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 
> > --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         else
> >           search --no-floppy --fs-uuid --set=root 
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         fi
> >         echo    'Loading Linux 6.1.0-22-686-pae ...'
> >         linux   /boot/vmlinuz-6.1.0-22-686-pae 
> > root=UUID=cc540c15-0f8a-4933-88de-5516da7b3414 ro panic=15 noquiet 
> > loglevel=4 nosplash
> >         echo    'Loading initial ramdisk ...'
> >         initrd  /boot/initrd.img-6.1.0-22-686-pae
> > }
> > menuentry 'Debian GNU/Linux, with Linux 6.1.0-22-686-pae (recovery mode)' 
> > --class debian --class gnu-linux --class gnu --class os 
> > $menuentry_id_option 
> > 'gnulinux-6.1.0-22-686-pae-recovery-cc540c15-0f8a-4933-88de-5516da7b3414' {
> >         load_video
> >         gfxmode $linux_gfx_mode
> >         insmod gzio
> >         if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
> >         insmod part_msdos
> >         insmod ext2
> >         set root='hd0,msdos1'
> >         if [ x$feature_platform_search_hint = xy ]; then
> >           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 
> > --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         else
> >           search --no-floppy --fs-uuid --set=root 
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         fi
> >         echo    'Loading Linux 6.1.0-22-686-pae ...'
> >         linux   /boot/vmlinuz-6.1.0-22-686-pae 
> > root=UUID=cc540c15-0f8a-4933-88de-5516da7b3414 ro single panic=15
> >         echo    'Loading initial ramdisk ...'
> >         initrd  /boot/initrd.img-6.1.0-22-686-pae
> > }
> >
> > ### END /etc/grub.d/10_linux ###
> >
> > ### BEGIN /etc/grub.d/20_ipxe ###
> > menuentry "Network boot (iPXE)" --users "" --class network {
> >         insmod part_msdos
> >         insmod ext2
> >         set root='hd0,msdos1'
> >         if [ x$feature_platform_search_hint = xy ]; then
> >           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 
> > --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         else
> >           search --no-floppy --fs-uuid --set=root 
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         fi
> >         linux16 /boot/ipxe.lkrn
> > }
> > ### END /etc/grub.d/20_ipxe ###
> >
> > ### BEGIN /etc/grub.d/20_linux_xen ###
> > ### END /etc/grub.d/20_linux_xen ###
> >
> > ### BEGIN /etc/grub.d/20_memtest86+ ###
> > menuentry "Memory test (memtest86+ia32.bin)" {
> >         insmod part_msdos
> >         insmod ext2
> >         set root='hd0,msdos1'
> >         if [ x$feature_platform_search_hint = xy ]; then
> >           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 
> > --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         else
> >           search --no-floppy --fs-uuid --set=root 
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         fi
> >         linux   /boot/memtest86+ia32.bin
> > }
> > menuentry 'Memory test (memtest86+ia32.bin, serial console)' {
> >         insmod part_msdos
> >         insmod ext2
> >         set root='hd0,msdos1'
> >         if [ x$feature_platform_search_hint = xy ]; then
> >           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 
> > --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         else
> >           search --no-floppy --fs-uuid --set=root 
> > cc540c15-0f8a-4933-88de-5516da7b3414
> >         fi
> >         linux   /boot/memtest86+ia32.bin console=ttyS0,115200
> > }
> > ### END /etc/grub.d/20_memtest86+ ###
> >
> > ### BEGIN /etc/grub.d/30_os-prober ###
> > ### END /etc/grub.d/30_os-prober ###
> >
> > ### BEGIN /etc/grub.d/30_uefi-firmware ###
> > ### END /etc/grub.d/30_uefi-firmware ###
> >
> > ### BEGIN /etc/grub.d/35_fwupd ###
> > ### END /etc/grub.d/35_fwupd ###
> >
> > ### BEGIN /etc/grub.d/40_custom ###
> > # This file provides an easy way to add custom menu entries.  Simply type 
> > the
> > # menu entries you want to add after this comment.  Be careful not to change
> > # the 'exec tail' line above.
> > # to boot from a USB device
> > menuentry "USB chainloader" {
> >         insmod part_msdos
> >         insmod ext2
> >         insmod fat
> >         insmod iso9660
> >         nativedisk
> >         set root='ata0,msdos1'
> >         chainloader (usb0)+1
> > }
> > ### END /etc/grub.d/40_custom ###
> >
> > ### BEGIN /etc/grub.d/41_custom ###
> > if [ -f  ${config_directory}/custom.cfg ]; then
> >   source ${config_directory}/custom.cfg
> > elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
> >   source $prefix/custom.cfg
> > fi
> > ### END /etc/grub.d/41_custom ###
> > *********************** END /boot/grub/grub.cfg
> >
> > *********************** BEGIN /proc/mdstat
> > cat: /proc/mdstat: No such file or directory
> > *********************** END /proc/mdstat
> >
> > *********************** BEGIN /dev/disk/by-id
> > total 0
> > lrwxrwxrwx 1 root root  9 Aug 13 22:43 ata-Compaq_CRD-8481B -> ../../sr0
> > lrwxrwxrwx 1 root root  9 Aug 13 22:47 ata-ST320011A_3HT48T7R -> ../../sda
> > lrwxrwxrwx 1 root root 10 Aug 13 22:47 ata-ST320011A_3HT48T7R-part1 -> 
> > ../../sda1
> > lrwxrwxrwx 1 root root 10 Aug 13 22:47 ata-ST320011A_3HT48T7R-part2 -> 
> > ../../sda2
> > lrwxrwxrwx 1 root root 10 Aug 13 22:47 ata-ST320011A_3HT48T7R-part5 -> 
> > ../../sda5
> > lrwxrwxrwx 1 root root  9 Aug 13 22:43 
> > usb-SAMSUNG_SP2514N_10000E000CE66B56-0:0 -> ../../sdb
> > lrwxrwxrwx 1 root root 10 Aug 13 22:43 
> > usb-SAMSUNG_SP2514N_10000E000CE66B56-0:0-part1 -> ../../sdb1
> > lrwxrwxrwx 1 root root 10 Aug 13 22:43 
> > usb-SAMSUNG_SP2514N_10000E000CE66B56-0:0-part2 -> ../../sdb2
> > lrwxrwxrwx 1 root root 10 Aug 13 22:43 
> > usb-SAMSUNG_SP2514N_10000E000CE66B56-0:0-part3 -> ../../sdb3
> > *********************** END /dev/disk/by-id
> >
> > *********************** BEGIN /dev/disk/by-uuid
> > total 0
> > lrwxrwxrwx 1 root root 10 Aug 13 22:47 0cffc75f-9b88-4375-b6fd-f624db6b5d19 
> > -> ../../sda5
> > lrwxrwxrwx 1 root root 10 Aug 13 22:43 561c5eff-f74f-456c-ac71-4259021c1571 
> > -> ../../sdb1
> > lrwxrwxrwx 1 root root 10 Aug 13 22:43 863ba051-7b2b-44b3-aa45-88c2bfbe5688 
> > -> ../../sdb3
> > lrwxrwxrwx 1 root root 10 Aug 13 22:43 86c9b551-1c6e-4b96-9441-65ff476d25e4 
> > -> ../../sdb2
> > lrwxrwxrwx 1 root root 10 Aug 13 22:47 cc540c15-0f8a-4933-88de-5516da7b3414 
> > -> ../../sda1
> > *********************** END /dev/disk/by-uuid
> >
> > - -- System Information:
> > Debian Release: 12.6
> >   APT prefers stable-updates
> >   APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 
> > 'stable-debug'), (500, 'stable')
> > Architecture: i386 (i686)
> >
> > Kernel: Linux 6.1.0-23-686-pae (SMP w/1 CPU thread; PREEMPT)
> > Locale: LANG=fi_FI.UTF-8, LC_CTYPE=fi_FI.UTF-8 (charmap=UTF-8), 
> > LANGUAGE=fi:en
> > Shell: /bin/sh linked to /usr/bin/dash
> > Init: systemd (via /run/systemd/system)
> > LSM: AppArmor: enabled
> >
> > Versions of packages grub-pc depends on:
> > ii  debconf [debconf-2.0]  1.5.82
> > ii  grub-common            2.06-13+deb12u1
> > ii  grub-pc-bin            2.06-13+deb12u1
> > ii  grub2-common           2.06-13+deb12u1
> > ii  ucf                    3.0043+nmu1
> >
> > grub-pc recommends no packages.
> >
> > grub-pc suggests no packages.
> >
> > - -- debconf information:
> > * grub2/enable_os_prober: false
> > * grub2/linux_cmdline: panic=15
> >   grub-pc/install_devices_empty: false
> > * grub-pc/install_devices: /dev/disk/by-id/ata-ST320011A_3HT48T7R
> >   grub2/update_nvram: true
> >   grub2/kfreebsd_cmdline_default: quiet
> >   grub-pc/mixed_legacy_and_grub2: true
> > * grub2/linux_cmdline_default: noquiet loglevel=4 nosplash
> >   grub-pc/disk_description:
> >   grub-pc/install_devices_failed_upgrade: true
> >   grub2/force_efi_extra_removable: false
> >   grub2/kfreebsd_cmdline:
> >   grub-pc/partition_description:
> >   grub-pc/install_devices_disks_changed:
> >   grub-pc/kopt_extracted: true
> >   grub-pc/hidden_timeout: true
> >   grub-pc/install_devices_failed: false
> > * grub-pc/chainload_from_menu.lst: true
> >   grub2/device_map_regenerated:
> >   grub-pc/timeout: 5
> >   grub-pc/postrm_purge_boot_grub: false
> >
> > -----BEGIN PGP SIGNATURE-----
> >
> > iQIzBAEBCAAdFiEEyJACx3qL7GpObXOQrh+Cd8S017YFAma7u80ACgkQrh+Cd8S0
> > 17YHLw//Vfkg9Se04sQbHQf6BuD0uyjmhrtEGG41U2JbyEJjNrPZkjWgMROKGhBD
> > n5D429muwzR84ad7Vwsjw6SLSlj8Ok0+NQuqjzhovRL7+o5mtoJ1P+OEsJENV22z
> > n+SPXH3dPCicDCmu4ImuvLlGFYhxmchQ7x8KkXITp5N8keoTaFWFqzt+Q6dsanBH
> > FFjGFwvelIiFt5ZWngm7TGJoEjt29rm1lKPVyJPckplD4mbSFUWvjSsrlTEu5ilC
> > pY5gVgw7Dbtx7u01BB3DW5kMEgf9ZZmC7VSM2GKZXPQLHd2tqTHPtnBjcrln0Ehk
> > 1Cg7/ApHrzJfuUyx7PMunFKTZ3LkOKWSFj/vmXiHOsZwF9SXx0hjBykkiaKBuPHc
> > 1nW5KkWD2aa8sLyoaPjooMtVHpIpKQhn3IdlD+GtFmvcsXK8R1AejrEkNj4EPzV9
> > YKBjhL5wCAcqOiMYvaw+gL7/1S0hjltun6cHTAXRUrl6XriAGiQ6OsrSAQlQfU+8
> > aoFpOKZ95S/iBq2b7PpMzOrLkCW0rjkg/SET2ueHH9/pffqQ4OLFm79UckTn3JCi
> > kzvLIr3EAf/cRtm/4UoZrqlbALg0uIpFDTmb0svw/Tl8gNcI/eEGACI0Dj8JRqgR
> > 4QPGkEiga1XKFF1GEeDX5YTI3vboRBkvZScmE3Vv4n9eRNq/st8=
> > =1Q91
> > -----END PGP SIGNATURE-----
> > _______________________________________________
> > Pkg-grub-devel mailing list
> > [email protected]
> > https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-grub-devel

Reply via email to