问题
我正在尝试使用自定义 CentOS 7.6 ISO 生成 Live USB 棒,其中包含单独的 Veracrypt 分区。此时,我可以成功自定义 ISO 并将其写入 USB 驱动器,但我还没有找到在同一驱动器上拥有单独的 Veracrypt 分区的方法。
理想情况下,我希望有 2 个分区:第一个分区,只读,托管自定义 CentOS 7.6 ISO。第二个分区,可写的 Veracrypt 非系统分区
当前状态
此时,我可以成功生成可启动的 ISO 文件并使用 写入 USB 驱动器dd
。USB 驱动器成功启动到 CentOS。但是它目前使用单个分区,我猜想这是在 xorriso/mkisofs/isohybrid 生成 ISO 时在 ISO 中定义的。
我之前尝试使用生成 2 个分区的 USB 驱动器sgdisk
(我尝试通过 Bash 脚本自动完成所有操作)。由于sgdisk
或任何其他工具(如fdisk
或)parted
不允许我直接从扇区 0 写入,因此 ISO 的引导扇区从未加载,我无法从 USB 驱动器启动操作系统,即使在使用“legacy_boot”标志创建分区后也是如此。
我猜想一个可能的解决方案是编写某种引导加载程序,dd
然后跳转到包含 CentOS 引导加载程序的第一个分区。但是我不确定这是否是最好的解决方案,如果是,我不知道如何正确实施它。
另一种选择是将 Veracrypt 容器包含在 ISO 中,并在 USB 驱动器加载时映射(通过密钥文件,这很好),但这样我就无法使 OS 分区只读。
这是我用来生成 ISO 的东西,如果相关的话:
xorriso -as mkisofs \
-U -r -v -T -J \
-joliet-long \
-V "CentOS-7-x86_64-LiveGNOME-1810" \
-volset "CentOS-7-x86_64-LiveGNOME-1810" \
-A "CentOS-7-x86_64-LiveGNOME-1810" \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-eltorito-alt-boot \
-e isolinux/efiboot.img \
-no-emul-boot -graft-points \
-isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \
-o /tmp/stage/centos7-custom-boot.iso .
问题)
1)我是否可以拥有一个具有 2 个分区的 USB 驱动器:1 个分区是只读的并启动操作系统,而第二个分区是可写的并使用 Veracrypt 加密
2)如何实现?
任何帮助都将受到赞赏。
答案1
将 ISO 放到 USB 记忆棒上,然后使用分区编辑器(如 fdisk)创建新分区。使用 -isohybrid-mbr 运行的 xorriso 已经生成了一个覆盖 ISO 的 MBR 分区 1。/sbin/fdisk 将识别它并建议在记忆棒的剩余可用空间中添加更多分区。然后,您可以像在硬盘上创建一个新分区一样应用加密设置和文件系统格式化。
(您的 ISO 不会将 EFI 映像公开为分区。即,它将仅通过旧式 CSM(BIOS)从 USB 启动。通常,EFI 可启动 ISO 将 EFI 映像作为有效 GPT 的分区或具有无效 GPT 的 MBR 的分区,这使分区编辑器的问题变得复杂。如果有人建议您将 MBR 表转换为 GPT,请不要这样做。在这种情况下,最好丢弃 GPT。如果存在有效的 GPT,则需要让分区编辑器将备份表移动到 USB 记忆棒的末尾。)
祝你今天过得愉快 :)
托马斯