Skip to main content

iPXE over HTTP install

VKB-1053How-to
📦 Applies to
XCP-ng
🗓️ Created
2024-03-13
🔄 Updated
2024-03-13

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​

  1. In your HTTP root directory copy the contents of the net install ISO. The top-level should look like this:

    root@dom0
    # 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:

    root@dom0
    # 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:

    root@dom0
    # 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.

  7. 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.