Re: bhyve: bootindex= not working?
- In reply to: Dave Cottlehuber: "Re: bhyve: bootindex= not working?"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 26 May 2025 14:22:50 UTC
Dave Cottlehuber wrote:
> On Mon, 26 May 2025, at 06:01, Corvin Köhne wrote:
>
> > Hi Roman,
> >
> > EDKII honors bootindex since 202408 [1]. So, our latest EDKII port, based on
> > 202308, is too old.
>
> Thanks Corvin
>
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285554 has a patch for this, bringing it up to 202502.
>
> Roman can you let us know if this works for you?
>
> A+
> Dave
I've updated the port to 202505 using patch from that PR. At the first
glance, nothing's changed.
Command I run:
bhyve -c 2 -m 4096 -A -I -u -H -P \
-s 0:0,hostbridge \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd,/var/lib/libvirt/bhyve/nvram/freebsd_VARS.fd,fwcfg=qemu \
-s 2:0,xhci,tablet -s 1:0,lpc \
-s 3:0,ahci,hd:/data/img/freebsd.img,bootindex=1,cd:/data/isos/FreeBSD-14.2-RELEASE-amd64-disc1.iso,bootindex=2 \
-s 4:0,virtio-net,tap4,mac=52:54:00:47:f4:dc -s 5:0,fbuf,tcp=127.0.0.1:5920 \
-l com1,/dev/nmdm5A \
freebsd
It still boots from the "cd" device, not from "hd" as expected. Before
running the VM, I've re-created
/var/lib/libvirt/bhyve/nvram/freebsd_VARS.fd from the fresh copy.
Just to make sure:
$ pkg which /usr/local/share/uefi-firmware/BHYVE_UEFI.fd
/usr/local/share/uefi-firmware/BHYVE_UEFI.fd was installed by package edk2-bhyve-g202505
$
That's what I see in the VM's console log:
BdsDxe: loading Boot0001 "UEFI BHYVE SATA DVD ROM BHYVE-6057-BC56-DB6C" from PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x1,0xFFFF,0x0)
BdsDxe: starting Boot0001 "UEFI BHYVE SATA DVD ROM BHYVE-6057-BC56-DB6C" from PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x1,0xFFFF,0x0)
Consoles: EFI console
Reading loader env vars from /efi/freebsd/loader.env
Setting currdev to cd1:
FreeBSD/amd64 EFI loader, Revision 3.0
Command line arguments: loader.efi
Image base: 0xbe252000
EFI version: 2.70
EFI Firmware: BHYVE (rev 1.00)
Console: efi (0x20001000)
Load Path: \EFI\BOOT\BOOTX64.EFI
Load Device: PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x1,0xFFFF,0x0)/CDROM(0x1)
BootCurrent: 0001
BootOrder: 0000 0001[*] 0002
BootInfo Path: PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x1,0xFFFF,0x0)
Ignoring Boot0001: Only one DP found
Trying ESP: PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x1,0xFFFF,0x0)/CDROM(0x1)
Setting currdev to cd1:
Trying: PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x1,0xFFFF,0x0)/CDROM(0x0)
Setting currdev to cd0:
Loading /boot/defaults/loader.conf
Again, when I run "efibootmgr -o 0002", then I see:
BdsDxe: loading Boot0002 "UEFI BHYVE SATA DISK BHYVE-412B-5D46-BC34" from PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x0,0xFFFF,0x0)
BdsDxe: starting Boot0002 "UEFI BHYVE SATA DISK BHYVE-412B-5D46-BC34" from PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x0,0xFFFF,0x0)
Consoles: EFI console
Reading loader env vars from /efi/freebsd/loader.env
Setting currdev to disk0p1:
FreeBSD/amd64 EFI loader, Revision 3.0
Command line arguments: loader.efi
Image base: 0xbe252000
EFI version: 2.70
EFI Firmware: BHYVE (rev 1.00)
Console: efi (0x20001000)
Load Path: \EFI\BOOT\BOOTX64.EFI
Load Device: PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x0,0xFFFF,0x0)/HD(1,GPT,88BF7344-316E-11F0-986D-87D32D3EC81F)
BootCurrent: 0002
BootOrder: 0002[*] 0000 0001
BootInfo Path: PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x0,0xFFFF,0x0)
Ignoring Boot0002: Only one DP found
Trying ESP: PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x0,0xFFFF,0x0)/HD(1,GPT,88BF7344-316E-11F0-986D-87D32D3EC81F)
Setting currdev to disk0p1:
Trying: PciRoot(0x0)/Pci(0x3,0x0)/Sata(0x0,0xFFFF,0x0)/HD(2,GPT,88BFF6FB-316E-11F0-986D-87D32D3EC81F)
Setting currdev to disk0p2:
Loading /boot/defaults/loader.conf
Thanks,
Roman