Hacking:Netboot
iPXE is a bootloader capable of booting systems from the network instead of from a local disk. Its name comes from the PXE netboot protocol, which it supports, but in the "standard" Parabola netboot configuration, it just uses the Linux boot protocol (same as GRUB or syslinux or systemd-boot), but is capable of loading files over HTTP/HTTPS instead of from a local disk.
We provide the file https://www.parabola.nu/releng/netboot/parabola.ipxe that contains an iPXE configuration that prompts the user to select a mirror, then netboots files from the latest ISO release.
Precisely what parabola.ipxe does is:
parabola.ipxe
set mirrorurl https://repomirror.parabola.nu/ # or whatever you select set bootarch ${cpuarch} # either 'x86_64' or 'i686', other architectures aren't yet supported kernel ${mirrorurl}iso/${release}/arch/boot/${bootarch}/vmlinuz || goto failed_download imgverify vmlinuz ${mirrorurl}iso/${release}/arch/boot/${bootarch}/vmlinuz.ipxe.sig || goto failed_verify initrd ${mirrorurl}iso/${release}/arch/boot/${bootarch}/archiso.img || goto failed_download imgverify archiso.img ${mirrorurl}iso/${release}/arch/boot/${bootarch}/archiso.img.ipxe.sig || goto failed_verify imgargs vmlinuz initrd=archiso.img archiso_http_srv=${mirrorurl}iso/${release}/ archisobasedir=arch verify=y ${extrabootoptions} boot || goto failed_boot
TODO: Update parabolaiso to produce those
You can tell iPXE to load that configuration file directly by running the iPXE command
chain https://www.parabola.nu/releng/netboot/parabola.ipxe
Of course, that assumes that the network has already been configured. In simple cases, this can be done by running
ifconf
OK, so how do you boot to the iPXE boot loader? We provide 3 different builds of iPXE, for different scenarios:
- https://www.parabola.nu/static/netboot/ipxe.lkrn Linux kernel-like image that can be started with any Linux bootloader
- https://www.parabola.nu/static/netboot/ipxe.pxe PXE image that can be loaded from BIOS firmwares that support PXE-netboot
- https://www.parabola.nu/static/netboot/ipxe.efi x86_64 UEFI executable
These 3 builds of iPXE have been customized so that they have a default configuration file built in to them:
default.ipxe
#!ipxe ifconf chain https://www.parabola.nu/releng/netboot/parabola.ipxe || shell
TODO: We're just pulling in the ipxe bootloader binaries from ArchWeb; we need to compile our own that do the above