I’ve upgraded my home FreeBSD 8 server’s instance of VirtualBox to 4.1.8, and wanted to play with PXE booting inside VMs using the virtual Intel NICs. By default this isn’t supported. But information here shows it can be turned on by using the PXE-Intel.rom
image from Oracle’s “Extension Pack”.
The extension pack is generally useless for FreeBSD hosts — it contains a bunch of precompiled binaries for OSes that Oracle officially supports, and FreeBSD is not (currently) a supported OS. Fortunately, the ROM image that enables a virtual Intel NIC to do PXE booting is multiplatform.
Grab the extension pack — it is basically a tarball. Amongst the platform-specific files inside there’s PXE-Intel.rom
image.
gjabkup2# tar tf Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack|more ./ ./darwin.amd64/ ./darwin.amd64/VBoxEhciR0.r0 [...blah...blah...] ./PXE-Intel.rom [...blah...blah...] gjabkup2#
If you simply extract the tarball under /usr/local/lib/virtualbox/ExtensionPacks/
you’ll find the ROM image at /usr/local/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack/PXE-Intel.rom
The key step now is to register this ROM image with the VBox subsystem. In the example below, my VM is called “testPXE”.
gja@gjabkup2.space4me.com : gja@gjabkup2.space4me.com :VBoxManage setextradata testPXE VBoxInternal/Devices/pcbios/0/Config/LanBootRom /usr/local/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack/PXE-Intel.rom gja@gjabkup2.space4me.com :
Having done this, the testPXE VM could now PXE boot when using emulated “Intel PRO/1000 MT” NIC. Yay!
(Apparently “VBoxManage setextradata global …” would set this parameter for all VMs, not just a named VM.)
To disable the use of PXE boot ROM, use this:
gja@gjabkup2.space4me.com :VBoxManage setextradata testPXE VBoxInternal/Devices/pcbios/0/Config/LanBootRom
(i.e. no parameter)
