I’ve installed Haiku R1/Beta4 on above computer. I also have linux Mint on the same machine, and used it to add two menu entries to 40_custom for grub 2. Grub displays the two menu entries, but when I select either of them, I get one of the following:
"Booting a command list
error: disk 'name>,4" not found."
The output from fdisk -l shows [Note my comments are enclosed in square brackets]
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 616447 514400 300M EFI System
/dev/nvme0n1p2 616448 878591 262144 128M Microsoft Reserved
/dev/nvme0n1p3 878592 344502271 343623680 163.9G Microsoft basic data [Windows 11]
/dev/nvme0n1p4 344502272 478719999 134217728 64G Microsoft basic data [this is the partition I installed Haiku on]
/dev/nvme0n1p5 478722048 956567551 477845504 227.9G Linux filesystem [My linux Mint installation]
/dev/nvme0n1p6 956567552 958595071 2027520 990M Windows recovery environment
/dev/nvme0n1p7 958595072 997199871 38604800 18.4G Windows recovery environment
/dev/nvme0n1p8 997201920 1000214527 3012608 1.4G Windows recovery environment"
I won’t go through the whole list of what Haiku’s "drive setup’ program shows, but here is the single line that represents the partition where I installed Haiku after booting the anyboot environment from a USB stick:
Device File system Volume name Mounted at Size Free space
Block size Physical block size
…
/dev/disk/nvme/0/3 Be File System BeFS /BeFS 64.00GiB 63.31GiB 2048 512
…
/dev/disk/usb/0/0/0 Be File System Haiku /boot 1.37GiB 271.71MiB
2048 512
I’m hoping someone can help me with what the Grub “root =” entries should be for both the NVMe and the USB if possible.
Thanks in advance for any pointers. More information gladly given if requested.
Thanks for the response. Can’t figure out how to attach a file (other than images) so I’ll post it inline. I hope it is readable:
#
# 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 [ "${initrdfail}" = 2 ]; then
set initrdfail=
elif [ "${initrdfail}" = 1 ]; then
set next_entry="${prev_entry}"
set prev_entry=
save_env prev_entry
if [ "${next_entry}" ]; then
set initrdfail=2
fi
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 initrdfail {
if [ -n "${have_grubenv}" ]; then if [ -n "${partuuid}" ]; then
if [ -z "${initrdfail}" ]; then
set initrdfail=1
if [ -n "${boot_once}" ]; then
set prev_entry="${default}"
save_env prev_entry
fi
fi
save_env initrdfail
fi; fi
}
function recordfail {
set recordfail=1
if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; 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_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 51fcefa8-1990-46e6-a6c4-b9b882e993d9
font="/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=en_US
insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=hidden
set timeout=10
# Fallback hidden-timeout code in case the timeout_style feature is
# unavailable.
elif sleep --interruptible 10 ; then
set timeout=0
fi
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
set gfxpayload="${1}"
if [ "${1}" = "keep" ]; then
set vt_handoff=vt.handoff=7
else
set vt_handoff=
fi
}
if [ "${recordfail}" != 1 ]; then
if [ -e ${prefix}/gfxblacklist.txt ]; then
if [ ${grub_platform} != pc ]; then
set linux_gfx_mode=keep
elif hwmatch ${prefix}/gfxblacklist.txt 3; then
if [ ${match} = 0 ]; then
set linux_gfx_mode=keep
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=keep
fi
else
set linux_gfx_mode=text
fi
export linux_gfx_mode
menuentry 'Linux Mint 21.2 Cinnamon' --class linuxmint --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-51fcefa8-1990-46e6-a6c4-b9b882e993d9' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 51fcefa8-1990-46e6-a6c4-b9b882e993d9
linux /boot/vmlinuz-5.15.0-88-generic root=UUID=51fcefa8-1990-46e6-a6c4-b9b882e993d9 ro quiet splash
initrd /boot/initrd.img-5.15.0-88-generic
}
submenu 'Advanced options for Linux Mint 21.2 Cinnamon' $menuentry_id_option 'gnulinux-advanced-51fcefa8-1990-46e6-a6c4-b9b882e993d9' {
menuentry 'Linux Mint 21.2 Cinnamon, with Linux 5.15.0-88-generic' --class linuxmint --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-88-generic-advanced-51fcefa8-1990-46e6-a6c4-b9b882e993d9' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 51fcefa8-1990-46e6-a6c4-b9b882e993d9
echo 'Loading Linux 5.15.0-88-generic ...'
linux /boot/vmlinuz-5.15.0-88-generic root=UUID=51fcefa8-1990-46e6-a6c4-b9b882e993d9 ro quiet splash
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.15.0-88-generic
}
menuentry 'Linux Mint 21.2 Cinnamon, with Linux 5.15.0-88-generic (recovery mode)' --class linuxmint --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-88-generic-recovery-51fcefa8-1990-46e6-a6c4-b9b882e993d9' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 51fcefa8-1990-46e6-a6c4-b9b882e993d9
echo 'Loading Linux 5.15.0-88-generic ...'
linux /boot/vmlinuz-5.15.0-88-generic root=UUID=51fcefa8-1990-46e6-a6c4-b9b882e993d9 ro recovery nomodeset dis_ucode_ldr
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.15.0-88-generic
}
menuentry 'Linux Mint 21.2 Cinnamon, with Linux 5.15.0-87-generic' --class linuxmint --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-87-generic-advanced-51fcefa8-1990-46e6-a6c4-b9b882e993d9' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 51fcefa8-1990-46e6-a6c4-b9b882e993d9
echo 'Loading Linux 5.15.0-87-generic ...'
linux /boot/vmlinuz-5.15.0-87-generic root=UUID=51fcefa8-1990-46e6-a6c4-b9b882e993d9 ro quiet splash
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.15.0-87-generic
}
menuentry 'Linux Mint 21.2 Cinnamon, with Linux 5.15.0-87-generic (recovery mode)' --class linuxmint --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-87-generic-recovery-51fcefa8-1990-46e6-a6c4-b9b882e993d9' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 51fcefa8-1990-46e6-a6c4-b9b882e993d9
echo 'Loading Linux 5.15.0-87-generic ...'
linux /boot/vmlinuz-5.15.0-87-generic root=UUID=51fcefa8-1990-46e6-a6c4-b9b882e993d9 ro recovery nomodeset dis_ucode_ldr
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.15.0-87-generic
}
menuentry 'Linux Mint 21.2 Cinnamon, with Linux 5.15.0-76-generic' --class linuxmint --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-76-generic-advanced-51fcefa8-1990-46e6-a6c4-b9b882e993d9' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 51fcefa8-1990-46e6-a6c4-b9b882e993d9
echo 'Loading Linux 5.15.0-76-generic ...'
linux /boot/vmlinuz-5.15.0-76-generic root=UUID=51fcefa8-1990-46e6-a6c4-b9b882e993d9 ro quiet splash
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.15.0-76-generic
}
menuentry 'Linux Mint 21.2 Cinnamon, with Linux 5.15.0-76-generic (recovery mode)' --class linuxmint --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-76-generic-recovery-51fcefa8-1990-46e6-a6c4-b9b882e993d9' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 51fcefa8-1990-46e6-a6c4-b9b882e993d9
echo 'Loading Linux 5.15.0-76-generic ...'
linux /boot/vmlinuz-5.15.0-76-generic root=UUID=51fcefa8-1990-46e6-a6c4-b9b882e993d9 ro recovery nomodeset dis_ucode_ldr
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-5.15.0-76-generic
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/10_linux_zfs ###
### END /etc/grub.d/10_linux_zfs ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-EE83-94B8' {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root EE83-94B8
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10
fi
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
### 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.
# Added entry to boot Haiku
menuentry "Haiku (NVMe)" {
set root=(hd0,3)
chainloader +1
}
menuentry "Haiku (USB)" {
set root=(sda0,1)
chainloader +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 ###
Since you use an EFI system please add Haikus efi bootloader to your esp (the 300mib fat32 partition) and the check online how grub2 can chainload efi loaders.
This may work but I don’t know for sure, in general the advice for Haiku is not to use grub2 as it is complicated and error prone. instead an efi menu like rEFInd works much better.
Adding to nephele’s answer, if you are sticking with grub2, you can copy the content from the entry for Windows and change the path for the chainloader command. The search command takes care of finding the correct value for root.
You’ll also have to change the partition type of /dev/nvme0n1p4 to Haiku BFS (42465331-3BA3-10F1-802A-4861696B7521) for the bootloader to find it. You can do that with fdisk.
For a USB disk, it depends on how the hardware sees it and how it is formatted. You may try again the search command if the partitions have unique labels.
This code assumes your EFI partition UID is EE83-94B8 (it seems to be so), and in this partition you have Haiku EFI loader put under /EFI/Haiku/Bootx64.efi.
Of course, after changing 40_custom you need to run update-grub.
A thanks to everyone else that responded of course, but your answer is exactly what I needed! I had been struggling for several hours, and following your advice - it just works. I now have Haiku booting from the NVMe in my dell inspiron. I can’t thank you enough.