我正在尝试构建磁盘映像作为构建系统(当前为 SCons)的输出。从目录结构创建磁盘映像非常容易,例如使用 genext2fs (http://genext2fs.sourceforge.net/)。
但我想做的是创建一个包含来自多个目录的多个分区的图像。我目前必须通过将 dd、losetup、kpartx、mount 和复制文件粘合在一起来做到这一点。这需要 root 访问权限。
作为非root用户有什么方便的方法吗?那里有任何应用程序,适合包含在可以有效执行此任务的构建系统中吗?
我正在尝试构建磁盘映像作为构建系统(当前为 SCons)的输出。从目录结构创建磁盘映像非常容易,例如使用 genext2fs (http://genext2fs.sourceforge.net/)。
但我想做的是创建一个包含来自多个目录的多个分区的图像。我目前必须通过将 dd、losetup、kpartx、mount 和复制文件粘合在一起来做到这一点。这需要 root 访问权限。
作为非root用户有什么方便的方法吗?那里有任何应用程序,适合包含在可以有效执行此任务的构建系统中吗?
我不想这么说,但我不知道有什么简单的方法可以做到这一点。
很有可能您可以通过使用 dd 创建一个映像文件,然后使用 fdisk 对其进行分区,然后使用 dd 创建第二个映像文件,并直接对其进行格式化(或使用类似 genext2fs 的东西),然后对第二个文件系统进行 dd'ing 来完成某些工作图像到第一个分区的图像文件中的正确偏移量。. . 然而,这将是困难和复杂的。
不过,恐怕我不知道有什么好的方法可以在没有 root 访问权限的情况下完成此操作。
根据您要避免 root 访问的原因,sudo 可能是一个解决方案。
编写一个脚本来完成任务所需的所有工作,确保用户不能通过“创造性”输入滥用它,然后为有问题的用户提供该脚本的 sudo 权限,仅此而已。
你可以试试mkisofs...
mkisofs -l -iso-level 4 -o file.iso 文件夹
我没试过这个,但你试过 fakeroot 吗?它通常在基于 Debian 的发行版上用于引导安装所需的初始文件集(或者在 64 位系统的情况下,带有 32 位文件的 chroot)。你没有说你使用的是什么操作系统,fakeroot 可能不适合你。
我已经看到这个问题以另一种方式解决,在构建系统中使用虚拟机。在虚拟机中,您可以成为 root,而不会弄乱实际构建机器上的操作系统,您可以对其进行快照,以便每次开机时都处于相同的干净状态。
您创建的各种分区是否已知大小?
您可以通过创建具有已知字节偏移量的分区的模板“磁盘映像”来解决该问题,然后使用
dd
.最近遇到类似的问题,主要原因是操作loop设备文件需要root权限。和MikeyB的回答有同样的想法
这是我的代码: