Kexec

kexec （ kernel execution ， 類似於Unix或Linux的系統調用 ） 是Linux內核的一種機制 ， 它允許從當前運行的內核啓動新內核 。 kexec會跳過由系統固件 （ BIOS或UEFI ） 執行的引導加載程序階段和硬件初始化階段 ， 直接將新內核加載到主內存並立即開始執行 。 這避免了與完全重新啓動相關的漫長時間 ， 並且可以通過最小化停機時間來幫助系統滿足高可用性要求 。 雖然可行 ， 但使用kexec等機制會帶來兩大挑戰 ： 舊內核的內存被新內核覆蓋 ， 而舊內核仍在執行 。 新的內核通常希望所有的硬件設備處於一個定義良好的狀態 ， 在這種狀態下 ， 系統重啓後系統固件會將其重置爲 “ 正常 ” 狀態 。 繞過真正的重新啓動可能會使設備處於未知狀態 ， 新內核將不得不從中恢復 。 支持僅通過kexec引導已簽名的內核已合併到2014年10月5日發佈的Linux內核主線的 3.17 版中 。 這不允許Root用戶通過kexec加載並執行任意代碼 ， 補充了UEFI安全啓動和內核安全機制 ， 以確保只有經過簽名的Linux內核模塊才能被插入正在運行的內核中 。