mik*_*erv 12
直到刚才我才注意到对您问题的编辑。正如现在所写,这个问题与我第一次回答时完全不同。您描述的镜像实际上不在规范中,因为它是一种相当危险和丑陋的黑客,称为混合 MBR分区格式。这个问题使得很多更有意义了-这不是傻可言,其实。
GPT 磁盘和混合 MBR磁盘之间的主要区别在于,GPT 的 MBR 会将整个磁盘描述为单个 MBR 分区,而混合 MBR会尝试对冲(非常丑陋的)兼容性,并仅描述由前四个分区。这种情况的问题在于,混合 MBR的兼容性尝试首先完全违背了 GPT 保护 MBR 的目的。
如下所述,保护性 MBR应该保护GPT 磁盘免受愚蠢的应用程序的攻击,但如果某些磁盘似乎未分配给那些应用程序,则所有赌注都将被取消。如果有帮助,请不要使用混合 MBR - 如果在 Mac 上,这意味着不要使用默认Bootcamp配置。
一般来说,如果要寻求有关 EFI/GPT 相关问题的建议,别无他处(除了先在这里稍微绕道),只能到rodsbooks.com。
这(曾经是)一个愚蠢的问题 - 我认为您是在问如何在没有Protective MBR 的情况下对 GPT 磁盘进行分区。这个问题的答案是你不能——因为 GPT 是一种磁盘分区表格式标准,该标准指定了一个位于磁盘头部的保护性 MBR。看?

您可以做的是擦除 MBR 或覆盖它——无论如何它不会阻止大多数GPT 感知应用程序访问分区数据,但它包含在规范中的原因是为了防止非GPT 感知应用程序与分区表。它通过报告整个磁盘已经是一个 MBR 类型的分区来防止这种情况发生,并且没有人应该尝试向它写入文件系统,因为它已经分配了空间。删除 MBR 会删除该保护。
无论如何,方法如下:
这将创建一个./img充满 NUL的 4G文件......
</dev/zero >./img \
dd ibs=4k obs=4kx1k count=1kx1k
Run Code Online (Sandbox Code Playgroud)
1048576+0 records in
1024+0 records out
4294967296 bytes (4.3 GB) copied, 3.38218 s, 1.3 GB/s
Run Code Online (Sandbox Code Playgroud)这会向其中写入一个分区表 - 以包括领先的Protective MBR。
printf参数后跟一个\newline 并写入gdisk的标准输入。gdisk解释命令,就好像它们是交互输入的一样,并相应地采取行动,在它写入我们文件头部的GUID 分区表中创建两个 GPT 分区条目./img。所有终端输出都转储到>/dev/null (因为它很多,无论如何我们现在都会看看结果)。
1048576+0 records in
1024+0 records out
4294967296 bytes (4.3 GB) copied, 3.38218 s, 1.3 GB/s
Run Code Online (Sandbox Code Playgroud)这将获得的前 2K 中pr偏移量的四列格式化表示。strings./img
printf %s\\n o y n 1 '' +750M ef00 \
n 2 '' '' '' '' \
w y | >/dev/null \
gdisk ./img
Run Code Online (Sandbox Code Playgroud)
4+0 records in
4+0 records out
2048 bytes (2.0 kB) copied, 7.1933e-05 s, 28.5 MB/s
Run Code Online (Sandbox Code Playgroud)
451 * 1033 K 1094 t 1212 n
510 U 1037 > 1096 e 1214 u
512 EFI PART 1039 ;@fY 1098 m 1216 x
524 \ 1044 30 1153 = 1218
529 P 1047 L 1158 rG 1220 f
531 ( 1050 E 1161 y=i 1222 i
552 " 1065 w 1165 G} 1224 l
568 V 1080 E 1170 $U.b 1226 e
573 G 1082 F 1175 N 1228 s
575 G 1084 I 1178 C 1230 y
577 y 1086 1180 b 1232 s
583 G 1088 S 1185 x 1234 t
602 Ml 1090 y 1208 L 1236 e
1024 (s* 1092 s 1210 i 1238 m
Run Code Online (Sandbox Code Playgroud)你可以看到 MBR 在那里结束,是吗?字节 512。
这将在前 512 个字节上写入 512 个空格./img。
<./img dd count=4 |
strings -1 -td |
pr -w100 -t4
Run Code Online (Sandbox Code Playgroud)现在为了我们的劳动成果。
这是gdiskon的交互式运行./img。
4+0 records in
4+0 records out
2048 bytes (2.0 kB) copied, 7.1933e-05 s, 28.5 MB/s
Run Code Online (Sandbox Code Playgroud)
GPT fdisk (gdisk) version 1.0.0
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: present
Found valid GPT with corrupt MBR; using GPT and will write new
protective MBR on save.
Run Code Online (Sandbox Code Playgroud)
451 * 1033 K 1094 t 1212 n
510 U 1037 > 1096 e 1214 u
512 EFI PART 1039 ;@fY 1098 m 1216 x
524 \ 1044 30 1153 = 1218
529 P 1047 L 1158 rG 1220 f
531 ( 1050 E 1161 y=i 1222 i
552 " 1065 w 1165 G} 1224 l
568 V 1080 E 1170 $U.b 1226 e
573 G 1082 F 1175 N 1228 s
575 G 1084 I 1178 C 1230 y
577 y 1086 1180 b 1232 s
583 G 1088 S 1185 x 1234 t
602 Ml 1090 y 1208 L 1236 e
1024 (s* 1092 s 1210 i 1238 m
Run Code Online (Sandbox Code Playgroud)
Disk ./img: 8388608 sectors, 4.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 0528394A-9A2C-423B-9FDE-592CB74B17B3
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 8388574
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 1538047 750.0 MiB EF00 EFI System
2 1538048 8388574 3.3 GiB 8300 Linux filesystem
Run Code Online (Sandbox Code Playgroud)