MBR 也就是主引導(dǎo)記錄,位于硬盤的 0 磁道、0 柱面、1 扇區(qū)中,主要記錄了啟動引導(dǎo)程序和磁盤的分區(qū)表。我們通過圖 1 來看看 MBR 的結(jié)構(gòu)。
MBR 共占用了一個扇區(qū),也就是 512 Byte。其中 446 Byte 安裝了啟動引導(dǎo)程序,其后 64 Byte 描述分區(qū)表,最后的 2 Byte 是結(jié)束標(biāo)記。我們已經(jīng)知道,每塊硬盤只能劃分 4 個主分區(qū),原因就是在 MBR 中描述分區(qū)表的空間只有 64 Byte。其中每個分區(qū)必須占用 16 Byte,那么 64 Byte 就只能劃分 4 個主分區(qū)。每個分區(qū)的 16 字節(jié)的規(guī)劃如表 2 所示。
存儲字節(jié) | 數(shù)據(jù)內(nèi)容及含義 |
---|---|
第 1 字節(jié) | 引導(dǎo)標(biāo)志 |
第 2 字節(jié) | 本分區(qū)的起始磁道號 |
第 3 字節(jié) | 本分區(qū)的起始扇區(qū)號 |
第 4 字節(jié) | 本分區(qū)的起始柱面號 |
第 5 字節(jié) | 分區(qū)類型,可以識別主分區(qū)和擴展分區(qū) |
第 6 字節(jié) | 本分區(qū)的結(jié)束磁道號 |
第 7 字節(jié) | 本分區(qū)的結(jié)束扇區(qū)號 |
第 8 字節(jié) | 本分區(qū)的結(jié)束柱面號 |
第 9~12 字節(jié) | 本分區(qū)之前已經(jīng)占用的扇區(qū)數(shù) |
第 13~16 字節(jié) | 本分區(qū)的總扇區(qū)數(shù) |
大家注意到了吧,MBR 中最主要的功能就是存儲啟動引導(dǎo)程序。
BIOS 的作用就是自檢,然后從 MBR 中讀取出啟動引導(dǎo)程序。那么,啟動引導(dǎo)程序最主要的作用就是加載操作系統(tǒng)的內(nèi)核。當(dāng)然,每種操作系統(tǒng)的啟動引導(dǎo)程序都是不同的。
每種操作系統(tǒng)的文件格式不同,因此,每種操作系統(tǒng)的啟動引導(dǎo)程序也不一樣。不同的操作系統(tǒng)只有使用自己的啟動引導(dǎo)程序才能加載自己的內(nèi)核。如果我的服務(wù)器上只安裝了一個操作系統(tǒng),那么這個操作系統(tǒng)的啟動引導(dǎo)程序就會安裝在 MBR 中。BIOS 調(diào)用 MBR 時讀取出啟動引導(dǎo)程序,就可以加載內(nèi)核了。
但是在有些時候,我的服務(wù)器中安裝了多個操作系統(tǒng),而 MBR 只有一 個,那么在 MBR 中到底安裝哪個操作系統(tǒng)的啟動引導(dǎo)程序呢?
很明顯,一個 MBR 是不夠用的。每塊硬盤只能有一個 MBR 是不能更改的,所以不可能増加 MBR 的數(shù)量。系統(tǒng)只能在每個文件系統(tǒng)(可以看成分區(qū))中單獨劃分出一個扇區(qū),稱作引導(dǎo)扇區(qū)(Boot Sector)。每個分區(qū)的引導(dǎo)扇區(qū)中也能安裝啟動引導(dǎo)程序,也就是說,在 MBR 和每個單獨分區(qū)的引導(dǎo)扇區(qū)中都可以安裝啟動引導(dǎo)程序。這樣多個操作系統(tǒng)才能安裝在同一臺服務(wù)器中(每個操作系統(tǒng)要安裝在不同的分區(qū)中),而且每個操作系統(tǒng)都是可以啟動的。
還有一個問題,BIOS 只能找到 MBR 中的啟動引導(dǎo)程序,而找不到在分區(qū)的引導(dǎo)扇區(qū)中的啟動引導(dǎo)程序。那么,要想完成多系統(tǒng)啟動,我們的方法是増加啟動引導(dǎo)程序的功能,讓安裝到 MBR 中的啟動引導(dǎo)程序(GRUB)可以調(diào)用在分區(qū)的引導(dǎo)扇區(qū)中的其他啟動引導(dǎo)程序。
因此,啟動引導(dǎo)程序擁有以下功能:
加載操作系統(tǒng)的內(nèi)核。這是啟動引導(dǎo)程序最主要的功能。
擁有一個可以讓用戶選擇的菜單,來選擇到底啟動哪個系統(tǒng)。大家如果在服務(wù)器上安裝過雙 Windows 系統(tǒng),就應(yīng)該見過類似的選擇菜單,不過這個選擇菜單是由 Windows 的啟動引導(dǎo)程序提供的,而不是 GRUB。
可以調(diào)用其他的啟動引導(dǎo)程序,這是多系統(tǒng)啟動的關(guān)鍵。不過需要注意的是,Windows 的啟動引導(dǎo)程序不能調(diào)用 Linux 的啟動引導(dǎo)程序,所以我們一般建議先安裝 Windows,后安裝 Linux,是為了將 Linux 的啟動引導(dǎo)程序安裝到 MBR 中,覆蓋 Windows 的啟動引導(dǎo)程序。
當(dāng)然,這個安裝順序不是絕對的,就算最后安裝了 Windows,我們也可以通過手工再安裝 GRUB 的方法,來保證 MBR 中安裝的還是 Linux 的啟動引導(dǎo)程序。
下圖為我們展示了啟動引導(dǎo)程序的作用。