2

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?

aggieNick02
  • 286
  • 2
  • 9

2 Answers2

3

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 to exit 1 causes the Hyper-V preboot environment to fall-through to the next boot option.

aggieNick02
  • 286
  • 2
  • 9
  • 1
    Great that my comment helped you, one note tho is that EFI implementations vary, and `exit 1` does not always work, this is a limitation of the EFI firmware / BIOS implementations and is not something that iPXE have been able to work around. – NiKiZe Jul 16 '21 at 06:05
0

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.

Pat
  • 3,519
  • 2
  • 17
  • 17
  • Thanks for the info. So then it is Hyper-V's pre-boot environment behavior that chooses to stop when control is returned to it? I can appreciate that the behavior can be undefined according to spec. Every *physical* computer I've dealt with falls through upon return to the pre-boot environment, so it is frustrating to see different behavior here, even if there is no specified requirement for what must happen. – aggieNick02 Oct 27 '17 at 16:13
  • Exactly the pre-boot environment decides what to do when regains control. `ipxe exit` returns no error condition then Hyper-v stops, `exit 1` returns with error and Hyper-V continues with the next booting option on the list because the last-one tried failed with errors. At the end is Hyper-V the one that does the things properly. – Pat Oct 27 '17 at 18:16