The PXE environment allows you to boot a computer with SystemRescue even if this computer has no CDRom drive or USB socket. It allows you to boot SystemRescue from the network, and then it is faster to troubleshoot computers on your network once a PXE-boot-server is installed. It is also useful if you want to boot a computer that has no optical drive (CD or DVD) or to troubleshoot a remote computer to which you have no physical access to insert the disc.
Instructions provided below correspond to files from the 64 bit version
(amd64/x86_64) of SystemRescue. If you use the 32 bit version you need to
replace all instances of x86_64
with i686
.
The PXE boot server is made of three stages:
These three parts can be installed either on a single machine or on several computers.
You may need to understand what happens when you boot SystemRescue from the network. You will need this knowledge for troubleshooting in case of problems. Here are the most important steps of the PXE boot process:
The PXE server is made of several services. In the second stage, the server uses TFTP to send multiple things to the client: boot loader (pxelinux.0), kernel image (vmlinuz), initramfs (sysresccd.img). The boot loader is pxelinux.0 and it comes with a configuration file which is sent to the client. This configuration file contains the boot command line which will be used by the client to start the Linux kernel. This command line is important since it contains the SystemRescue boot options that are required to run the third stage. The boot command line can be used to specify the network settings and the method that the PXE client will use in the third stage of the PXE boot process. Here are two examples of valid command lines for PXE boot:
SystemRescue is based on Arch Linux since version 6.0 hence it supports PXE boot options implemented by the upstream. These boot options provide support for various protocols (HTTP, NFS, NBD) and are documented on the following page: https://gitlab.archlinux.org/archlinux/archiso/-/raw/v43/docs/README.bootparams
The most important ones are the following:
x86_64
)
are added to the supplied URL.
http and https are supported. When using https, no certificate check is done as the
initramfs environment doesn’t contain a trusted CA database.x86_64
)
are added to the supplied path. Note that due to tooling limitations only IPv4 addresses
are supported, no DNS hostnames or IPv6.Here is an example of a PXE configuration which allows to boot SystemRescue using TFTP and HTTP only. It is one of the simplest PXE configuration you can have hence it is recommended to follow this example if you want a simple PXE configuration for SystemRescue.
In this example the boot loader is pxelinux.0 and TFTP is used to get the kernel image and initramfs images. It then uses an HTTP server to download the large squashfs file system airootfs.sfs.
When you configure the TFTP server you have to copy the boot loader (pxelinux
binary files), a pxelinux configuration file in pxelinux.cfg/default
, and you
need to copy the sysresccd
directory as it is (even though not all files are
required by the TFTP server) from the ISO image to provide files that will be
requested via TFTP.
Here is the list of all required files and their location on the TFTP server:
./sysresccd/boot/x86_64/vmlinuz
./sysresccd/boot/x86_64/sysresccd.img
./sysresccd/boot/memtest.COPYING
./sysresccd/boot/memtest
./sysresccd/boot/intel_ucode.LICENSE
./sysresccd/boot/intel_ucode.img
./sysresccd/boot/amd_ucode.LICENSE
./sysresccd/boot/amd_ucode.img
./sysresccd/VERSION
./sysresccd/pkglist.x86_64.txt
./pxelinux.cfg/default
./ldlinux.c32
./pxelinux.0
And here is the example of a configuration located in pxelinux.cfg/default
:
DEFAULT sysresccd
LABEL sysresccd
LINUX sysresccd/boot/x86_64/vmlinuz
INITRD sysresccd/boot/intel_ucode.img,sysresccd/boot/amd_ucode.img,sysresccd/boot/x86_64/sysresccd.img
APPEND archisobasedir=sysresccd ip=dhcp archiso_http_srv=http://10.0.2.4/ checksum
SYSAPPEND 3
The SYSAPPEND option is important and you need to make sure you are using a recent version of pxelinux as versions older than 5.10 do not support it. Also users of the PXE boot feature are encouraged to use recent versions of SystemRescue.
You need to update the IP address of the HTTP server from which the squashfs image will be downloaded. In this example it will download this file and its checksum from the following URLs:
http://10.0.2.4/sysresccd/x86_64/airootfs.sfs
http://10.0.2.4/sysresccd/x86_64/airootfs.sha512
Make sure you are able to successfully download these files from a regular web
client before you try to boot from PXE. You can customize the boot command line
by adding options such as setkmap=us
after the checksum
option.