到目前为止,我尝试过的所有工具都只能创建双(GPT 和 MBR)分区表,其中前 4 个 GPT 分区被镜像到兼容的 MBR 分区。
这不是我想要的。我想要一个纯 GPT 分区表,即磁盘上没有 MBR 表,因此它们之间也没有任何同步。
这有可能吗?
答案1
解决您的编辑问题:
直到现在我才注意到对您的问题的编辑。正如现在所写的,这个问题与我第一次回答时完全不同。这镜子你描述的是不是实际上,在规范中,因为它是一种相当危险且丑陋的黑客行为,被称为混合型MBR分区格式。这个问题使得很多现在更有意义了——事实上,这一点也不傻。
GPT 磁盘和 GPT 磁盘之间的主要区别混合膜生物反应器磁盘是 GPT 的 MBR 将描述整个磁盘作为单个 MBR 分区,而混合膜生物反应器将尝试对冲(极其丑陋)出于兼容性考虑,仅描述前四个分区覆盖的区域。这种情况的问题是混合型MBR兼容性方面的尝试从一开始就完全违背了 GPT 保护性 MBR 的目的。
如下所述,保护性MBR应该保护来自愚蠢应用程序的 GPT 磁盘,但如果某些磁盘似乎未分配给这些应用程序,则所有赌注都会失败。如果有帮助的话,不要使用混合 MBR- 如果在 Mac 上,这意味着不要使用默认Bootcamp
配置。
一般来说,如果寻求有关 EFI/GPT 相关问题的建议,请前往无处(除了可能稍微绕路这里首先)但是rodsbooks.com。
咳咳……
这(以前是)有点愚蠢的问题 - 我想你是在问如何在没有 GPT 磁盘的情况下对 GPT 磁盘进行分区保护性MBR。这个问题的答案是你不能 - 因为 GPT 是一个磁盘分区表格式标准,并且该标准指定位于磁盘头部的保护性 MBR。看?
您可以做的就是擦除 MBR 或覆盖它 - 这不会阻止最多无论如何,支持 GPT 的应用程序都无法访问分区数据,但是原因它包含在规范中是为了防止非-GPT 感知应用程序,避免与分区表发生冲突。它通过仅报告整个磁盘已经是单个 MBR 类型分区来防止这种情况,并且没有人应该尝试向其中写入文件系统,因为它已经分配了空间。删除 MBR 就会删除该保护。
无论如何,方法如下:
这样就创建了一个4G
./img
文件充满 NUL...</dev/zero >./img \ dd ibs=4k obs=4kx1k count=1kx1k
1048576+0 records in 1024+0 records out 4294967296 bytes (4.3 GB) copied, 3.38218 s, 1.3 GB/s
这会向其中写入一个分区表 - 包括前导保护性MBR。
- 的每个
printf
参数后面都跟有一个\n
ewline 并写入到gdisk
的标准输入中。 gdisk
解释这些命令,就好像它们是以交互方式键入的一样,并相应地执行操作,以在GUID分区表它写给我们的头./img
文件。所有终端输出都转储到
>/dev/null
(因为数量很多,无论如何我们现在都会看看结果)。printf %s\\n o y n 1 '' +750M ef00 \ n 2 '' '' '' '' \ w y | >/dev/null \ gdisk ./img
- 的每个
这得到 的前 2K 中
pr
伴随偏移量的四列格式表示strings
./img
。<./img dd count=4 | strings -1 -td | pr -w100 -t4
4+0 records in 4+0 records out 2048 bytes (2.0 kB) copied, 7.1933e-05 s, 28.5 MB/s
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
你可以看到 MBR 结束的地方,是吗?字节 512。
这会在前 512 个字节上写入 512 个空格
./img
。<>./img >&0 printf %0512s
现在来看看我们的劳动成果。
gdisk
这是一个交互式运行./img
。gdisk ./img
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.
Command (? for help): p
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
答案2
根据您的情况,您始终需要创建一个>2TB 的分区。你应该使用分手了命令。
在创建分区命令之前,我们应该将磁盘标签设置为GPT。 GPT 代表 GUID 分区表格式 (GPT)。使用parted的mklabel命令将磁盘标签设置为GPT,如下所示。
# parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/sdb: unrecognised disk label
(parted) mklabel gpt
(parted) print
Model: Unknown (unknown)
Disk /dev/sdb: 5909GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
使用 Parted mkpart 创建 >2TB 分区。
使用parted的mkpart命令如下所示创建大于2TB的分区。在此示例中,我们创建一个大小约为 6TB 的分区。
#parted /dev/sdb
(parted) mkpart primary 0GB 5909GB
(parted) print
Model: Unknown (unknown)
Disk /dev/sdb: 5909GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 5909GB 5909GB primary