"橫霸霸"

2008年9月11日 星期四

揭開MBR的神秘面紗

對於曾經因為硬碟的因素無法順利開機的人來說,或許用過「Fidsk / mbr」的指令參數,來解決電腦無法開機的問題,進而對Fdisk的隱藏參數「MBR」感到好奇。 

想要知道
MBR是什麼,以及它為什麼能夠解決電腦無法開機的問題時,我們得從電腦的開機過程說起。 

在IBM PC相容的電腦系統上,電腦開機第一個執行的程式,就是我們常常聽到的BIOSBasic Input / Output System基本輸出 / 入系統)。事實上,BIOS就是主機板上一顆Flash ROM晶片,裡頭儲存了提供電腦基本操作的服務程式,而這些服務程式我們又稱為「韌體Firmware)」,因此,我們可以利用特殊的工具程式,更新Flash ROM晶片裡頭所儲存的服務程式,來提昇、修正BIOS的功能。 

BIOS開始執行的時候,它會先進行電腦系統的「自我檢測POST;Power On Self Test)」動作,來確認電腦上所安裝、連接的硬體設備都可以正常運作。完成自我檢測的動作後,接下來,BIOS將試著從軟碟機,讀取磁碟片上第一個磁區(Boot Sector啟動磁軌)的資料,來啟動電腦進入作業系統。這時候,如果軟碟機中沒有可以開機的磁碟片時,BIOS就會讀取硬碟上第一個磁區「MBRMaster Boot Record;主要啟動記錄)」的資料,來啟動電腦進入作業系統。 
所以,BIOS必須先找到MBR啟動磁區的資料,並且,將這份資料載入0000:7C00的記憶體位置後,電腦才能夠繼續載入作業系統的開機記錄,進入該作業系統,來完成電腦整個開機的過程。知道MBR是在硬碟開機過程中,最重要的一份資料後,接下來,我們再來看看這份資料到底記錄了哪些資訊,使得它成為硬碟開機過程中,最重要的一份資料。 儲存在硬碟第0面、第0軌、第1磁區的MBR,在512 Bytes大小的磁區空間中,所儲存的資訊,可以分成三個部分。 

第一個部分是程式區Boot Partition Loader;BPL,或者是Pre-Loader、Pre-Boot)」,它儲存在000h到1BDh,共446 Bytes的磁區範圍中,主要是負責載入作業系統分割區的啟動磁區Boot Sector」,然後,再將電腦控制權交給啟動磁區,繼續載入作業系統的開機過程。 

由於程式區是在BIOS之後,最先被電腦載入執行的區域,所以,像是多重開機管理程式、開機型病毒,以及硬碟資料加密軟體,都是利用安裝或感染程式區的方式,在載入作業系統之前先取得操控電腦的控制權。 

因此,當你沒有依照正確的方式,移除多重開機管理程式、硬碟資料加密軟體,或者是感染開機型病毒,造成硬碟無法正常開機時,就可以利用Fdisk / mbr的指令,重新建立程式區的資料,來解決無法開機的問題。 

第二個部分是
資料區Partition Data)」,它儲存在1BEh到1FDh,共64 Bytes的磁區範圍中,而在這64 Bytes範圍中,又劃分成四個區域,來儲存四個硬碟分割區的資料,這也就是為什麼在使用Fdisk規劃硬碟分割區的時候,最多只能規劃四個「主要分割磁區Primary Partition)」,或者是三個主要分割磁區和一個擴充分割磁區Extended Partition)」的原因。 

也因為MBR包含了硬碟分割區Partition Table的資料,所以,當硬碟儲存MBR
的磁區損壞時,就算是其它磁區都完好如初,這顆硬碟也無法拿來開機,或者是讀取硬碟上任何的資料。 

第三個部分是驗證區Verify Data)」,儲存在1FEh到1FFh的2 Bytes範圍中,它是以「55AA」的字串數值來標記、驗證從000h到1FFh整個磁區範圍的資料,是否為MBR磁區而已。

沒有留言: