pxe-kexec - Read PXE configuration file and kexec entries
pxe-kexec [options] [tftp_server]
pxe-kexec is a tool that fetches PXE configuration from a
TFTP server, reads that PXE configuration file, prompts the user for an boot
entry, downloads the specified kernel and initrd and finally tries to boot
the kernel.
The normal process to boot with kexec(8) is that pxe-kexec
loads the kernel and invokes reboot(8). The shutdown script of the
Linux distribution then executes "kexec -e" at the very end. That
is not implemented everywhere. Therefore, pxe-kexec has a whitelist of Linux
distributions that support reboot with kexec. If the distribution is not on
that whitelist, the program quits with a warning. To bypass that warning,
please use the "--igore-whitelist" parameter. You can also use the
"--force" parameter to execute "kexec -e" to immediately
boot the selected kernel, without invoking
shutdown(8)/reboot(8).
pxe-kexec meant to be used in an environment where pre-defined PXE
configurations exist but the user wants to use kexec(8) instead of
rebooting.
Normally, the tftp_server must be specified as first
argument. If there's no TFTP server specified, pxe-kexec looks in the DHCP
info file for the DHCP server and uses this one as TFTP server. This only
works when the TFTP server is running on the same machine as the DHCP
server.
==> Please also read the section called "Update
Info" <==
As mentioned previously, a whitelist of Linux distributions that
support kexec-based rebooting is maintained. Currently following
distributions are on the whitelist:
- openSUSE, starting with version 11.0
- Ubuntu, starting with version 9.04
- Red Hat Enterprise Linux and CentOS, starting with version 5.3
- Fedora Linux, starting with version 11
- ARCH Linux
Don't hesitate to send the author an email to add the distribution
to the whitelist. Please include the output of "pxe-kexec
--print-distribution" in that mail.
Following options can be specified:
- -h | --help
- Prints a short help.
- -v |
--version
- Prints the version number to standard output.
- -f | --force
- Immediately load the kernel without invoking reboot(8). This does
not execute shutdown scripts, i.e. does not terminate daemons, network
connections etc.
- -L |
--load-only
- When that option is specified, the new kernel is only loaded. No reboot is
triggered and "kexec -e" is also not executed.
- -w |
--ignore-whitelist
- Don't check if the detected Linux distribution is on the whitelist of
distributions that have kexec(8) in their shutdown script. Please
don't use that parameter without letting the author know which
distribution you use and how to detect that distribution. Then the
distribution can be added to the whitelist and other users profit from
that experience.
- -l label |
--label label
- Specifies the label that should be booted. Use that option if you already
know which label you want to boot. This option implies
"--quiet".
- -i | --interface
netif
- Uses netif instead of the first (non-loopback and up) interface
that is found. Example: "eth5".
- -n |
--noconfirm
- Don't ask the user for confirmation before booting an entry. Use that
option with care!
- -Y |
--dry-run
- Don't execute call to kexec and don't switch the virtual console before
running "kexec -e". Instead, print the information which program
would be executed with which arguments to standard error.
- -q | --quiet
- Don't display the PXE messages that are added in the PXE configuration
with the say keyword. Also don't display messages which PXE
configuration files the downloader tries to fetch.
- -p |
--print-distribution
- Only prints the detected Linux distribution and exits. For example:
Type : Ubuntu
Name : Ubuntu
Release : 9.04
Codename : jaunty
Description : Ubuntu 9.04
This option is very useful if your distribution is not on the
whitelist of Linux distributions that support kexec(8) in the
reboot scripts and you want to create a bugreport.
This command does not require root privileges.
- -D | --debug
- Enable debugging output. That's good for finding (and fixing!) bugs.
- -d |
--nodelete
- Keep downloaded files.
- -F | --ftp
- Always use FTP instead of TFTP. Useful for servers that share TFTP root
and FTP root. (Passive) FTP has the advantage that it passes firewalls
better than TFTP.
Compared to version 0.1.x, the syntax has changed:
- The default label must now be set with the -l label option
instead of the 2nd argument. Example:
% pxe-kexec mydhcp.mydomain.com SLES10-install-auto
is now
% pxe-kexec -l SLES10-install-auto mydhcp.mydomain.com
- pxe-kexec now uses the reboot mechanism by default: The kernel is loaded,
then the reboot is triggered and the reboot script of the Linux
distribution finally boots the kernel. This has the advantage of a clear
shutdown.
The program keeps a database of Linux distributions that
support kexec-based reboot. If the currently active distribution is not
on the whitelist, an error is printed. (That whitelist can be ignored
with "--ignore-whitelist".)
- To use the previous behaviour, i.e. just execute "kexec -e" in
pxe-kexec at the end, you can still use the "--force" parameter.
Example:
% pxe-kexec mydhcp.mydomain.com
is now
% pxe-kexec --force mydhcp.mydomain.com
- If you want to have the old "dry-run" behaviour back, which in
fact only missed the last "kexec -e" step, you can use the
option "--load-only". Example:
% pxe-kexec --dry-run mydhcp.mydomain.com
is now
% pxe-kexec --load-only mydhcp.mydomain.com
- pxe-kexec
mydhcp.mydomain.com
- Try to fetch the PXE configuration from mydhcp.mydomain.com,
display the say messages from that configuration, prompt for an
entry, letting the user confirm that entry and finally load that entry via
kexec(8) and reboot via reboot(8).
This only works if you distribution supports kexec-based
rebooting, i.e. it is in the internal whitelist.
- pxe-kexec -n
mydhcp.mydomain.com
- Same as the previous example, but omit the final confirmation step.
- pxe-kexec -l
SLES10-install-auto
mydhcp.mydomain.com
- Same as the first example, but don't prompt the user for the label to
boot. Directly boot the SLES10-install-auto label, but letting the
user confirm that he really wants to boot this!
- pxe-kexec -n
-l SLES10-install-auto
mydhcp.mydomain.com
- Same as the previous example, but without confirmation.
- pxe-kexec -f
mydhcp.mydomain.com
- Same as the first example, but execute "kexec -e" at the end
instead of invoking reboot(8).
- pxe-kexec -l
mydhcp.mydomain.com
- Same as the first example, but don't trigger a reboot. Instead, the kernel
is just loaded. If your distribution supports kexec-based rebooting, the
kernel will be loaded on next reboot. You can also run "kexec
-e" manually at any time.
The pxe-kexec program and documentation has been written by
Bernhard Walle <bernhard@bwalle.de>.
This program has no bugs. If you find a feature that should be
removed, please report to <bernhard@bwalle.de> if you don't want to
create an account.