win 7和Ubuntu 12.04 雙系統下的磁碟分割問題

來源:互聯網
上載者:User

斷續學Linux以來就一直沒完全搞清楚磁碟分割的問題,現在雖然還是不清楚,但應該有點思路了,且記下。

我裝了雙系統,首先看在win 7下看到的磁碟分割情況:


本來是只有恢複分區,保留分區,以及CDFG盤,中間的幾個主要磁碟分割都是講未配置的空間在裝ubuntu時進行劃分的,奇怪的是不應該顯示為主要磁碟分割,關於這點有些常識的人都知道。下面抄錄一段:
 硬碟的第一個扇區有512位元組,其中主要分為兩個部分(其實是4個部分,另外兩個先可以不管),一個是存放啟動引導程式(Master Boot Recorder,MBR)的空間,大約446位元組。另一個是存放硬碟分區表(Disk Partition table, DPT)的空間,大約64位元組。電腦開機後都要來讀取這個扇區,這是啟動電腦所必須的。
 
 MBR真是個令人頭疼的問題,關鍵在於使用“MBR”這個詞的時候含義不同,我總結了一下有以下幾種含義:
     1、指主引導程式,如linux下常用的GRUB,lilo等,當然還有win的主引導程式。
     2、指硬碟第一扇區中存放主引導程式的446位元組的硬碟空間。
     3、指硬碟第一扇區,也就是上面說的全部512位元組的硬碟空間,包括了存放主引導程式的446位元組的空間和存放分區表的64位元組   空間。
 
磁碟分割遵從 P+P+P+P  或者P+P+P+E的原則
 
總之,我們給硬碟分區必須遵守以上的規則,這是通用的,不論是使用windows還是使用linux都必須遵守。總結一下就是:
      硬碟的分區種類有三種:主要磁碟分割、擴充分區和邏輯分區。
      主要磁碟分割和擴充分區的分區記錄儲存在硬碟的第一扇區內,而這個地方空間有限,最多隻能保持4個分區記錄。所以我們硬碟的主要磁碟分割和擴充分區的數量之和不能超過4。
      擴充分區不能直接使用,只能在擴充分區中再次劃分為邏輯分區後它的硬碟空間才能使用。
      邏輯分區是擴充分區的一部分,所有邏輯分區的分區記錄儲存在擴充分區的頭部,而非儲存在硬碟的第一扇區內。
這裡需要澄清的是每一個分區都有一個超級塊,而MBR每個盤只有一個。MBR是用來載入引導程式的,並不是用來載入作業系統的。當你開機時,BIOS內建的檢測程式(已經固化)會進行開機自我測試 (POST)並在MBR中(MASTER的MBR)中載入開機引導程式。(這也就不難理解為什麼MBR總是在0號磁軌,如果MBR老是變更位置,那我豈不是要修改BIOS程式),MBR中的開機引導程式將在你選擇作業系統之後將在你安裝作業系統的那個主要磁碟分割將作業系統的某些核心檔案載入到記憶體並建立相應的進程,進行一系列的初始化.....
 
如前所說,在進行分區時,每個分區就是一個檔案系統,而每個檔案系統開始位置的那個塊就成為超級塊(superblock).超級塊的作用是隱藏檔系統的大小,空的和填滿的塊,以及他們各自的總數和其他諸如此類的資訊。(塊的大小為扇區大小 *  2的N次冪,一個扇區一般為512B)
如硬碟MBR的代號為(hd0),硬碟的第一個分區的超級塊代號(也是分區代號)為(hd0,0),硬碟的第一個邏輯分區的超級塊為(hd0,4),等會可以結合下面資訊來看。
IDE、SATA甚至隨身碟都可能被Grub識別為hd裝置(Linux會區分hd、sd);注意,Grub 2中分區號從1開始,但磁碟號仍然是從0開始的。。在Grub2中,(hd0,0)該表示為(hd0,1)或(hd0,msdos1)這樣的。
 
我們知道,一個硬碟可以有很多分區,但MBR分區表只有四項,怎麼能突破這個限制呢?答案是擴充引導記錄(EBR - Extended Boot Record),通過把MBR分區表中一項設為擴充分區(系統ID為0x05或0x0F),其分區表項指定擴充分區的起始位置和長度,在擴充分區最開始扇區放置另外一個分區表,一般稱為擴充分區表。擴充分區表的第一項指定擴充分區目前的邏輯分區資訊,如果還有更多的邏輯分區,擴充分區表的第二項指定下一個EBR的位置,否則為0。通過這種方式,一個硬碟上的分區數目就沒有限制了。
 
現在先來看ubuntu下的情況:


系統沒有識別恢複分區,將win 7的盤掛載進來,如下


可以看到保留分區在Linux標識為/dev/sda2,而那個30G的就是C盤啦,標識為/dev/sda3, DFG都算是邏輯分區,D盤為/dev/sda5.那/dev/sda1呢?看:


沒錯,/dev/sda1就是恢複分區啦,/dev/sda5~/dev/sda7為DFG盤,而剛才在沒有顯示的/dev/sda8也出來了,就是虛擬記憶體區swap.從/dev/sda8~/dev/sda13都是我為ubuntu劃分的分區,重點來了,那/dev/sda4是什麼呢?其實就是一個擴充分區!!從/dev/sda5~/dev/sda13都是從/dev/sda4中劃分出來的邏輯分區!!,有個證據可以證明的是可以看到/dev/sda4的end
數值與/dev/sda13 end的數值是一樣的!都是976771071,而start 與/dev/sda5的 start也相差無幾。查了下/dev/sda4中system列的意思,如下:
It simply states that your 4th partition is an extended partition instead of a primary partition. The partition info in stored in MBR. However, the MBR can only store four partition entries. If you want more than four partitions, you will have to create an
extended parition and with in which you can create more. In your case partition 5,6,7,8....

下面再看grub 2啟動引導:
因為我是先裝的win 7再裝ubuntu,可以肯定 的是grub 2 裝在了MBR,而grub 2 的設定檔卻是在/boot/grub/grub.cfg


cat查看檔案,找到比較重要的一些:


首先需要說明的是grub 2(可以安裝在MBR或者超級塊)引導載入程式可以做到:
1.直接指定並取用核心檔案,載入到主儲存空間中
2.將控制權移交給下一個載入程式
 
可以看出是第二種功能,第一個menu是win 7恢複的引導載入,這個引導程式安裝在第一個分區(恢複分區)/dev/sda1的超級塊(hd0,0),即(hd0,msdos1), chainloader +1 表示第一個扇區;如果在系統啟動時菜單點擊此項時將引導進入系統復原。
第二個menu是win 7啟動的引導載入(可以看到前面的圖有加 * 號表示bootloader),這個引導程式安裝在第二個分區(保留分區)/dev/sda2的超級塊(hd0,1),即(hd0,msdos2),如果在系統啟動時菜單點擊此項時將引導進入系統啟動,即去/dev/sda3(C盤)找到系統核心檔案載入到記憶體啟動。
註:windows會預設將引導寫入MBR和超級塊(在這裡是sda2的超級塊),而linux可以選擇安裝在某個地方,因為選擇安裝在了MBR所以將windows的覆蓋掉,但sda2超級塊的windows引導程式還可以看出來,如果先安裝Linux再裝Windows那將完全被覆蓋掉。

而第一種功能如:


我們知道啟動核心是在/boot下面的,因為我在分區時把/boot獨立出來, 所以完整的路徑就是
(hd0,msdos10)/vmlinuz-...
或者(/dev/sda10)/vmlinuz-...
如果沒有獨立出來,則為set root='(hd0,msdos9)'    #如上,根目錄/  為/dev/sda9
完整的路徑為
(hd0,msdos9)/boot/vmlinuz-...
或者(/dev/sda9)/boot/vmlinuz-...


備忘:

-----------------------------------------------------------------------------------------
系統ID可能的值:
0x01          FAT12主要磁碟分割或邏輯分區。
0x04          FAT16主要磁碟分割或邏輯分區。
0x05          擴充分區。
0x06          BIGDOS FAT16主要磁碟分割或邏輯分區。
0x07          NTFS主要磁碟分割或邏輯分區。
0x0B          FAT32主要磁碟分割或邏輯分區。
0x0C          使用擴充中斷13的FAT32主要磁碟分割或邏輯分區。
0x0E          使用擴充中斷13的BIGDOS FAT16主要磁碟分割或邏輯分區。
0x0F          使用擴充中斷13的擴充分區。
0x12          EISA分區。
0x42          動態磁碟卷。
0x86          遺留的FT(Fault Tolerant) FAT16。
0x87          遺留的FT NTFS。
0x8B          遺留的FT FAT32。
0x8C          遺留的FT 使用擴充中斷13的FAT32。

27 Windows RE hidden partition
On MBR disks, type 0x27. On GPT disks, GUID: DE94BBA4-06D1-4D40-A16A-BFD50179D6AC. A hidden version of a Windows RE type 0x7 partition with NTFS. When this is installed, reboot and press F8 in order to boot into this Recovery Environment.

07 HPFS/NTFS/exFAT
07 OS/2 IFS (e.g. HPFS)
IFS = Installable File System. The best known example is HPFS. OS/2 will only look at partitions with ID 7 for any installed IFS (that's why the EXT2.IFS packet includes a special "Linux partition filter" device driver to fool OS/2 into thinking Linux partitions
have ID 07). (Kai Henningsen (kai@khms.westfalen.de))


07 Windows NT NTFS
Filesystem introduced in Windows NT 3.1. It is rumoured that the Windows NT boot partition must be primary, and within the first 2 GB of the disk.


07 exFAT
Extended FAT, a.k.a. FAT64. Available in Microsoft Windows since CE 6.0 and Vista SP1. Allows 32 MB clusters and very large disks and files.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.