Linux的啟動過程可分為兩部分:架構/開發版相關的引導過程、後續的通用啟動過程。
引導階段通常使用組合語言撰寫,首先檢查內核是否支持當前架構的處理器,然後檢查是否支持當前的開發版。通過檢查後就跳到下一階段的start_kernel函數做準備了。
主要分成下列兩個步驟
1. 連接內核時使用的虛擬位址,所以需要設置分頁表、關閉所有Cache、MMU。
2. 執行start_kernel裡的工作,包括複製Data Section、清除BSS區段、執行start_kernel函數。
第二階段的關鍵代碼主要使用C語言撰寫。進行了內核初始化的全部工作,像是輸出Linux版本訊息、設置與結構相關的環境、初始化控制台,最後執行rest_init函數啟動init過程,創建系統第一個行程:init行程。