Hacking:Netboot

From ParabolaWiki
Jump to: navigation, search

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:

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