iPXE over HTTP install

This guide is for UEFI boot, using iPXE over an HTTP server to serve files needed for installation.

Requirements

To get XCP-ng installed from iPXE over HTTP, you need:

  • An HTTP server to host XCP-ng installation files
  • A iPXE compatible network card and iPXE firmware on your host

1. In your HTTP root directory copy the contents of the net install ISO.

The top-level should look like this:

tree -L 1 /path/to/http-directory/
.
├── EFI
├── EULA
├── LICENSES
├── RPM-GPG-KEY-CH-8
├── RPM-GPG-KEY-CH-8-LCM
├── RPM-GPG-KEY-Platform-V1
├── boot
└── install.img

2. Boot the target machine.

3. Press Ctrl-B to catch the iPXE menu. Use the chainload command to load grub.


chain http://SERVER_IP/EFI/xenserver/grubx64.efi


TIP

• Sometimes grub takes a very long time to load after displaying "Welcome to Grub". This can be fixed by compiling a new version of Grub with grub-mkstandalone.


4. Once the grub prompt loads, set the root to http and load the config file.

# Replace with your server's ip
set root=(http,SERVER_IP)
configfile /EFI/xenserver/grub.cfg

5. Select the "install" menu entry.
6. Wait for grub to load the necessary binaries. This may take a minute. If you look at your http server log you should see something like:

# (from python3 -m http.server path-to-directory 80)

192.168.0.10 - - [11/Mar/2021 03:25:58] "GET /boot/xen.gz HTTP/1.1" 200 -
192.168.0.10 - - [11/Mar/2021 03:25:58] "GET /boot/vmlinuz HTTP/1.1" 200 -
192.168.0.10 - - [11/Mar/2021 03:26:03] "GET /install.img HTTP/1.1" 200 -
7. Continue with installation as normal.