跳至內容

kexec

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

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]

參見

[編輯]
  • 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). 

外部連結

[編輯]