我有 2 个(相对较小的)qemu(原始格式)磁盘映像,其中包含不同的文件系统(例如 fat 和 ext4)。
我想将它们作为两个不同的分区放入 USB 记忆棒中,以便我可以将其插入电脑并从那里启动。
我可以使用 fdisk 和 dd 来完成此操作,但这需要 root 访问权限和手动干预(这将是接下来几个月的频繁活动。
我怎样才能自动执行任务?我可以避免 sudo 和 root 访问吗?
目前,磁盘映像是在我们的持续集成过程中创建的,不需要根访问或手动干预,但我找不到合并这两个磁盘来满足这一新要求的方法。
编辑
我需要自动化的不是实际 USB 密钥的分区,而是创建可以使用单个sudo dd ...
.磁盘映像应该已经包含填充了数据的分区(保留权限)。
我无法理解为什么我需要 root 来写入原始磁盘映像。
答案1
你不需要root。您可以运行“fdisk someimage.hdd”,只要您有权访问该文件,就可以了。您还可以使用 dd 的 offset 和 notrunc 参数来 dd 到该文件中与分区对应的部分。
与使用 dd 分区设备相比,手动指定偏移量相当不方便。这就是 root 访问可以派上用场的地方 - 您可以使用“losetup”命令为您的映像及其分区创建环回块设备。
不过,如果您不更改分区大小,那么每次重复练习时,这些偏移计算都不会发生变化,因此,如果您一旦计算出它们,就可以在将来重复使用它们。
还有另一种方法 - 在制作一次映像并计算出偏移量后,您可以将包含分区表的磁盘映像的开头提取为单独的文件,而无需使用 fdisk 和 dd 进行将来的映像重建- 只需将分区表和两个分区映像连接(“cat”)成一个磁盘映像。 (在某些情况下,您可能还需要在分区后添加一个磁盘后缀文件,类似于包含分区表的磁盘前缀文件,因为磁盘末尾可能有一个备份分区表。)
答案2
简单回答是不
只要您必须通过 U 盘上的脚本或类似文件创建这两个分区,您就可以编辑分区表并创建需要 root 访问权限的文件系统。
鉴于您已经拥有具有正确文件系统的分区,并且本地安装了来自 qemu 的两个映像(也需要 root,但请查看 pmount),您可以尝试将文件从映像复制到分区在 USB 记忆棒上。只要您只有普通文件并且不关心它们所属的用户/组,那么无需 root 即可工作。