MBR与GPT分区表的简单说明
source link: https://www.lujun9972.win/blog/2018/04/14/mbr%E4%B8%8Egpt%E5%88%86%E5%8C%BA%E8%A1%A8%E7%9A%84%E7%AE%80%E5%8D%95%E8%AF%B4%E6%98%8E/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
MBR分区表说明
在传统的MBR分区方案中,第0号扇区的的0~512个字节存储的是引导程序,用于服务器启动时引导BIOS的加电自检以及GRUB stage1的加载。 而446~509的这64个字节存放的是分区表信息,其中每个分区占用16字节,因此最多只能包含4个分区的信息。若想要创建超过5个分区,则需要将其中一个分区转换成逻辑分区,再对逻辑分区进行划分。 最后多出来的510~511字节按惯例为0xAA55。若磁盘此处的值不为0xAA55,则判断该磁盘的MBR被损坏。
由于每个分区只有16个字节,因此能记录的信息十分有限,只包括引导标志、分区格式ID、用CHS(磁头、柱面、扇区)方式描述的分区开始位置和结束位置、用LBA方式(逻辑块)描述的分区开始位置以及包含的扇区数,这些信息。
我们可以通过 hexdump 命令输出MBR中分区表的内容。
[vagrant@localhost ~]$ sudo hexdump -s 446 -n 66 -e '1/1 "%02x" " " 3/1 "%02x" " " 1/1 "%02x" " " 3/1 "%02x" " " 2/4 "%10d" "\n"' /dev/sda 00 202100 83 410100 2048 2048 80 410200 83 cb0982 4096 2097152 00 cb0a82 8e feffff 2101248 81784832 00 000000 00 000000 0 0 55 aa
从中可以看出,这个硬盘有三个分区(第四个分区信息全是0),其中:
- 第0个字节是引导标志,80表示引导,也就是系统从第二块分区引导
- 第1~3个字节是CHS方式表示的起始位置,目前CHS表示法已经被淘汰了,没有意义
- 第4个字节是分区类型ID号
- 第5~7个字节是CHS方式表示的结束位置,目前CHS表示法已经被淘汰了,没有意义
- 地8~11个字节是LBA方式描述的起始扇区号
- 地12~15个字节是LBA方式描述的扇区数
这个数据跟 fdisk
显示的数据是匹配的
[vagrant@localhost ~]$ sudo fdisk -lu /dev/sda Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000abd1e Device Boot Start End Blocks Id System /dev/sda1 2048 4095 1024 83 Linux /dev/sda2 * 4096 2101247 1048576 83 Linux /dev/sda3 2101248 83886079 40892416 8e Linux LVM [vagrant@localhost ~]$
此外,图中第一个分区的开始扇区块是从2048号扇区开始的,也就是说0~2047号扇区是保留扇区不用做分区的。 这其中,第0号扇区为主引导扇区,1~2047号扇区用于存储stage1.5
最后要说明的是,最后那两个字节显示的是 55 aa
, 这个实际上就是 0xAA55
,原因请参见小端模式
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK