现代MBR引导代码区内容解析及ARM平台相关疑问
MBR引导代码区在ARM/Linux单板机中的作用与疑问
问题背景
我正在阅读维基百科上的**主引导记录(Master Boot Record,MBR)**文章,特别好奇现代系统中MBR的「引导代码区(bootstrap code area)」需要包含什么内容。我用parted工具在SD卡上创建了MBR,再通过xxd /dev/mmcblk0查看原始数据,已经确认:
- 分区表项位于
0x01BE和0x01CE位置 - 引导签名
0x55AA位于0x01FE-0x01FF位置
但0x0000到0x01BD区间的数据是什么含义?
示例十六进制数据如下:
00000000: fab8 0010 8ed0 bc00 b0b8 0000 0000 0000 ................ 00000010: fbbe 007c bf00 06b9 0002 f3a4 ea21 0600 ...|.........!.. 00000020: 00be be07 3804 750b 83c6 1081 fefe 0775 ....8.u........u 00000030: f3eb 16b4 02b0 01bb 007c b280 8a74 018b .........|...t.. 00000040: 4c02 cd13 ea00 7c00 00eb fe00 0000 0000 L.....|......... 00000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000060: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000100: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000110: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000120: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000130: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000140: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000150: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000160: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000170: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000180: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000190: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001b0: 0000 0000 0000 0000 fed0 4bb2 0000 8020 ..........K.... 000001c0: 2100 8328 0d0c 0008 0000 f1f2 0200 0003 !..(............ 000001d0: c2eb 8303 c1eb f1fa 0200 0000 6000 0000 ............`... 000001e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000001f0: 0000 0000 0000 0000 0000 0000 0000 55aa ..............U.
额外疑问
这是一款类似BeagleBone的ARM/Linux单板计算机(SBC)的可启动SD卡镜像。由于MBR本身与架构、操作系统无关,我推测在ARM平台上,引导代码区里并没有实际可执行的机器代码——这部分是不是出于惯例保留的x86/BIOS机器代码,在ARM平台会被直接忽略?
另外,如果我在0x100-0x150区间写入任意数据,MBR还能被正常识别吗?
内容的提问来源于stack exchange,提问作者thom_nic
相关产品推荐
相关产品推荐

