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
<martin-eric.rac...@iki.fi> 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
> pkg-grub-de...@alioth-lists.debian.net
> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-grub-devel

Reply via email to