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

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

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

参见

参考文献

  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). 

外部链接