.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PXE-KEXEC 8" .TH PXE-KEXEC 8 "2019-07-21" "0.2.4" "PXE-Kexec" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" pxe\-kexec \- Read PXE configuration file and kexec entries .SH "SYNOPSIS" .IX Header "SYNOPSIS" pxe-kexec [options] [\fItftp_server\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" .SS "Overview" .IX Subsection "Overview" \&\fBpxe-kexec\fR is a tool that fetches \s-1PXE\s0 configuration from a \s-1TFTP\s0 server, reads that \s-1PXE\s0 configuration file, prompts the user for an boot entry, downloads the specified kernel and initrd and finally tries to boot the kernel. .PP The normal process to boot with \fBkexec\fR\|(8) is that pxe-kexec loads the kernel and invokes \fBreboot\fR\|(8). The shutdown script of the Linux distribution then executes \*(L"kexec \-e\*(R" 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 \&\*(L"\-\-igore\-whitelist\*(R" parameter. You can also use the \*(L"\-\-force\*(R" parameter to execute \*(L"kexec \-e\*(R" to immediately boot the selected kernel, without invoking \fBshutdown\fR\|(8)/\fBreboot\fR\|(8). .PP pxe-kexec meant to be used in an environment where pre-defined \s-1PXE\s0 configurations exist but the user wants to use \fBkexec\fR\|(8) instead of rebooting. .PP Normally, the \fItftp_server\fR must be specified as first argument. If there's no \s-1TFTP\s0 server specified, pxe-kexec looks in the \s-1DHCP\s0 info file for the \&\s-1DHCP\s0 server and uses this one as \s-1TFTP\s0 server. This only works when the \s-1TFTP\s0 server is running on the same machine as the \s-1DHCP\s0 server. .PP \&\fB==> Please also read the section called \*(L"Update Info\*(R" <==\fR .SS "Whitelist" .IX Subsection "Whitelist" As mentioned previously, a whitelist of Linux distributions that support kexec-based rebooting is maintained. Currently following distributions are on the whitelist: .IP "\(bu" 7 openSUSE, starting with version 11.0 .IP "\(bu" 7 Ubuntu, starting with version 9.04 .IP "\(bu" 7 Red Hat Enterprise Linux and CentOS, starting with version 5.3 .IP "\(bu" 7 Fedora Linux, starting with version 11 .IP "\(bu" 7 \&\s-1ARCH\s0 Linux .PP Don't hesitate to send the author an email to add the distribution to the whitelist. Please include the output of \*(L"pxe-kexec \-\-print\-distribution\*(R" in that mail. .SH "OPTIONS" .IX Header "OPTIONS" Following options can be specified: .IP "\fB\-h\fR | \fB\-\-help\fR" 7 .IX Item "-h | --help" Prints a short help. .IP "\fB\-v\fR | \fB\-\-version\fR" 7 .IX Item "-v | --version" Prints the version number to standard output. .IP "\fB\-f\fR | \fB\-\-force\fR" 7 .IX Item "-f | --force" Immediately load the kernel without invoking \fBreboot\fR\|(8). This does not execute shutdown scripts, i.e. does not terminate daemons, network connections etc. .IP "\fB\-L\fR | \fB\-\-load\-only\fR" 7 .IX Item "-L | --load-only" When that option is specified, the new kernel is only loaded. No reboot is triggered and \*(L"kexec \-e\*(R" is also not executed. .IP "\fB\-w\fR | \fB\-\-ignore\-whitelist\fR" 7 .IX Item "-w | --ignore-whitelist" Don't check if the detected Linux distribution is on the whitelist of distributions that have \fBkexec\fR\|(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. .IP "\fB\-l\fR \fIlabel\fR | \fB\-\-label\fR \fIlabel\fR" 7 .IX Item "-l label | --label label" Specifies the label that should be booted. Use that option if you already know which \fIlabel\fR you want to boot. This option implies \*(L"\-\-quiet\*(R". .IP "\fB\-i\fR | \fB\-\-interface\fR \fInetif\fR" 7 .IX Item "-i | --interface netif" Uses \fInetif\fR instead of the first (non-loopback and up) interface that is found. Example: \*(L"eth5\*(R". .IP "\fB\-n\fR | \fB\-\-noconfirm\fR" 7 .IX Item "-n | --noconfirm" Don't ask the user for confirmation before booting an entry. Use that option with care! .IP "\fB\-Y\fR | \fB\-\-dry\-run\fR" 7 .IX Item "-Y | --dry-run" Don't execute call to kexec and don't switch the virtual console before running \*(L"kexec \-e\*(R". Instead, print the information which program would be executed with which arguments to standard error. .IP "\fB\-q\fR | \fB\-\-quiet\fR" 7 .IX Item "-q | --quiet" Don't display the \s-1PXE\s0 messages that are added in the \s-1PXE\s0 configuration with the \fIsay\fR keyword. Also don't display messages which \s-1PXE\s0 configuration files the downloader tries to fetch. .IP "\fB\-p\fR | \fB\-\-print\-distribution\fR" 7 .IX Item "-p | --print-distribution" Only prints the detected Linux distribution and exits. For example: .Sp .Vb 5 \& Type : Ubuntu \& Name : Ubuntu \& Release : 9.04 \& Codename : jaunty \& Description : Ubuntu 9.04 .Ve .Sp This option is very useful if your distribution is not on the whitelist of Linux distributions that support \fBkexec\fR\|(8) in the reboot scripts and you want to create a bugreport. .Sp This command does not require root privileges. .IP "\fB\-D\fR | \fB\-\-debug\fR" 7 .IX Item "-D | --debug" Enable debugging output. That's good for finding (and fixing!) bugs. .IP "\fB\-d\fR | \fB\-\-nodelete\fR" 7 .IX Item "-d | --nodelete" Keep downloaded files. .IP "\fB\-F\fR | \fB\-\-ftp\fR" 7 .IX Item "-F | --ftp" Always use \s-1FTP\s0 instead of \s-1TFTP.\s0 Useful for servers that share \s-1TFTP\s0 root and \&\s-1FTP\s0 root. (Passive) \s-1FTP\s0 has the advantage that it passes firewalls better than \s-1TFTP.\s0 .SH "UPDATE INFO" .IX Header "UPDATE INFO" .SS "Updating from 0.1.x to 0.2" .IX Subsection "Updating from 0.1.x to 0.2" Compared to version 0.1.x, the syntax has changed: .IP "\(bu" 7 The default label must now be set with the \fB\-l\fR \fIlabel\fR option instead of the 2nd argument. Example: .Sp .Vb 1 \& % pxe\-kexec mydhcp.mydomain.com SLES10\-install\-auto .Ve .Sp is now .Sp .Vb 1 \& % pxe\-kexec \-l SLES10\-install\-auto mydhcp.mydomain.com .Ve .IP "\(bu" 7 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. .Sp 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 \*(L"\-\-ignore\-whitelist\*(R".) .IP "\(bu" 7 To use the previous behaviour, i.e. just execute \*(L"kexec \-e\*(R" in pxe-kexec at the end, you can still use the \*(L"\-\-force\*(R" parameter. Example: .Sp .Vb 1 \& % pxe\-kexec mydhcp.mydomain.com .Ve .Sp is now .Sp .Vb 1 \& % pxe\-kexec \-\-force mydhcp.mydomain.com .Ve .IP "\(bu" 7 If you want to have the old \*(L"dry-run\*(R" behaviour back, which in fact only missed the last \*(L"kexec \-e\*(R" step, you can use the option \*(L"\-\-load\-only\*(R". Example: .Sp .Vb 1 \& % pxe\-kexec \-\-dry\-run mydhcp.mydomain.com .Ve .Sp is now .Sp .Vb 1 \& % pxe\-kexec \-\-load\-only mydhcp.mydomain.com .Ve .SH "EXAMPLES" .IX Header "EXAMPLES" .IP "\fBpxe-kexec \f(BImydhcp.mydomain.com\fB\fR" 7 .IX Item "pxe-kexec mydhcp.mydomain.com" Try to fetch the \s-1PXE\s0 configuration from \fImydhcp.mydomain.com\fR, display the \fIsay\fR messages from that configuration, prompt for an entry, letting the user confirm that entry and finally load that entry via \fBkexec\fR\|(8) and reboot via \fBreboot\fR\|(8). .Sp This only works if you distribution supports kexec-based rebooting, i.e. it is in the internal whitelist. .IP "\fBpxe-kexec \-n \f(BImydhcp.mydomain.com\fB\fR" 7 .IX Item "pxe-kexec -n mydhcp.mydomain.com" Same as the previous example, but omit the final confirmation step. .IP "\fBpxe-kexec \-l \f(BISLES10\-install\-auto\fB \f(BImydhcp.mydomain.com\fB \fR" 7 .IX Item "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 \fISLES10\-install\-auto\fR label, but letting the user confirm that he really wants to boot this! .IP "\fBpxe-kexec \-n \-l \f(BISLES10\-install\-auto\fB \f(BImydhcp.mydomain.com\fB\fR" 7 .IX Item "pxe-kexec -n -l SLES10-install-auto mydhcp.mydomain.com" Same as the previous example, but without confirmation. .IP "\fBpxe-kexec \-f \f(BImydhcp.mydomain.com\fB\fR" 7 .IX Item "pxe-kexec -f mydhcp.mydomain.com" Same as the first example, but execute \*(L"kexec \-e\*(R" at the end instead of invoking \fBreboot\fR\|(8). .IP "\fBpxe-kexec \-l \f(BImydhcp.mydomain.com\fB\fR" 7 .IX Item "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 \*(L"kexec \-e\*(R" manually at any time. .SH "AUTHOR" .IX Header "AUTHOR" The \fBpxe-kexec\fR program and documentation has been written by Bernhard Walle . .SH "BUGS" .IX Header "BUGS" This program has no bugs. If you find a feature that should be removed, please report to if you don't want to create an account. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBkexec\fR\|(8)