kexec
kexec(kernel execution,類似於Unix或Linux的系統呼叫exec)是Linux核心的一種機制,它允許從當前執行的核心啟動新核心。kexec會跳過由系統韌體(BIOS或UEFI)執行的引導載入程式階段和硬體初始化階段,直接將新核心載入到主主記憶體並立即開始執行。這避免了與完全重新啟動相關的漫長時間,並且可以通過最小化停機時間來幫助系統滿足高可用性要求。[1][2]
雖然可行,但使用kexec等機制會帶來兩大挑戰:
- 舊核心的主記憶體被新核心覆蓋,而舊核心仍在執行。
- 新的核心通常希望所有的硬體裝置處於一個定義良好的狀態,在這種狀態下,系統重新啟動後系統韌體會將其重設為「正常」狀態。繞過真正的重新啟動可能會使裝置處於未知狀態,新核心將不得不從中恢復。
支援僅通過kexec引導已簽章的核心已合併到2014年10月5日發布的Linux核心主線的3.17版中。[3] 這不允許Root使用者通過kexec載入並執行任意代碼,補充了UEFI安全啟動和核心安全機制,以確保只有經過簽章的Linux核心模組才能被插入正在執行的核心中。[4][5][6]
參見
參考文獻
- ^ Hariprasad Nellitheertha. Reboot Linux faster using kexec. IBM. May 4, 2004 [December 5, 2013]. (原始內容存檔於2013-01-21).
- ^ David Pendell. Reboot like a racecar with kexec. linux.com. August 16, 2008 [December 5, 2013]. (原始內容存檔於2009-02-14).
- ^ Linux kernel 3.17, Section 1.10. Signed kexec kernels. kernelnewbies.org. October 5, 2014 [November 3, 2014]. (原始內容存檔於2015-04-03).
- ^ Jake Edge. Reworking kexec for signatures. LWN.net. June 25, 2014 [August 9, 2014]. (原始內容存檔於2020-11-12).
- ^ Matthew Garrett. Subverting security with kexec. dreamwidth.org. December 3, 2013 [December 5, 2013]. (原始內容存檔於2020-11-12).
- ^ Kees Cook. Live patching the kernel. outflux.net. December 10, 2013 [December 12, 2013]. (原始內容存檔於2020-11-12).
外部連結