我想将0x00类型的空分区添加到GPT格式化磁盘的保护MBR的开头。我找到了一个道路来完成这个任务,但是这个方法依赖于Linux版本中没有的fdisk增强功能(具体来说,-p/-f选项可以在FreeBSD上使用,而不是Linux)。我还找到了一个道路来在第一个分区之后添加一个空分区。
我想使这成为分区表中的第二个条目,并在它前面添加一个0x00类型的空条目,而不会干扰GPT分区表或磁盘上的任何GPT分区。如何才能做到这一点?保护MBR可以用fdisk -t dos <device>编辑,但是fdisk拒绝添加分区,因为没有可用的空闲扇区。我不确定是否删除保护的MBR分区和重新创建两个新的分区是否会影响磁盘上的GPT分区。
发布于 2022-01-26 02:25:13
这可以使用dd来实现。
保存MBR,以防需要还原:
# dd bs=1 count=512 status=none if=/dev/sdb > foo查看MBR分区表(从扇区1上的字节偏移446开始的64个字节)。示例输出采用hexdump格式,以便每个分区表条目占用一行。
# dd if=/dev/sdb bs=1 skip=446 count=64 status=none | hexdump -ve '16/1 " %02X" "\n"'
00 01 00 00 EE FF FF FF 01 00 00 00 FF FF FF FF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00复制第一个分区的行,如果需要,将零字节更改为0x80以设置该分区的引导标志。将第四个字节更改为0x00,将分区设置为空类型。(每个字节的意义在维基百科上描述。)用编辑的行替换第一个分区,并将原始的第一个分区移动到第二个位置。
80 01 00 00 00 FF FF FF 01 00 00 00 FF FF FF FF
00 01 00 00 EE FF FF FF 01 00 00 00 FF FF FF FF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00将修改后的十六进制子字符串写入磁盘,在0xEE分区之前添加一个空分区:
# printf '\x80\x01\x00\x00\x00\xFF\xFF\xFF\x01\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x01\x00\x00\xEE\xFF\xFF\xFF\x01\x00\x00\x00\xFF\xFF\xFF\xFF' | dd bs=1 seek=446 of=/dev/sdb核实更改:
# dd if=/dev/sdb bs=1 skip=446 count=64 status=none | hexdump -ve '16/1 " %02X" "\n"'
80 01 00 00 00 FF FF FF 01 00 00 00 FF FF FF FF
00 01 00 00 EE FF FF FF 01 00 00 00 FF FF FF FF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00https://unix.stackexchange.com/questions/687790
复制相似问题