MBR(Master Boot Record,主引导记录)是存储在磁盘最开始的512字节的一段特殊代码,它是传统BIOS系统启动过程中的关键组成部分。
启动加载功能:
磁盘分区管理:
启动流程控制:
偏移量 | 长度(字节) | 描述 |
---|---|---|
0x0000 | 446 | 引导代码 |
0x01BE | 16 | 分区表项1 |
0x01CE | 16 | 分区表项2 |
0x01DE | 16 | 分区表项3 |
0x01EE | 16 | 分区表项4 |
0x01FE | 2 | 魔数(0x55AA) |
每个16字节的分区表项包含以下信息: - 引导标志(1字节):0x80表示活动分区 - 起始CHS地址(3字节) - 分区类型(1字节) - 结束CHS地址(3字节) - 起始LBA地址(4字节) - 分区大小(4字节)
传统GRUB(GRUB Legacy):
GRUB2:
dd命令:
# 备份MBR
dd if=/dev/sda of=mbr.bak bs=512 count=1
# 恢复MBR
dd if=mbr.bak of=/dev/sda bs=512 count=1
fdisk:
fdisk -l /dev/sda # 查看分区表信息
gdisk:
gdisk -l /dev/sda # 查看GPT/MBR信息
bootsect:
bootsect /dev/sda # 安装MBR引导代码
分区大小限制:
分区数量限制:
可靠性问题:
特性 | MBR | GPT |
---|---|---|
最大磁盘大小 | 2TB | 8ZB(理论值) |
分区数量 | 4个主分区(或3+1扩展) | 128个(通常实现) |
分区表备份 | 无 | 有 |
兼容性 | 所有系统 | 需要UEFI或兼容BIOS |
安全性 | 无CRC校验 | 有CRC32校验 |
症状: - 系统无法启动 - 显示"Operating System not found"或类似错误
解决方案:
# 使用LiveCD启动后
sudo fdisk /dev/sda # 重新创建分区表(注意会丢失分区信息)
# 或者使用testdisk工具恢复分区表
sudo testdisk
症状: - 显示"GRUB>"提示符或直接进入救援模式
解决方案:
# 使用LiveCD启动后
sudo mount /dev/sda1 /mnt # 挂载根分区
sudo grub-install --root-directory=/mnt /dev/sda
解决方案: - 使用GPT分区表替代MBR - 或者创建多个小于2TB的分区
尽管UEFI和GPT越来越普及,MBR仍然在以下场景中广泛使用: 1. 传统BIOS系统 2. 小型存储设备(如USB闪存驱动器) 3. 需要最大兼容性的场景 4. 虚拟机映像
MBR病毒:
安全备份:
# 备份MBR和分区表
sudo dd if=/dev/sda of=/secure/backup/mbr.bak bs=512 count=1
完整性检查:
# 检查MBR签名
sudo hexdump -C -n 512 /dev/sda | tail -2
# 应显示55 AA
MBR作为传统的磁盘引导和分区方案,虽然有其局限性,但在Linux系统中仍然扮演着重要角色。理解MBR的结构和工作原理对于系统管理员进行故障排除和系统维护至关重要。随着技术的发展,GPT正在逐渐取代MBR,但在可预见的未来,MBR仍将在许多场景中继续发挥作用。