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
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
The key step now is to register this ROM image with the VBox subsystem. In the example below, my VM is called “testPXE”.
firstname.lastname@example.org : email@example.com :VBoxManage setextradata testPXE VBoxInternal/Devices/pcbios/0/Config/LanBootRom /usr/local/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack/PXE-Intel.rom firstname.lastname@example.org :
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:
email@example.com :VBoxManage setextradata testPXE VBoxInternal/Devices/pcbios/0/Config/LanBootRom
(i.e. no parameter)