A.1 Setting Up PXE Boot for Oracle VM Server Release 3.4.1 and Release 3.4.2

If you are performing a PXE boot installation of Oracle VM Server Release 3.4.1 and Release 3.4.2, you should refer to the procedures in this section.

A.1.1 Setting up the GRUB2 Boot Loader

You must use the GRUB2 boot loader if you plan to perform PXE boot with UEFI-based PXE clients. You can also use the GRUB2 boot loader if your environment includes BIOS-based PXE clients as well as UEFI-based PXE clients.

A.1.1.1 Building the GRUB2 Boot Loader

Oracle VM Release 3.4.1 and Release 3.4.2 require you to build the boot loader for PXE clients.

You must mount the Oracle VM Server ISO image file and then build the GRUB2 boot loader.

Note
  • Oracle Linux 7 or later provide the grub2-tools package that is required to build the GRUB2 boot loader. For this reason, you cannot build the GRUB2 boot loader on Oracle Linux 6 or earlier.

  • The Oracle VM Server Release 3.4.1 and Release 3.4.2 ISO image files include a grubx64.efi boot loader in the EFI/BOOT/ directory. However, this boot loader is configured for installing Oracle VM Server on UEFI-based systems directly from bootable physical media. You cannot use this boot loader to perform a PXE boot.

Build the GRUB2 boot loader as follows:

  1. Place the contents of the Oracle VM Server ISO image file in a directory where you have write privileges, for example, on an Oracle Linux 7 system you could do the following:

    # mkdir tmp
            # cd tmp
            # mkdir iso
            # mount -o loop /tmp/OracleVM-Server.iso /iso
            # mkdir iso-contents
            # cp -p -R iso/* iso-contents/
  2. Change to the following directory: path/grub2/bin

    Substitute path with the path to the contents of the Oracle VM Server ISO image file on your file system. Following on from the example in step 1:

    # cd iso-contents/grub2/bin/
  3. Build the boot loader with the grub2-mkimage command.

    • For BIOS-based PXE clients:

      grub2-mkimage -O i386-pc-pxe -d ../lib/grub/i386-pc/ \
              -o core.0 -p '(tftp)/grub2' pxe tftp
    • For UEFI-based PXE clients:

      grub2-mkimage -O x86_64-efi -d ../lib/grub/x86_64-efi/ \
              -o core.efi -p '(tftp)/grub2' efinet tftp

    In the preceding command example:

    • -O i386-pc-pxe|x86_64-efi generates an image in the i386 or x86_64 format.

    • -d specifies the directory where the GRUB2 images and modules reside.

    • -o specifies the output file.

    • -p '(tftp)/grub2' specifies that the grub.cfg boot loader configuration file, GRUB2 modules, and other required files reside in the grub2 directory on the TFTP server.

    • pxe|efinet tftp adds the GRUB2 pxe or efinet module and the tftp module.

A.1.1.2 Hosting the GRUB2 Boot Loader

Host the GRUB2 boot loader on the TFTP server so PXE clients can access it over the network, as follows:

  1. Create a grub2 directory in the TFTP root.

  2. Copy the boot loader to the grub2 directory.

    • For BIOS-based PXE clients:

      # cp -r path/grub2/bin/core.0 /tftpboot/grub2/
    • For UEFI-based PXE clients:

      # cp -r path/grub2/bin/core.efi /tftpboot/grub2/

    Substitute path with the directory where you built the GRUB2 boot loader.

  3. Copy the GRUB2 modules and files to the appropriate directory.

    • For BIOS-based PXE clients:

      # cp -r path/grub2/lib/grub/i386-pc/*.{lst,mod} /tftpboot/grub2/i386-pc
    • For UEFI-based PXE clients:

      # cp -r path/grub2/lib/grub/x86_64-efi/*.{lst,mod} /tftpboot/grub2/x86_64-efi

    Substitute path with the path to the contents of the Oracle VM Server ISO image file on your file system.

A.1.1.3 Configuring the GRUB2 Boot Loader

You must create a grub.cfg boot loader configuration file on the TFTP server. You can use the same boot loader configuration file for both BIOS-based PXE clients and UEFI-based PXE clients.

Complete the following steps:

  1. Create a grub.cfg file.

    # touch /tftpboot/grub2/grub.cfg
  2. Configure grub.cfg as appropriate. See Example grub.cfg.

Example grub.cfg

The following is an example of grub2/grub.cfg:

set default="1"

function load_video {
  insmod efi_gop
  insmod efi_uga
  insmod video_bochs
  insmod video_cirrus
  insmod all_video
}

load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2

set timeout=60
### END /etc/grub.d/00_header ###

search --no-floppy --set=root -l 'Oracle VM Server'

### BEGIN /etc/grub.d/10_linux ###

menuentry 'Install Oracle VM Server' --class fedora --class gnu-linux --class gnu --class os {
        echo 'Loading Xen...'
    insmod multiboot2
        multiboot2 /tftpboot/ovs/xen.mn.efi dom0_mem=max:128G dom0_max_vcpus=20 noreboot
        echo 'Loading Linux Kernel...'
        # Note that the module2 statement must be a single line, the \ delimiter
        # indicates line breaks that you should remove
        module2 /tftpboot/ovs/vmlinuz ip=dhcp \
        repo=nfs:n.n.n.n:/srv/install/ovs \
        ks=nfs:n.n.n.n:/srv/install/kickstart/OVS_ks.config \
        ksdevice=eth0
        echo 'Loading initrd...'
        module2 /tftpboot/ovs/initrd.img
}

In the preceding example of efi/grub.cfg:

  • Some parameters in module2 statement are broken into separate lines with the \ delimiter for readability purposes. A valid configuration contains all parameters and values in a single line.

  • The Xen hypervisor is loaded first from ovs/xen.mb.efi in the TFTP server root.

  • Limits are applied to dom0 for the installer to ensure that the installer is stable while it runs. This is achieved using the default parameters: dom0_mem=max:128G and dom0_max_vcpus=20.

  • The installer kernel is located within the path ovs/vmlinuz in the TFTP server root.

  • The IP address for the installer kernel is acquired using DHCP.

  • You should substitute n.n.n.n with the IP address of the NFS or HTTP server that hosts the contents of the Oracle VM Server ISO image file.

  • The ksdevice parameter specifies the network interface to use. You should specify a value that reflects your network configuration, such as eth0, a specific MAC address, or an appropriate keyword. Refer to the appropriate kickstart documentation for more information.

  • The initial ramdisk image is located within the path ovs/initrd.img in the TFTP server root.