I've got an environment where machines on the network all PXE boot as their first boot option. Depending on server configuration, each machine will either PXE boot into a custom task, or will just do an ipxe exit
, which causes the machine to proceed to the next boot device.
This works just fine on real machines. I've got windows installed on the machines and if the PXE boot process returns exit
, the machine falls through to the next boot option, which results in Windows loading.
But on a Generation 2 Hyper-V VM, once the PXE boot returns exit
, the boot sequence is over. The boot options that follow in the VMs boot sequence list are not tried. If the server tells the machine to PXE boot into a custom task, that works just fine. So it is just the "fall-through" to the next boot options that doesn't work.
Is this a known issue? Is there something I can configure to get the behavior I want/expect?
I spent a bit more time googling with some slightly improved terminology after Pat's answer, and found a comment by user NiKiZe on the ipxe forums that had exactly what I needed.
Changing my ipxe fall-through script from using
exit
toexit 1
causes the Hyper-V preboot environment to fall-through to the next boot option.This is not a Hyper-V issue. In all cases you have mentioned the pre-boot environment priority boot list is correctly honored.
The pre-boot environments try every boot option on the top-down boot list until they find one that is able to boot. When the option is booted it should not come back. If the chosen option returns the control to the pre-boot environment the behavior is undefined and you can see fall-through, stop, or re-boot depending on the pre-boot environment implementation.