答案1
那么您正试图将第二个操作系统隐藏到看似未分区的空间中吗?这不是一个非常安全的方法,例如testdisk
在磁盘上运行将检测分区并提议将它们添加到真实的分区表中。我希望任何取证工具也能快速检测到“未分配的空间”中似乎有一些结构化内容。
但可以肯定的是,它可能会通过临时检查。
我不认为 GRUB 可以轻松做到这一点,但如果外部引导驱动器上也可以有内核和 initramfs 文件,那么您可以在 initramfs 中轻松完成此操作:创建一个映射表(基本上是名称 + 起始位置)块号 + 长度)对于隐藏分区,用于dmsetup create
加载映射,然后将 initramfs 安装/dev/mapper/hidden_root
为根文件系统,然后让引导基本正常进行,但如果需要,则安装/dev/mapper/hidden_other
并用作/dev/mapper/hidden_swap
交换分区。
要加载每个隐藏分区的映射,您可以运行如下命令:
dmsetup create <name> --table "0 <length in blocks> linear <disk major:minor> <first block #>"
<disk major:minor>
是包含隐藏分区的磁盘设备的主设备号和次设备号,例如8:0
/dev/sda。
如果您的第一个隐藏分区名为hidden_root
,则映射它的命令将如下所示:
dmsetup create hidden_root --table "0 4236248 linear 8:0 952190894"
本质上这意味着:“从块#952190894开始映射磁盘/dev/sda的线性延伸,并将其呈现为/dev/mapper/hidden_root的块0..4236248。”
即使您可以让 GRUB 读取备用分区表,您也必须在 initramfs 中执行上述操作,因为 Linux 内核不会依赖于固件告诉它的内容,而是会自行读取分区表来查找任何分区。