當前位置:編程學習大全網 - 編程語言 - 淺談幾種常見的引導方式

淺談幾種常見的引導方式

壹般來說,當電腦啟動時,它所執行的第壹條指令並不是來自安裝在硬盤上的操作系統。換句話說,要想啟動我們熟悉的操作系統,電腦需要首先啟動壹個預程序。完成這壹操作的就是引導程序(Bootloader)。

引導程序通常很小,甚至只是預先寫死在 ROM 中的幾條指令。在機器接收到啟動信號時,引導程序指揮機器去完成配置硬件、尋找系統等壹系列操作。

通常,我們可以根據啟動順序,把引導程序大致分為兩類:

顧名思義,這種引導程序更底層,往往是預置在主板中,我們無法進行更改的。我們經常用到的 BIOS(嚴格來說我們常用到是 BIOS 設置界面,但是在交流中我們經常把設置界面和 BIOS 程序本身劃等號,這裏自然指的是 BIOS 程序)在電腦中就是扮演這個角色。折騰過電腦的人可能有過這樣的經驗,無論電腦是否連接了硬盤,都可以正常進入 BIOS;實際上,更多數遇到的情況是硬盤突然崩了導致開機無法進入系統而自動進入了 BIOS。可見,BIOS 程序的啟動與硬盤無關。

當電腦啟動了 BIOS 後,電腦便開始在硬盤上尋找操作系統了。在硬盤茫茫文件中,電腦是如何精確定位到系統文件的呢?這時就需要硬盤上的二級引導程序。

為了講清二級引導程序,我們需要首先了解幾個關於硬盤的概念。

引導記錄,通常指主引導記錄(MBR),既可以指壹種在硬盤最開始扇區尋找引導程序的引導方式,又可以指在硬盤最開始的壹部分扇區中存放的記錄分區、引導等重要信息的數據。不過為了方便理解,我個人習慣把引導方式稱為“MBR 引導”,把負責記錄引導的相關扇區稱為“主引導記錄(MBR)”,而負責記錄分區的稱為“分區表”。

硬盤的分區我想大家應該都能理解,所謂分區表就是指硬盤的分區方式,相關數據通常存在硬盤最開始的壹部分扇區中。

這裏,分區表又分為兩種類型:

顧名思義,即以 MBR 方式進行分區的分區表類型。在這種方式中,硬盤前部的 64 個扇區存放分區表。由於每個主分區都需要 16 個扇區記錄分區信息,所以 MBR 分區表類型下只能劃分出 4 個主分區。若想劃分更多的分區,只能犧牲最後壹個主分區用作擴展分區,進而劃分邏輯分區。

在這種分區下, 引導信息寫在硬盤前部扇區的 MBR 中,而不是硬盤分區內。 由於扇區大小的限制,引導扇區中的引導程序不能太長。通常情況下都是在引導扇區中寫入壹個簡單的引導程序,再指引電腦在硬盤分區執行下壹步的引導程序。

GUID 是全局唯壹標識分區表(GUID Partition Table)的縮寫,這是為了替代 MBR 分區表而發布的壹個新的標準。在這種分區表類型下,硬盤的容量不再限制於 4TB。同時,GUID 是 EFI(Extensible Firmware Interface,可擴展固件接口)標準中的壹部分,在這種分區表類型下電腦采用了之後會提到的 EFI 執行程序的方式引導系統。

為了簡化理解,我們可以大致總結出如下的對應關系。

: MBR 分區表類型——扇區引導——適用於 BIOS(LEGACY)啟動

: GPT 分區表類型——分區引導——適用於 UEFI 模式啟動

在 MBR 分區表類型中,BIOS 首先搜尋硬盤的引導扇區,在扇區中執行存放的引導指令,指令通常指向並啟動硬盤中引導分區內的引導程序,進而啟動系統。

而在 GPT 分區表類型中,電腦會在 EFI 引導分區(ESP 分區)中尋找 EFI 可執行程序,通常為 Bootx64.efi 或者 Bootia32.efi,這個程序會指向引導程序對應的執行文件,進而引導系統。

目前來看,UEFI 是主流趨勢,BIOS 引導方式已經漸漸淡出了市場。不過由於 BIOS 引導年代流傳下來了很多功能強大的工具,仍然有壹些用戶喜歡用 BIOS 方式引導系統(私人維修店的無良商家居多)。目前市場主流的主板都是符合 UEFI 標準並兼容 BIOS 啟動方式的。

對於 Windows 電腦來說,這顯然時最常見的引導方式。這種引導方式的主引導記錄(MBR)為 Windows NT,直接搜索並啟動第壹個激活的分區。

電腦啟動時,BOOTMGR 會搜索分區中的 bootmgr 內核文件(legacy 下為 ntldr),這個文件會繼續按照 BCD 文件設置的系統參數啟動系統。

Grub 是開源組織 GNU Project 開發的壹個類 Unix 引導系統,通過配置.cfg 文件可以引導多種系統內核。目前大多數 Linux 系統都是用 Grub 作為引導方式。目前 Grub 有以下幾個常用的分支:

基於 Grub 的壹個魔改版,顧名思義,Grub4Dos 是為了兼容 DOS 操作而生。因為其強大的圖形界面定制和多系統引導功能,在盜版 DVD 年代廣為受中國玩家歡迎,那個年代的各種系統修復 PE 工具箱基本都是用 Grub4Dos 編寫的。

但是,Grub4Dos 有個致命的缺陷,那就是它不支持 EFI 啟動,這也是為什麽壹些習慣使用 Grub4Dos 工具箱的私人維修店無良奸商在這個 EFI 主流的年代還會把 Windows 裝成 BIOS 引導啟動。

GNU 團隊開發的第二代 Gurb,目前 Github 上很多大神還在日常維護。很多不懂洋文的人總是以為 Grub2 是 2 代,Grub4Dos 是 4 代所以 Grub4Dos 要比 Grub2 強大,顯然這種刻板印象是可笑的。事實上,Grub2 是筆者目前見過功能最強大的引導程序。兼容 BIOS 和 EFI 兩種啟動方式,基本能夠引導現在所有的操作系統,非常適合作為 U 盤引導工具。

玩過黑蘋果的人壹定不會對 Clover 陌生,除了引導 OS X 以外,它支持 BIOS 和 EFI 兩種啟動模式下引導 Windows、Linux 系統。Clover 的強大之處在於對 OS X 驅動的配置上,針對不同的機型玩家的可操作性很大。不過相比較 Gurb2 而言,Clover 更適合作為電腦系統引導,做 U 盤引導工具就要遜色於 Grub2 了。

syslinux 對於 Linux 系統的引導功能還是很強大的,不過似乎很少有人會去折騰 syslinux 的多系統啟動,多是模塊化之後在 Grub2 中用命令調用。

除此之外,可能還有 rEFInd、WEE、Plop 等引導程序,因為比較小眾,在這裏不做介紹了。

目前來說,EFI 引導方式是主流,不管是多系統啟動還是引導修復,EFI 都要比 BIOS 簡單方便許多。對於有多系統需要的玩家,EFI+Grub2 是壹個比較完善的解決方案。

參考鏈接:

Comparison of boot loaders

: https://en.wikipedia.org/wiki/Comparison_of_boot_loaders

GNU GRUB

: https://www.gnu.org/software/grub/

  • 上一篇:福州大學最牛的專業
  • 下一篇:人口數量直追北京 房價僅排全國第21位,成都憑什麽?
  • copyright 2024編程學習大全網