diff --git a/actions/prepare-environment.sh b/actions/prepare-environment.sh index dbd8ae1..91f3acc 100755 --- a/actions/prepare-environment.sh +++ b/actions/prepare-environment.sh @@ -70,6 +70,16 @@ if [ "$extpacks" -le 0 ]; then fi echo "OK" +# Check for VirtualBox iPXE firmware +echo -n "Checking for VirtualBox iPXE firmware..." +if [ -z $pxe_path ]; then + echo "VirtualBox iPXE firmware is not found. Please put it under the 'drivers' directory." + exit 1 +fi +execute VBoxManage setextradata global VBoxInternal/Devices/pcbios/0/Config/LanBootRom "$(pwd)/$pxe_path" 2>/dev/null +echo "OK" +echo "Going to use iPXE boot firmware file $pxe_path" + # Check for ISO image to be available echo -n "Checking for Mirantis OpenStack ISO image... " if [ -z $iso_path ]; then diff --git a/config.sh b/config.sh index 8b131cf..8cca902 100755 --- a/config.sh +++ b/config.sh @@ -20,6 +20,9 @@ source ./functions/shell.sh # Get the first available ISO from the directory 'iso' iso_path=`ls -1t iso/*.iso 2>/dev/null | head -1` +# get the first available iPXE boot firmware from the directory 'drivers' +pxe_path=`ls -1t drivers/*.isarom 2>/dev/null | head -1` + # Every Mirantis OpenStack machine name will start from this prefix vm_name_prefix=fuel- diff --git a/drivers/8086100e.isarom b/drivers/8086100e.isarom new file mode 100644 index 0000000..6743574 Binary files /dev/null and b/drivers/8086100e.isarom differ diff --git a/drivers/README.md b/drivers/README.md new file mode 100644 index 0000000..253f022 --- /dev/null +++ b/drivers/README.md @@ -0,0 +1,52 @@ +# iPXE - open source boot firmware for VirtualBox + +This is a prebuilt binary version of **iPXE** as an **VirtualBox PXE ROM**. + +The **iPXE** source code is maintained in a git repository. You can check out a copy of the code using: + +``` +git clone git://git.ipxe.org/ipxe.git +``` + +and build it using: + +``` +cd ipxe/src +make +``` + +You will need to have at least the following packages installed in order to build **iPXE**: + +``` +* gcc (version 3 or later) +* binutils (version 2.18 or later) +* make +* perl +* syslinux (for isolinux, only needed for building .iso images) +* liblzma or xz header files +* zlib, binutils and libiberty header files (only needed for EFI builds) +``` + +to build this **Intel 82540EM Gigabit Ethernet PXE ROM** for VirtualBox use: + +``` +make CONFIG=vbox bin/8086100e.isarom +``` + +Max size of a VirtualBox ROM is 56KB (57344 bytes). +There should be no need to pad the image as long as the binary is smaller or equal to this size. + +To use the ROM in VirtualBox you need to enable it using this command: + +``` +vboxmanage setextradata global VBoxInternal/Devices/pcbios/0/Config/LanBootRom \ + /absolute/path/to/8086100e.isarom +``` + +NB: If you build the ROM using the .rom prefix then it'll be built as a PCI +ROM, which won't work properly in VirtualBox. The error message you'll see +is "No more network devices", which is somewhat confusing. If you enter the +shell and use the "autoboot" command things will work as intended. Remember +to always build as a .isarom to avoid this issue. + +You can find **iPXE** at the official site of the project: .