iT邦幫忙

DAY 6
7

檔案系統的設計與效能系列 第 6

檔案系統的設計與效能 - 外篇: 磁碟中的MBR與Bootloader

上回在"磁碟系統的運作"那篇中有提到檔案系統的資訊是記錄在磁碟的每個partition中的第一個sector,又稱superblock;而partition的資訊則是記錄在磁碟系統中第一個sector(第1片磁碟,第0軌的第1個sector),又稱MBR。所以稱MBR是磁碟系統運作最重要的地方也不為過了。
上回在"磁碟系統的運作"那篇中有提到檔案系統的資訊是記錄在磁碟的每個partition中的第一個sector,又稱superblock;而partition的資訊則是記錄在磁碟系統中第一個sector(第1片磁碟,第0軌的第1個sector),又稱MBR。所以稱MBR是磁碟系統運作最重要的地方也不為過了。

MBR除了記載partition的資訊之外,更重要的是肩負開機任務的bootloader。在電腦電源打開之後BIOS會將bootloader的內容載入記憶體執行,而這裡面的程式的工作就是連結到作業系統所產生的開機磁區,接著就是一步步的開機動作:

  1. 載入預設的檔案系統,這個動作可以賦予開機程式取得系統核心的能力。
  2. 掛載作業系統核心,核心會進行檔案系統與硬體的初始化、載入系統模組、驅動程式等等。
  3. 切換到使用者操作的介面,完成整個開機動作。

現在的電腦可以安裝多個不同的作業系統,再透過多重開機的方式來切換。多重開機的原理,是在開機程式中記載每個作業系統核心所在的分割區,並提供介面讓使用者選擇要載入那個作業系統的核心。不同的作業系統必須安裝在不同的partition,而每個partition的superblock(在此又被稱為 boot sector)都可以安裝開機程式,所以支援多重開機的作業系統如Linux的開機管理程式--GRUB可以在bootloader之後,取得開機程式的設定,讓使用者直接選定他所需要的核心來開機。而在Windows作業系統中,由於他的開機程式無法辨識其他可開機的boot sector,所以他可以藉由如GRUB來指向他以進行多重開機。

我們舉例來說明,假如你的硬碟有三個分割區,依序分別安裝著Windows XP、Fedora Linux與SUSE Linux。這時Windows XP的開機程式會安裝在MBR中的bootloader區域,而Fedora與SUSE你可以皆在他們所在partition的boot secotor中安裝GRUB以供開機選擇,或是僅安裝其一Linux的開機程式即可。因為GRUB可以辨識增包括Windows XP在內的開機區,我們只需將開機區的資訊記錄到GRUB程式的設定檔grub.conf中即可。

在這篇文章中有一個有趣的問題點,就是在開機之前沒有檔案系統的情況下,如何在磁碟中找到作業系統的核心並且把他載入執行? 畢竟搜尋與讀取的工作是檔案系統的職責。魔法就在開機程式中,開機程式有預設的檔案系統(例如GRUB中的stage 1.5),足以以讓開機程式載入核心。


上一篇
檔案系統的設計與效能 - 磁碟結構對檔案系統效能的影響
下一篇
檔案系統的設計與效能 - 讓磁碟與檔案系統更有彈性的LVM
系列文
檔案系統的設計與效能32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
SunAllen
iT邦研究生 1 級 ‧ 2010-10-09 20:05:33

裝server 的時候,最討厭遇到的問題,就是MBR...

chiounan iT邦研究生 1 級 ‧ 2010-10-09 20:33:59 檢舉

收到太陽大的回應,好像是親眼收到偶像的簽名一樣,真是好High呀。臉紅開心

SunAllen iT邦研究生 1 級 ‧ 2010-10-09 20:54:03 檢舉

chiounan 提到:
好High呀

我剛玩大富翁,又沒逃掉,損失17xxxx,也是滿High的...Orz

MBR真的很討厭,尤其是同樣的硬碟,裝過不同的平台的OS...

0
fillano
iT邦超人 1 級 ‧ 2010-10-09 22:59:01

chiounan提到:
我們舉例來說明,假如你的硬碟有三個分割區,依序分別安裝著Windows XP、Fedora Linux與SUSE Linux。這時Windows XP的開機程式會安裝在MBR中的bootloader區域,而Fedora與SUSE你可以皆在他們所在partition的boot se...(恕刪)

這樣講怪怪的...基本上在mbr裝了xp的bootloader,他也只認得windows的partition跟如何載入。如果要讓XP有能力多重開機進入Linux,常常會用grub4dos,xp的作業系統載入程式,可以在boot.ini設定後,載入不同的image檔案,利用grub4dos的image檔案,就可以在xp開機時用選單進入grub,再由grub載入不同partition的linux kernel。

如果在mbr安裝的是windows的bootloader的話,他的功能很簡單,大概就是檢查在partition table中標示為active的分割區的第一個sector中是否有該有的signature,然後把他載入記憶體(我沒記錯的話)。然後boot sector中的程式會載入ntldr等等...不過太久沒看這些,不知道記得東西對不對哈哈

我要留言

立即登入留言