x86電腦的開機流程

本文主要描述裝載x86 CPU的電腦從通電到開機中間經歷了哪些事情,以及各部分的解釋 開機的步驟: 通電 CPU直接從ROM裡面執行BIOS BIOS程式掃描所有硬碟的第一個Sector,找尋boot signature 0x55AA BIOS將bootlader載入記憶體位置0x7C00,並跳過去執行bootloader Bootloader載入kernel Kernel載入其他作業系統需要用到的片段 Bootloader Bootloader是一個小程式,負責將作業系統的kernel載入記憶體並且執行,作業系統的開發者會自己實作bootloader,如Linux的grub,而Windows也有自己的bootloader Bootloader的另一個重要用途 x86的CPU在開機的時候會進入real mode,由於real mode有很多限制,例如只能存取1MB的記憶體空間,且只能跑16位元的程式等等,而protected mode則能存取4GB的記憶體空間,且可以跑32位元的程式,因此bootloader也負責將CPU切換成protected mode BIOS BIOS會將自己從ROM載入到RAM,之後就再RAM裡面執行,初始化一些必要的周邊硬體,例如提供基本的硬碟驅動,以供後續讀取硬碟中的bootloader BIOS包含了一些routines以提供bootloader在載入kernel時使用 BIOS是16位元的程式,也只能執行16位元的程式 BIOS routines通常是標準化的,才能支援各種bootloader 載入bootloader的流程 BIOS會從所有的儲存裝置的第一個sector中的第511與512個byte找尋有標記為開機記號0x55AA的裝置,若找到了有標記的sector,就會將此sector載入到記憶體0x7C00位址,並且跳過去執行

June 11, 2022 · 1 min · Fatz