系統引導過程概述以&MBR,PBR,BIOS,boot loader各個名詞解析

前情:

因爲個人的需要,要在mac上安裝三個系統,mac+win10+ubuntu。

mac上安裝多系統實現多引導的情況比一般電腦的複雜,其中的理論知識會牽涉到各種各樣的名詞,什麼GUID、GPT、EFI 之類的……在安裝以前,需要複習一下基本的計算機知識,於是準備寫兩篇博文,上篇介紹基本的磁盤分區,MBR、PBR、BIOS以及系統引導的過程,下篇介紹mac下關於GUID、GPT、EFI,以及如何實現三系統。

這篇文章是上篇:系統引導過程概述以&MBR,PBR,BIOS各個名詞解析

知識補充:

1、磁盤的組成:

磁盤的組成(主要有盤片,機械手臂,磁頭與主軸馬達所組成),而數據的寫入其實在盤片上面。盤片又可以細分出扇區(sector)、柱面(cylinder)兩種單位,其中扇區每個爲512bytes。

整塊磁盤的第一個扇區特別重要,因爲它記錄了整塊磁盤的重要信息,分別是:

1).主引導程序即主引導記錄(MBR,Master Boot Record)(佔446個字節)
放置引導加載程序的地方。其中引導加載程序(boot loader)除了可以安裝在MBR,還可以安裝在PBR(下面解釋)
2).磁盤分區表項(DPT,Disk Partition Table)  (佔64個字節)
每條分區記錄佔16字節,因此最多容納4個分區記錄,它們有主分區(primary)和擴展分區(extend)構成。其中擴展分區最多只能有一條。但這並代表整個磁盤只能分四個區,當分區多餘四個的時候,前三個爲主分區,剩下的分區由擴展分區繼續分區出來,也叫邏輯分區(logical)。記住能夠格式化的只要主分區和邏輯分區,擴展分區不能格式化。


3).結束標誌(佔2個字節)
其值爲AA55,存儲時低位在前,高位在後,即看上去是55AA(十六進制)。

通常,我們將包含MBR引導代碼的扇區稱爲主引導扇區。因這一扇區中,引導代碼佔有絕大部分的空間,故而將習慣將該扇區稱爲MBR扇區(簡稱MBR),同樣也是512個字節大小。


2、磁盤的分區

在每個分區裏,又有兩個重要概念:

1)PBR,即 Partition Boot Record ,位置在每個磁盤分區的開始部分,佔用扇區不定,所在的扇區又叫做當前分區的(boot sector)。這個扇區一般保存着操作系統引導程序(boot loader)的所在位置。下圖的紅色部分。那既然MBR裏已經有boot loader了,爲什麼又要設一個PBR裏再保存boot loader呢?原因是不同操作系統文件格式不一樣,每種操作系統都有自己的boot loader,用自己的boot loader才能載入自己的內核文件。因此,每個操作系統默認是會安裝一套boot loader到自己的分區的PBR中,且可以選擇是否也安裝到MBR上。如果選擇安裝到MBR的話,理論上在MBR和PBR裏都有一份boot loader程序。
2)文件系統,File System ,操作系統對磁盤的所有操作都需要經過文件系統,刪除文件指的是在文件系統裏刪除文件的索引條目,創建文件就是在在文件系統裏添加索引條目並將具體數據寫入磁盤。常見的文件系統格式有: FAT exFAT NTFS HFS+ 。文件系統位置一般在PBR之後。下圖黃色部分。


3、BIOS與CMOS

CMOS是記錄各項硬件參數且嵌入主板上的存儲器,在系統啓動時需要讀取裏面的設置。BIOS則是一個寫入到主板上的一個韌體(即寫入到硬件上的一個軟件程序),這個BIOS就是在開機的時候計算機系統會主動執行的第一個程序。

4、boot loader

上面提了那麼多次的boot loader,那麼boot loader主要完成什麼工作呢?而且系統的MBR只有一份,要怎麼執行boot sector裏面的loader呢?boot loader的主要功能如下:

1)提供菜單:用戶可以選擇不同的啓動選項,這也是多重引導的重要功能!選擇不同的內核來啓動。

2)加載內核文件:直接指向可啓動的程序區段來開始操作系統。

3)轉交其他loader:將引導裝載功能轉交給其他loader負責。可以加載其他boot sector內的boot loader。

常見的boot loader有linux下的grub,windows的bootmgr。

系統引導過程

1、傳統BIOS引導過程:

計算機器開機後,固化在 ROM 裏的 BIOS 就會被加載到內存運行,BIOS 自檢完畢以後加載 COMS 的參數,通過 COMS 的參數, BIOS 程序加載啓動磁盤的 MBR 到內存裏運行。通過運行 MBR 的代碼,記錄在 MBR 分區表中,標記爲活動分區的磁盤分區 PBR 被加載到內存。與 MBR 類似,PBR 在運行後加載操作系統的引導程序到內存運行,例如 Windows 的 bootmgr 。當引導程序運行後,操作系統內核就被加載運行,完成從 BIOS 程序中接手的引導流程。

2、linux啓動流程一覽:

這裏深入地補充一下linux的啓動具體流程:
    (1)加載 BIOS 的硬件資訊與進行自我測試,並依據配置取得第一個可啓動的裝置;
    (2)讀取並運行第一個啓動裝置內 MBR 的 boot Loader (亦即是 grub, spfdisk 等程序);
    (3)依據 boot loader 的配置加載 Kernel ,Kernel 會開始偵測硬件與加載驅動程序;
    (4)在硬件驅動成功後,Kernel 會主動呼叫 init 程序,而 init 會取得 run-level 資訊;
    (5)init 運行 /etc/rc.d/rc.sysinit 文件來準備軟件運行的作業環境 (如網絡、時區等);
    (6)init 運行 run-level 的各個服務之啓動 (script 方式);
    (7)init 運行 /etc/rc.d/rc.local 文件;
    (8)init 運行終端機模擬程序 mingetty 來啓動 login 程序,最後就等待使用者登陸啦;

3、windows和linux雙系統引導:

由於boot loader可以將控制權轉交其他lodaer,將引導裝載功能轉給其他loader負責,可以實現多重引導。

像windows和linux在安裝的時候,都會主動將MBR和自己所在分區的PBR裏。不過windows的loader默認不具有控制權轉交功能,因此不能使用windows的loader來加載linux的loader。如果先安裝linux再安裝windows,windows覆蓋了MBR中linux的boot loader,且不給linux的boot loader做轉交,就不能實現雙引導啓動了。這也就是爲什麼要先安裝windows,再安裝linux了。

                       


參考:

《鳥哥的linux私房菜》基礎篇

【Mac技術組】Mac 系統引導過程概述 & BootCamp 的祕密

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章