如何生成备份GUID分区表

如何生成备份GUID分区表

我正在尝试使用 Qemu + OVMF + CLOVER + FV2 从我的物理磁盘启动我的 OSX 安装(我这里有一个 PS/2 驱动程序 https://bitbucket.org/timmycook/virtioinputdxe对于 VmWare FileVault (FV2),但我需要隐藏磁盘上的一些分区。我可以将引导加载程序放在不同的驱动器上,但隐藏其他分区的一种方法似乎是使用线性 raid,如此处所述https://wiki.archlinux.org/index.php/QEMU

那篇文章介绍了MBR,但是当磁盘末尾有分区信息时,如何生成GUID分区表呢?

给定以下分区表:

Main partition table begins at sector 2 and ends at sector 3
First usable sector is 4, last usable sector is 242187496
Partitions will be aligned on 4-sector boundaries
Total free space is 64 sectors (32.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
 1              68           65535   32.0 MiB    EF00  EFI System
 2           65536         8454143   4.0 GiB     8300  Linux filesystem
 3         8454144        90765255   39.2 GiB    0700  Microsoft basic data
 4        90765256       174554311   40.0 GiB    AF0A  Apple APFS
 5       174554312       242187496   32.3 GiB    0700  Microsoft basic data

如何生成仅包含分区 4 的线性 md 驱动器?我无法使用 Fallocate 创建临时分区,因为任何分区上都没有足够的空间来执行此操作。

答案1

上述文章主要描述了如何创建一个虚拟设备,将 16K 附加到另一个现有设备上。如果你想添加一个 GPT 分区表,那么你应该在前面多一点,比如 1M,并且还附加一些东西:

dd if=/dev/zero of=/path/to/prepend bs=1M count=1
dd if=/dev/zero of=/path/to/append  bs=1M count=1

losetup -f /path/to/prepend
losetup -f /path/to/append

# now we map 3 devices together
mdadm --build --verbose /dev/md0 --chunk=16 --level=linear --raid-devices=3 /dev/loop0 /dev/sdX4 /dev/loop1

现在您可以gdisk在 /dev/md0 上创建一个 GPT 分区,该分区从 1M 开始,长度至少为 41894528K ((174554312-90765256)/2)。

当心!如果您计算错误,那么gdisk不仅可能会在前置和附加空间上创建分区表,还会破坏 OSX 磁盘的某些数据。因此,为了进行测试,我将创建一个只读循环设备:

losetup --只读-f /dev/sdX4

...并使用这个而不是/dev/sdX4第一个 mdadm 命令来创建 GPT 表并安装引导加载程序。

相关内容