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。

在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寻址方式。

全局唯一标识分区表

在博客的最后简单介绍下全局唯一标识分区表(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的一个备份。

实操修改mbr

左边第一列是以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查看我们的分区信息。

然后我们把那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进行恢复:

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

我们会发下sdb和sda的磁盘主分区信息已经一模一样了,因为mbr中只保存了主分区的分区信息,所以sdb只有两个分区。

我们记得,mbr的最后两位是55aa的结束标志,如果我们将其清零,会发生什么呢?let‘s try!

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

此时我们再查看分区信息,就会发现完全没有分区信息。

到此位置,我们就能更清晰的认识mbr的整体结构了~

时间: 2024-10-26 03:19:04

MBR详解的相关文章

详解 linux中的grub

grub是什么: grub是引导操作系统的程序,它会根据自己的配置文件,去引导内核,当内核被加载到内存以后, 内核会根据grub配置文件中的配置,找到根分区所使用的文件系统对应的驱动,通过根分区文件系统 对应的驱动,挂载根分区,从而达到启动操作系统的目的. 在了解grub以前,请先大体上了解一下centos5/6的启动过程,然后再理解grub就更容易了, 还记的我们以前总结过的centos5系统启动流程吗,如下图,此处我们重点讨论下图红框中的步骤. centos5/6中使用grub作为bootl

kickstart安装系统原理详解

前言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装. 常规的办法有什么? 光盘安装系统===>一个服务器DVD内置光驱百千块,百台服务器都配光驱就浪费了,因为一台服务器也就开始装系统能用的上,以后用的机会屈指可数.用USB外置光驱,插来插去也醉了. U盘安装系统===>还是同样的问题,要一台一台服务器插U盘. 网络安装系统(ftp,http,nfs) ===>这个方法不错,只要服务器能联网就可以装系统了

CentOS 5,6 系统启动流程详解

一.linux 组成介绍 1.linux 组成: Linux: kernel+rootfs(根文件系统) kernel: 进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 rootfs: 程序和glibc 库:函数集合, function, 调用接口(头文件负责描述) 过程调用: procedure,无返回值 函数调用: function 程序:二进制执行文件 2.内核设计流派: 单内核(monolithic kernel): Linux 把所有功能集成于同一个程序 微内核(micro

Linux的Ext2文件系统(Inode&Block)详解

前述:Linux系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不可以太小,太大会导致磁盘容量的浪费,太小会导致产生的文件无法存储的问题.在Linux里面文件是由两部分数据组成,一部分是metadata,另一部分是data.那么这些数据都存放在文件系统的什么地方呢?这就让我们必须得了解文件系统的Inode与Block的基本原理了,而Linux最传统的磁盘文件系统使用的是Ext2,所以我们了解下它的内部原理. 第一部分:磁盘的组成和分区(基础) 磁盘的机械部分: 1.圆形

磁盘及文件系统管理详解---急需加强

磁盘管理: 机械式硬盘 U盘.光盘.软盘.硬件.磁带 MBR:Master Boot Record 主引导记录 ln [-s -v] SRC DEST:创建链接文件,默认硬链接 -s:创建软连接 -v:显示过程 硬链接: 1.只能对文件创建,不能应用于目录 2.不能跨文件系统 3.创建硬链接会增加文件被链接的次数 符号链接(软连接): 1.可以应用于目录 2.可以跨文件系统 3.不会增加被链接文件的链接次数 4.其大小为指定的路径所包含的字符个数 du -s -h df:显示整个磁盘分区使用情况

linux dd 命令详解

1 磁盘管理 1.1 dd 1.1.1 功能说明 读取,转换并输出数据. 1.1.2 语法 dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version] 1.1.3 补充说明 dd可从标

linux ls -l 详解[转]

linux ls -l 详解[转] 有几个字段老是记不住,就记载这里吧 ls -l 列表信息详解 我们平时用ls -l 命令查看一个目录下的文件和子目录的详悉信息时,会得到一个详细的文件和目录名列表.这个列表包含了文件的属性,所属用户,所属组,创建时间,文件大小等等信息.这些信息到底是什么意思呢?有很多初学者对这些不太了解,因此想详悉讲解一下用ls -l命令得到的文件列表每一个字段的意思 以笔者电脑的/root目录为例: [[email protected] root]# ll 总用量 4055

linux下磁盘分区详解

给新硬盘上建立分区时都要遵循以下的顺序:建立主分区→建立扩展分区→建立逻辑分区→激活主分区→格式化所有分区. 一个硬盘的主分区也就是包含操作系统启动所必需的文件和数据的硬盘分区,要在硬盘上安装操作系统,则该硬盘必须得有一个主分区.         扩展分区也就是除主分区外的分区,但它不能直接使用,必须再将它划分为若干个逻辑分区才行.逻辑分区也就是我们平常在操作系统中所看到的D.E.F等盘. 分区从实质上说就是对硬盘的一种格式化.当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了BIOS系

Linux系统启动过程详解

 Linux系统启动过程详解 启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了. 启动第二步--读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,