硬盤分區、系統引導等基本問題的總結

轉載自:http://damon007.blogbus.com/logs/75809017.html

一直以來對主分區、擴展分區、邏輯分區、活動分區、引導程序以及它們之間的聯繫都只是一知半解,沒有好好去研究過,爲了想熟悉下在linux下的開發環境,想裝個linux,爲此重新蒐集下資料整理下我對上面一些概念的理解。

首先,必須認識硬盤主引導記錄MBR(Master Boot Record),一塊硬盤的命根:

MBR剖析

從上圖可知,MBR包括三部分:引導程序(Bootloader)、分區表(Partition table)和Mageic Number三部分組成。其中分區表大小爲64個字節,而每個分區信息需要16個字節,因此,以前的硬盤只能記錄四個分區的信息,這在現實應用中是遠遠不夠的,所以就出現了擴展分區和邏輯分區的概念。所謂擴展分區其實就是把先前MBR分區表裏面的其中一個,但是用來作爲邏輯分區(D盤、E盤等分區)的索引,存放邏輯分區的分區信息。相對而言,另外三個分區就被叫爲主分區(當然一盤硬盤不一定三個主分區都同時存在的,通常只是一個主分區,一個擴展分區,然後n個邏輯分區)。再說下活動分區吧,活動分區僅僅是在分區表中,16個字節的最前面含有80標誌的分區信息所定義的分區。因爲擴展分區的格式已經變了,所以活動分區必須是基本磁盤上的主要分區。一塊硬盤可以有多個主分區,但每一個時刻只能有一個活動分區。

再來看下引導部分,系統系統啓動階段依賴於引導 Linux 系統上的硬件。在嵌入式平臺中,當系統加電或重置時,會使用一個啓動環境。當系統啓動時就會調用MBR裏面的引導程序。引導程序會搜索當前的活動分區,並把控制權交給這個分區的引導區(此處不是MBR,每個分區都包含有自己分區的引導信息)。至於引導程序通常有ntload和Grub,而GRUB就要強大得多了,它不但可以完成ntload的動作(即引導windows),而且可以引導linux、Mac OS,solaris,free BSD等等,而且可以在出錯時報錯,並提供簡單的用戶交互(命令行)。

因此,可以理解是引導程序先引導到活動分區的引導信息,再由活動分區的引導信息引導到相應的操作系統。所以說通常情況下的雙系統(如C盤爲活動分區,第二個系統裝到邏輯分區的d盤),是指第二個系統的引導信息保存在第一個系統(活動分區上的系統)所在的分區引導信息上。於是就可以理解下面兩個例子:

1.假設一塊硬盤上有A,B,C三個主分區,它們都是能被激活爲活動分區的。

現假設A爲激活狀態,然後在A,B,C三個分區上分別裝1個系統。則三個分區都是系統分區,但由於安裝時,只有A是活動分區,則三個系統的引導信息都只會寫入分區A的PBR中。結果是你會發現啓動電腦後,引導菜單中你可以隨意地選擇進入哪個分區。當然,如果B或C只是一個擴展分區,但由於引導信息依舊是在A分區中,所以也可以通過啓動菜單引導。這時候,如果吧B或C激活,變爲活動分區,重啓系統後你就會發現找不到啓動分區的提示。因爲引導信息只記錄在A分區PBR中,B和C分區沒有引導信息,因此無法進入任何一個分區。

如果在安裝系統的時候,在相應分區安裝系統前,都把該分區激活(即A分區裝系統前激活A分區,B分區裝系統前激活B分區,C分區裝系統前激活C分區)。這樣,A,B,C三個分區的系統的引導信息,就會單獨記錄到各自的分區中。結果表現爲:當A爲活動分區時,啓動電腦,只會引導到A分區的系統;把B分區激活,則只會引導到B分區的系統,C分區激活就只引導至C分區的系統。三者是相互獨立的,通過激活分區的方式來選擇進入不同的系統。

2.問題:情況是這樣的,本人電腦硬盤的主分區是xp系統,其他的分區都是邏輯分區,嘗試用用PM磁盤管理也無法劃分任何一個邏輯分區成爲主分區,這樣一來我是否就不能安裝win7系統了嗎?假設win7裝在邏輯分區裏,xp下的c盤是否會存在win7的任何信息和文件嗎?現在求win7安裝在盤邏輯分區方法以及所有信息文件都保存在win7分區下的方法。請高手指教。
回答:如果只安裝一個系統,必須安裝到活動的主分區裏面,如果安裝兩個系統,第一個系統也必須安裝到活動的主分區裏,第二個系統可以安裝到邏輯分區,因爲第二個系統的引導信息保存在了第一個系統所在的活動的主分區裏面,這時候,第二個系統對分區類型就沒有要求了

以上純屬個人理解,歡迎指正。(完)

參考資料:

1.Linux引導過程內幕:http://www.ibm.com/developerworks/cn/linux/l-linuxboot/

2.維基百科-主引導扇區:http://zh.wikipedia.org/wiki/%E4%B8%BB%E5%BC%95%E5%AF%BC%E6%89%87%E5%8C%BA

3.關於分區的區別與詳解:http://bbs.pcbeta.com/thread-749335-1-1.html