PXE Boot on UEFI – Installer Fails to Reach Base Repository

Hello everyone,

I’m trying to install Qubes OS 4.2.4 via PXE boot on a UEFI system but have run into a problem: the installer is unable to reach the base repositories. I’ve double-checked my network settings, and everything seems to be working fine on that end.

Below is my current (anonymized) configuration:

ifconf --configurator dhcp net0
set qubes_baseurl http://[ANONYMOUS_DOMAIN]/dists/qubesos/4.2.4/x86_64
set qubes_iso     http://[ANONYMOUS_DOMAIN]/dists/qubesos/iso/Qubes-R4.2.4-x86_64.iso

menu Qubes
item qubes424 Qubes OS 4.2.4
item qubes424_noxen [noxen] Qubes OS 4.2.4
item qubes424_sanboot [sanboot] Qubes OS 4.2.4
item main Back to main menu
choose selected || goto main
goto ${selected} ||
goto main

:qubes424
iseq ${platform} efi || goto qubes424_legacybios

:qubes424_uefi
kernel ${qubes_baseurl}/boot/efi/EFI/qubes/xen-4.17.5.efi noreboot efi=no-rs console=none
goto qubes424_common

:qubes424_legacybios
kernel ${qubes_baseurl}/images/pxeboot/xen noreboot console=none
goto qubes424_common

:qubes424_noxen
kernel ${qubes_baseurl}/images/pxeboot/vmlinuz initrd=initrd ip=dhcp nameserver=10.0.10.10 root=live:${qubes_iso} plymouth.ignore-serial-consoles rd.live.ram rd.live.check quiet rd.info rd.shell
initrd --name=initrd ${qubes_baseurl}/images/pxeboot/initrd.img
boot

:qubes424_common
module ${qubes_baseurl}/images/pxeboot/vmlinuz initrd=initrd ip=dhcp nameserver=10.0.10.10 inst.repo=${qubes_baseurl} plymouth.ignore-serial-consoles rd.live.check quiet
#module ${qubes_baseurl}/images/pxeboot/vmlinuz ip=dhcp nameserver=10.0.10.10 inst.repo=${qubes_baseurl} plymouth.ignore-serial-consoles 
initrd --name=initrd ${qubes_baseurl}/images/pxeboot/initrd.img
#module http://[ANONYMOUS_DOMAIN]/dists/qubesos/iso/Qubes-R4.2.4-x86_64.iso
shell
#boot
initrd --name=initrd ${qubes_baseurl}/images/pxeboot/initrd.img
#module http://[ANONYMOUS_DOMAIN]/dists/qubesos/iso/Qubes-R4.2.4-x86_64.iso
shell
#boot

Has anyone successfully set up PXE boot for Qubes OS on a UEFI system? Any guidance on how to get the PXE boot working correctly—especially ensuring the installer can reach the base repositories—would be greatly appreciated.

Thank you in advance for your help!

The two crucial points when using the Qubes installer via the network:
a) You have to start the installer without Xen; it’s likely that the initrd is not set up to handle the complex interface for passing through the Xen VM, and without a network, it can’t access the .iso image.
b) vmlinuz/initrd parameters: root=live:${qubes_iso}, so it downloads the ISO to a ramdisk and activates it as a loop device. Then it finds inst.repo=hd:LABEL=QUBES-R4-2-4-X86-64 based on the label, and the installer can pull the packages from there. The installer then writes a clean installation, including Xen, to the hard drive.

In the graphical installer, entering HTTP package sources never triggered any network activity. Perhaps Qubes trimmed down the Fedora installer at that point without removing the graphical dialog.
Future Research: Parameterizing installation/configuration over the network, possibly with Kickstart.
In VMware, I couldn’t get Xen to work; we took a xen.efi from a Qubes laptop (the one extracted from an .rpm failed with a complaint about a missing config file). It no longer throws an error, but nothing happens anymore (0% CPU). The installer without Xen works on VMware, but when rebooting with Xen, it hangs with 0% CPU.