iPXE over HTTP install
This guide is for UEFI boot, using iPXE over an HTTP server to serve files needed for installation.
Environment
To get XCP-ng installed from iPXE over HTTP, you need:
- An HTTP server to host XCP-ng installation files
- An iPXE compatible network card and iPXE firmware on your host
Procedure
-
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
-
Boot the target machine.
-
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.
- 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
-
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
-
Select the "install" menu entry.
-
Wait for GRUB to load the necessary binaries. This may take a minute.
-
Continue with installation as normal.
Verification
While GRUB loads the binaries, your HTTP server log should show requests for the boot files, for example:
# (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 -
The installer then starts and the installation proceeds as a normal XCP-ng setup.