開機區塊(the boot block)
想像一位新進員工在原本空無一物的桌上發現的第一張便利貼:它不包含整本工作手冊,只有剛好足夠的指示說「去那個抽屜,打開那本活頁夾,從那裡開始讀。」當電腦開機時,它的記憶體是空的,根本不知道如何從硬碟載入龐大的作業系統。開機區塊就是那第一張便利貼——一個位於儲存裝置固定位置的微小程式,它唯一的工作就是啟動那條最終會載入完整作業系統的連鎖。
具體來說,當韌體(例如 UEFI 或較舊的 BIOS)完成硬體檢查後,它會讀取所選儲存裝置上一個特定、眾所周知的位置——傳統上是硬碟的最前一個磁區,即開機區塊(在經典 PC 方案中稱為主開機紀錄,MBR)——把它那個小程式載入記憶體並執行。這個微小的開機程式刻意保持簡單,因為它必須塞進一個磁區裡。它的任務通常不是親自載入整個作業系統,而是去找到並載入一個更大、更聰明的開機載入器,後者再於硬碟上定位作業系統核心,把它載入記憶體,並把控制權交給它。這種一步步的交棒,從韌體到開機區塊到開機載入器再到核心,稱為自舉(系統「靠自己的鞋帶把自己拉起來」)。
為什麼重要:開機區塊解決了一個真實的雞生蛋蛋生雞問題——你需要一個程式來載入作業系統,但載入程式通常是作業系統的工作。位於固定位置的微小開機區塊打破了這個僵局,因為它是韌體在沒有作業系統的情況下也永遠知道如何找到並執行的東西。因為它坐落在一個已知的固定位置、並在極早期以完整特權執行,它也是攻擊者經典的目標(開機磁區惡意軟體),以及安全開機設法保護的關鍵——藉由在執行每個階段之前,驗證鏈中那一段是貨真價實、經過簽署的程式碼。
你按下電源鍵。韌體測試硬體,接著把硬碟的第 0 磁區讀進記憶體並跳到那裡。那個微小的開機區塊程式載入開機載入器,後者找到並載入核心,核心最終接手並啟動作業系統——每個階段都交棒給更大、更聰明的下一段。
一個只佔一個磁區的程式,自舉整個作業系統使其運作起來。
開機區塊並不包含作業系統——它只是載入下一階段的微小第一環。因為它在極早期就以完整特權執行,它是惡意軟體的首要目標,這也是安全開機存在、用來驗證每個階段的原因。