HyperV Gen1 Hangs on iPXE Initializing Devices
There are many posts over the last few years that are unsolved pertaining to an issue when PXE booting a legacy (Generation1) HyperV VM with FOG. It appears UEFI (Generation 2) VM’s are not affected. When using a default FOG installation, a Generation 1 HyperV VM will not boot to the PXE menu, resulting in a hang on the screen below (iPXE Initialising devices…)
To solve this issue, iPXE needs to be recompiled with a few settings changed. Below are steps to recompile iPXE with settings required to make Generation 1 VM’s boot.
Step 1 - Download FOG via git into a new folder (in this case /opt/custom)
mkdir -p /opt/custom cd /opt/custom git clone https://github.com/fogproject/fogproject.git fogproject
Step 2 - Add the following 3 lines to /opt/custom/fogproject/src/ipxe/src/config/general.h (I added them on line 175)
#undef DOWNLOAD_PROTO_HTTPS #undef IMAGE_TRUST_CMD #undef CERT_CMD
Step 3 - Recompile iPXE by issuing the following commands (you may need to make buildipxe.sh executable)
cd /opt/custom/fogproject/utils/FOGiPXE ./buildipxe.sh
Step 4 - Move the new iPXE files into the tftp directory. This can be accomplished two ways.
- Rerun the fog installation script from the new directory (/opt/custom/fogproject/bin/./installfog.sh
- Copy the files from /opt/custom/fogproject/packages/tftp to /tftpboot overwriting the previous files
You should now be able to boot a Generation 1 HyperV VM to FOG. The only change appears to lose the .png background for the menu (see below).
Credit to @george1421 for these steps. Through multiple different posts about similar issues, his replies led me to this conclusion.
This was tested on Windows Server 2019 and Windows 10 21H2 HyperV Virtual Machine Clients. This was tested on FOG 1.5.9 running Rocky Linux 8 and iPXE 1.21.1+.