kexec, abbreviated from ''kernel execute'' and analogous to the Unix/Linux kernel call ''
exec'', is a mechanism of the
Linux kernel
The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ...
that allows booting of a new
kernel
Kernel may refer to:
Computing
* Kernel (operating system), the central component of most operating systems
* Kernel (image processing), a matrix used for image convolution
* Compute kernel, in GPGPU programming
* Kernel method, in machine lea ...
from the currently running one. Essentially, kexec skips the
bootloader stage and
hardware initialization phase performed by the system
firmware
In computing, firmware is a specific class of computer software that provides the low-level control for a device's specific hardware. Firmware, such as the BIOS of a personal computer, may contain basic functions of a device, and may provide ...
(
BIOS
In computing, BIOS (, ; Basic Input/Output System, also known as the System BIOS, ROM BIOS, BIOS ROM or PC BIOS) is firmware used to provide runtime services for operating systems and programs and to perform hardware initialization during the ...
or
UEFI
UEFI (Unified Extensible Firmware Interface) is a set of specifications written by the UEFI Forum. They define the architecture of the platform firmware used for booting and its interface for interaction with the operating system. Examples ...
), and directly loads the new kernel into
main memory and starts executing it immediately. This avoids the long times associated with a full reboot, and can help systems to meet high-availability requirements by minimizing
downtime.
While feasible, implementing a mechanism such as kexec raises two major challenges:
* Memory of the currently running kernel is overwritten by the new kernel, while the old one is still executing.
* The new kernel will usually expect all hardware devices to be in a well defined state, in which they are after a system reboot because the system firmware resets them to a "sane" state. Bypassing a real reboot may leave devices in an unknown state, and the new kernel will have to recover from that.
Support for allowing only
signed kernels to be booted through kexec was merged into version 3.17 of the
Linux kernel mainline, which was released on October 5, 2014. This disallows a
root user
In computing, the superuser is a special user account used for system administration. Depending on the operating system (OS), the actual name of this account might be root, administrator, admin or supervisor. In some cases, the actual name of t ...
to load arbitrary code via kexec and execute it, complementing the
UEFI secure boot and in-kernel security mechanisms for ensuring that only signed
Linux kernel modules can be inserted into the running kernel.
Kexec is used by
LinuxBoot to boot the main kernel from the Linux kernel located in the firmware.
See also
*
kdump (Linux) Linux kernel's crash dump mechanism, which internally uses kexec
*
Kernel relocation Linux feature in which a kernel can be compiled to be bootable at a variety of different memory addresses
*
kGraft Linux kernel live patching technology developed by SUSE
*
kpatch Linux kernel live patching technology developed by Red Hat
*
Ksplice Linux kernel live patching technology developed by Ksplice, Inc. and later bought by Oracle
References
Linux kernel features
Linux kernel live patching
{{Linux-stub