MBR詳解

前言:

    話說,現在買電腦如果預裝win8以上的系統,基本上都是GPT。想當年博主買的電腦預裝的win8磁盤分區樣式就是GPT,而且貌似如果想把win8換win7就得把GPT改成MPR。雖然會在最后提到GPT,不過本文還是主要講解MBR,并通過實驗驗證。

機械硬盤:

主引導記錄(Master Boot Record,縮寫:MBR),又叫主引導扇區。在計算機開機BIOS加點自檢結束后,開始按照CMOS中對啟動設備的設備順序檢驗可用的啟動設備時,BIOS將相應啟動設備的第一個扇區(也就是MBR扇區)。

雖然固態硬盤市場占有率越來越來高,價格也越來越親民,不過事實上我們接觸較多的大容量磁盤還是機械硬盤,所以在詳細介紹MBR之前先簡單介紹一些關于機械硬盤的基本概念。

傳統的普通硬盤主要由,盤片,磁頭,盤片轉軸等等一些部分組成。當磁盤選裝時,磁頭若保持在一個位置上,則每個磁頭都會在磁盤表面畫出一個圓形軌跡,這些圓形軌跡就叫做磁道。磁盤上的每個磁道被等分為若干弧段,這些弧段就是磁盤的扇區,每個扇區為512個字節。磁盤通常由重疊的一組盤片構成,每個盤面都被劃分成數目相等的磁道,并從外緣的“0”開始編號,具有相同編號的磁道形成一個圓柱,就是磁盤的柱面。

磁盤分區

    磁盤分區實質上是對硬盤的一種格式化,然后才能使用硬盤保存各種信息。磁盤分區是使用分區編輯器在磁盤上劃分幾個邏輯部分,盤片一旦劃分數個分區,不同類的目錄和文件可以存在不團的分區。由于MBR本身的限制,其只能包含4個分區記錄,所以我們最多只能建4個主分區,如果想建更多的分區怎么辦?那就只能用其中的一個分區記錄來建立擴展分區,擴展分區本身是不能使用的,它以邏輯分區的方式來使用,所以說擴展分區可以分成若干邏輯分區。它們的關系是包含關系,所有的邏輯分區都是擴展分區的一部分。在創建分區時,就已經設置好了硬盤的各項物理參數,指定了硬盤主引導記錄(即Master Boot Record,一般簡稱MBR)和引導記錄備份的存放位置。主引導扇區記錄著硬盤本身的相關信息以及硬盤各個分區的大小及位置信息。接下來我們就詳細介紹下我們的此篇博客的主要東東——MBR

主引導記錄(MBR)

    盤面上最外側的柱面就是0號柱面。而我們的主引導扇區就在磁盤上0號柱面0好磁頭的1號扇區,它是計算機開機后訪問磁盤時所必須要讀取的首個扇區。扇區的大小是512字節,主引導扇區開頭的446字節內容特指為"主引導記錄",主要是用來啟動引導程序的引導代碼。其后的4個16字節是“磁盤分區表”,最后2個字節為結束標志(55aa)。主引導扇區記錄這硬盤本身的相關信息以及硬盤各個分區的大學及位置信息,是數據信息的重要入口。如果它受到破壞,硬盤上的基本數據結構信息將會丟失。后面我們通過演示手動破壞和恢復磁盤分區表,以更深入具體的了解MBR。

1.jpg

    在MBR磁盤分區樣式中,最多只能有4個主分區,或者3個主分區加一個擴展分區。磁盤的0號扇區就是我們說的MBR一共就512字節,前446字節是主引導程序,接著的64字節是主分區表(DPT)最后的2字節是結束標志。64的主分區表,每16字節保存一個分區表項,所以最多只能是4個主分區。分區表項的第一個字節是引導標志位(80表示活動分區,系統可引導,00表示非活動分區),第2字節表示磁頭號,第3字節的高6位表示扇區號,低2位加上第4字節表示柱面號。第5字節表示分區類型(0表示分區未使用,83表示linux)接著第6字節對應結束磁頭號,第7字節高6位是結束柱面號,第7字節低2位和第8字節表示柱面號,后面的兩個4字節分別是分區起始相對扇區號和分區總的扇區數。MBR標識了4個分區的范圍,而擴展分區是如何能創建許多邏輯分區的呢?擴展分區內最多可建多大23個邏輯分區。擴展分區的第0號扇區EBR,有512字節,前446個字節未使用為全0,接著是64位的擴展分區表,第一個16字節的分區表項指向的是邏輯分區1,組成結構同主分區表項一致,第二個16字節的分區表項指向下一個擴展分區表EBR,后面的32字節暫時未使用。所以整個邏輯分區呈線性結構,第一個EBR的第二個分區表項指向第二個EBR,第二個EBR的第二個分區表項指向第三個EBR。。。這就是整個的最初的CHS方案,CHS是cylinder-head-sector(柱面-磁頭-扇區),區塊必須以硬盤上某個磁柱、磁頭、扇區的硬件位置所合成的地址來指定.現代的MBR已經用LBA(邏輯區塊地址)替換了早期的CHS尋址方式。

MBR硬盤分區結構圖.jpg

全局唯一標識分區表

    在博客的最后簡單介紹下全局唯一標識分區表(GUID Partition Table, 縮寫:GPT),因為理論上講MBR最大支持2.2TB的分區,即使是把512字節的扇區提升到4kb的扇區,支持最大的容量達到16TB,也改變不了MBR本身的局限性,所以GPT分區就顯得更重要。越是新的技術就越簡單,GPT的分區表也是相當簡單的,GPT分區表最開頭,處于兼容性考慮仍然存儲一份傳統的MBR,用來防止不支持GPT的硬盤管理工具錯誤識別并破壞硬盤中的數據,這個MBR也叫做保護MBR。接下來就是分區表頭,其中定義了硬盤的可用空間以及組成分區表的項的大學和數量,在使用64位Windows Server 2003的機器上,最多可以創建128個分區,即分區表中保留了128個項,其中每個都是128字節。GPT分區表使用簡單而直接的方式表示分區。一個分區表項的前16字節是分區類型GUID。再接下來是分區起始和末尾的64位LBA編號,以及分區的名字和屬性。并在硬盤的最后加入了Secondary GPT,是主GPT的一個備份。

GPT 分區表.jpg

實操修改mbr

 mbr分區表信息.jpg

    左邊第一列是以8個16進制數表示地址,第一行從0開始,第二行從16開是,第三行從32開始以此類推,前446是引導程序,我們關注的是第接下來的64字節,在第28行,地址為000001b0,以10進制表示就是432,所以第447個字節開始的64個字節就是分區表信息:80 20 21 00 83 dd 1e 3f 00 08  00 00 00 a0 0f 00 00 dd 1f 3f 8e fe ff ff 00 a8  0f 00 00 58 f0 0e 00 。這些全都是16進制的數字,一個16進制的數字占4位,所以兩個16進制的數字占8個位,也就是1個字節,則分區表的第一個字節是“80”,80表示這個分區是活動的,系統可引導,00表示非活動分區,其他數字是無效的,“20 21 00”表示分區開始的磁頭號為32,開始的扇區號為第二字節的0-6字節,21化成2進制為:00100001,取0-6位是100001對應的10進制為33,,開始的柱面號第2字節的6,7兩位加上整個第3字節,即0000000000,對應10進制為0,所以第一分區開始在硬盤上的三維地址為(柱面,磁頭,扇區)=(0,32,33);第4個字節表示分區類型,83就是表示linux,接下來的 dd 1e 3f就是分區結束的磁頭號,扇區號,和柱面號。"00 08  00 00"表示首扇區的相對扇區號為524288(小端序);"00 a0 0f 00"表示總扇區數為10489600.

    我們用lsbk查看我們的分區信息。

    刪除前分區.jpg

    然后我們把那64字節的分區表信息清零。不過我們在清零前,需要把mbr的數據備份下來,不然恢復就比較麻煩:

    將mbr數據備份到mbr文件中

dd if=/dev/sda of=mbr bs=1 count=512

    然后把后面的64字節關于分區表的信息清零:

dd if=/dev/zero of=/dev/sda bs=1 count=64 skip=446 seek=446

    mbr清零后.jpg

    此時我們在查看磁盤的分區信息:

    清零后的磁盤分區表.jpg

    此時分區已經不存在了。我們得通過我們剛剛備份的mbr進行恢復:

dd if=mbr of=/dev/sda bs=1 count=64 skip=446 seek=446

    以上命令中bs表示操作的大小是1字節,count表示總共操作64個字節,skip,seek是跳過前面的446個字節,處理后面的64的分區表。我的電腦上還有一塊新的硬盤,我們把sda的mbr賦值到sdb上會發生什么呢?我們來試一試:

dd if=mbr of=/dev/sdb bs=1 count=512

復制sda1的mbr后.jpg

我們會發下sdb和sda的磁盤主分區信息已經一模一樣了,因為mbr中只保存了主分區的分區信息,所以sdb只有兩個分區。

我們記得,mbr的最后兩位是55aa的結束標志,如果我們將其清零,會發生什么呢?let's try!

dd if=/dev/zero of=/dev/sda bs=1 count=2 skip=510 seek=510

結束標志清零.jpg

此時我們再查看分區信息,就會發現完全沒有分區信息。

結束標志清零后的分區信息.jpg

到此位置,我們就能更清晰的認識mbr的整體結構了~

原創文章,作者:M21-陜西-李賢,如若轉載,請注明出處:http://www.www58058.com/57122

(1)
M21-陜西-李賢M21-陜西-李賢
上一篇 2016-11-14
下一篇 2016-11-14

相關推薦

  • M20 – 1- 第二周博客(2):Linux的文件系統與結構

    Linux系統對于一個初學者來說,其實并不那么容易.所以了解其系統的結構,及其表示的含義是非常重要的.否則安裝好系統后,都無從下手.也不知道怎么辦。下面介紹一下Linux 的目錄結構.及每個目錄表示的含義.方便初學者學習和使用Linux系統。 從上圖可以看出Linux的目錄結構屬于樹狀型的,是否已經對Linux的結構有個大概的認識了呢,接下來講的是這些目錄中…

    Linux干貨 2016-08-02
  • 我的linux學習方法

    目前記住Linux單詞命令過于困難,現在主要記住linux的命令的作用及用處,不記得單詞可以百度查找做多了自然就記住了。

    Linux干貨 2018-03-17
  • 運維必備的”武器庫”

    作者總結的干貨,拿來分享給大家,滿滿的全是干貨 Blog:http://www.simlinux.comWeibo:http://weibo.com/geekwolf Bootstrapping: Kickstart、Cobbler、rpmbuild/xen、kvm、lxc、Openstack、 Cloudstack、Opennebula、Eucalyplu…

    Linux干貨 2015-03-13
  • linux下的打包與壓縮

    linux壓縮或解壓縮工具有很多,除了已經很少有人使用的compress外,現在常用的還有tar,bzip2,xz 和gzip等,我們來說說它們的用法。 先來說bzip2。bunzip2和bzcat可以由bzip2指定選項來執行同樣的結果,這里只介紹bzip2的用法。使用bzip2這個工具創建的文件以.bz2,.bz,.tbz,.tar.bz2或者…

    Linux干貨 2017-04-16
  • Linux用戶與用戶組的詳解

    添加用戶   創建或添加新用戶使用useradd命令來實現,其命令用法為:   useradd [option] username   該命令的option選項較多,常用的主要有:   -c 注釋      用戶設置對賬戶的注釋說明文字  …

    Linux干貨 2016-08-05
欧美性久久久久