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 08:30
下一篇 2016-11-14 11:31

相關推薦

  • 小巧精悍——常見文本處理工具用法及技巧總結

    小巧精悍——常見文本處理工具用法及技巧總結 Linux最重要的哲學思想就是:一切皆文件??梢娢募拔募僮髟贚inux當中是多么的重要。在Linux系統中我們也會經常用到各種文本文件處理的操作,熟練使用這些小巧精悍的文本處理工具,在關鍵時刻往往展現非凡的神奇功效。常見文本處理小工具:cat、hexdump、nl、less、head、tail、cut、tr、r…

    Linux干貨 2016-11-05
  • 再不自動化就晚啦!優云教你4步打造基于CentOS的產品鏡像

    隨著Linux程序的增多,軟件的安裝過程中經常出現如下問題: 1、硬件配置類似或者相同時,批量安裝系統和軟件,希望實現自動化安裝,減少安裝時間和人為出錯。 2、工程實施人員在不同客戶現場進行系統和軟件安裝(硬件配置不同),由于硬件有差別,不容易實現自動化。 筆者針對以上場景,從提高生產效率,減少誤操作的立場,提出如下解決方案,希望能達到拋磚引玉的目的,并能與…

    系統運維 2016-07-16
  • 第二周作業

    1. Linux上文件管理類命令總結及示例 文件管理命令主要由查看類命令和管理類命令組成 查看類命令 cat:顯示文本 cat [OPTION]… [FILE].. tac:倒序查看文件內容 tac [OPTION]… [FILE].. head:顯示文件前幾行內容 head [OPTION]… [FILE].. -n#:指定獲取前#行,也可直接使用-# -…

    Linux干貨 2016-12-10
  • N22-第十二周作業

    1、請描述一次完整的http請求處理過程; (1)建立或處理連接:接受請求或拒絕請求 (2)接收請求:接收來自于網絡上的主機請求報文中對某特定資源的一次請求的過程 (3)處理請求:對請求報文進行解析,獲取客戶端請求的資源及請求方法等相關信息 (4)訪問資源:獲取請求報文中請求的資源 (5)構建響應報文 (6)發送響應報文 (7)記錄日志:訪問日志和錯誤日志 …

    Linux干貨 2016-11-04
  • RAID功能介紹及其使用

    RAID功能介紹及其使用 獨立硬盤冗余陣列(RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Array of Inexpensive Disks),簡稱磁盤陣列。其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬盤。根據…

    Linux干貨 2017-01-06
  • OPENSSL加密技術及私有CA的搭建

    加密方式有對稱加密 非對稱加密 單向加密 對稱加密:     加密和加密都用同一個對稱密鑰,但是,這種加密方法存在一定問題,就是密鑰傳輸時,容易被盜竊。還有密鑰管理困難,對稱加密的方法:DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5。   非對稱加密: 公鑰…

    Linux干貨 2015-08-17
欧美性久久久久