Kexec

kexeckernel execution,类似于Unix或Linux的系统调用exec英语Exec_(system_call))是Linux内核的一种机制,它允许从当前运行的内核启动新内核。kexec会跳过由系统固件(BIOS或UEFI)执行的引导加载程序阶段和硬件初始化阶段,直接将新内核加载到主内存并立即开始执行。这避免了与完全重新启动相关的漫长时间,并且可以通过最小化停机时间来帮助系统满足高可用性要求。[1][2]

虽然可行,但使用kexec等机制会带来两大挑战:

  • 旧内核的内存被新内核覆盖,而旧内核仍在执行。
  • 新的内核通常希望所有的硬件设备处于一个定义良好的状态,在这种状态下,系统重启后系统固件会将其重置为“正常”状态。绕过真正的重新启动可能会使设备处于未知状态,新内核将不得不从中恢复。

支持仅通过kexec引导已签名的内核已合并到2014年10月5日发布的Linux内核主线的3.17版中。[3] 这不允许Root用户通过kexec加载并执行任意代码,补充了UEFI安全启动和内核安全机制,以确保只有经过签名的Linux内核模块才能被插入正在运行的内核中。[4][5][6]

参见

  • kdump – Linux内核的崩溃转储机制,它在内部使用kexec
  • kGraft英语kGraft – SUSE开发的Linux内核实时修补技术
  • kpatch英语kpatch – 由红帽开发的Linux内核实时修补技术
  • Ksplice – Ksplice公司开发的Linux内核实时修补技术,后来被Oracle收购

参考文献

  1. ^ Hariprasad Nellitheertha. Reboot Linux faster using kexec. IBM. May 4, 2004 [December 5, 2013]. (原始内容存档于2013-01-21). 
  2. ^ David Pendell. Reboot like a racecar with kexec. linux.com. August 16, 2008 [December 5, 2013]. (原始内容存档于2009-02-14). 
  3. ^ Linux kernel 3.17, Section 1.10. Signed kexec kernels. kernelnewbies.org. October 5, 2014 [November 3, 2014]. (原始内容存档于2015-04-03). 
  4. ^ Jake Edge. Reworking kexec for signatures. LWN.net. June 25, 2014 [August 9, 2014]. (原始内容存档于2020-11-12). 
  5. ^ Matthew Garrett. Subverting security with kexec. dreamwidth.org. December 3, 2013 [December 5, 2013]. (原始内容存档于2020-11-12). 
  6. ^ Kees Cook. Live patching the kernel. outflux.net. December 10, 2013 [December 12, 2013]. (原始内容存档于2020-11-12). 

外部链接

  • Using kexec and kdump to get core files on Fedora and CentOS hosts(页面存档备份,存于互联网档案馆(英文)


Linux
Linux内核
争议
Linux发行版
组织
采用
媒体
  • 自由软件杂志英语Free Software Magazine
  • Linux.com
  • Linux Format英语Linux Format
  • Open Source For You英语Open Source For You
  • Linux Gazette英语Linux Gazette
  • Linux Journal英语Linux Journal
  • Linux Magazine英语Linux Magazine
  • LinuxUser英语LinuxUser
    • Ubuntu User英语Ubuntu User
  • Linux Outlaws英语Linux Outlaws
  • Linux Voice英语Linux Voice
  • LugRadio英语LugRadio
  • LWN.net
  • Phoronix
  • 操作系统革命
  • 《代码》(2001年电影)
人物
  • 分类 Linux
  • 分类 Linux内核功能
  • 主题 Linux主題
  • 共享资源页面共享资源
  • 专题 Linux专题
组织
内核
支持
技术
调试
  • CRIU英语CRIU
  • ftrace英语ftrace
  • kdump
  • Linux内核oops
  • SystemTap英语SystemTap
启动过程
ABI
API
用户空间
FS守护进程
封装库
内核部分
系统调用接口
内核内
  • ALSA
  • DRI
  • Video4Linux
  • New API英语New API
  • Crypto API英语Crypto API (Linux)
内核组件
  • 内核模块
  • BlueZ英语BlueZ
  • cgroups
  • 控制台
  • bcache英语bcache
  • 设备映射器
  • dm-cache英语dm-cache
  • dm-crypt
  • DRM
  • EDAC
  • evdev英语evdev
  • 内核同页合并(KSM)
  • LIO
  • 帧缓冲区(Framebuffer)
  • LVM
  • KMS驱动
  • Netfilter
  • Netlink
  • nftables英语nftables
  • 网络调度器
  • perf英语perf (Linux)
  • SLUB
  • zram
  • zswap
  • 安全模块AppArmor
  • Exec Shield英语Exec Shield
  • grsecurity英语grsecurity
    • PaX英语PaX
  • seccomp英语seccomp
  • SELinux
  • Smack
  • TOMOYO Linux英语TOMOYO Linux
  • Linux PAM英语Linux PAM
  • initramfs
  • kexec
  • kGraft英语kGraft
  • kpatch英语kpatch
  • Ksplice
变种
虛擬化
采用
使用范围
采用者
  • Linux采用者列表
  • GENIVI联盟
  • Linux专有软件
人物
  • 分类 分类
  • 共享资源页面 共享资源
  • 维基百科图书 教科书
  • 维基学院页面 学院
  • 主题 主题