使用非root用户创build分区的磁盘映像

我正在尝试构build一个磁盘映像作为我的构build系统(目前SCons)的输出。 从目录结构创build磁盘映像非常容易,例如使用genext2fs(http://genext2fs.sourceforge.net/)。

但是我想要做的是创build一个包含多个目录中的多个分区的映像。 我目前不得不通过将dd,losetup,kpartx,mount和复制文件粘贴在一起来完成此操作。 这需要root访问权限。

有没有任何方便的方式来做这个非root用户? 在那里的任何应用程序,适合包含到可以有效执行此任务的构build系统中?

我讨厌这样说,但我不知道一个简单的方法来做到这一点。

很有可能你可以通过用dd创build一个图像文件,然后用fdisk分区,然后用dd创build第二个图像文件,并直接格式化(或使用像genext2fs之类的东西),然后dd'ing第二个文件系统图像以正确的偏移量转换成第一分区图像文件。 。 。 然而,这将是困难和复杂的。

但是,恐怕我不知道有什么好方法可以在没有root权限的情况下完成这个任务。

根据你为什么要避免root访问,sudo可能是一个解决scheme。

编写一个脚本,完成所有你需要做的任务,确保用户不能用“创造性”的input来滥用它,然后给用户一个问题sudo的权利,确切的脚本,没有别的。

你可以试试mkisofs …

mkisofs -l -iso-level 4 -o file.iso文件夹

我没有试过这个,但是你尝试过fakeroot吗? 它通常用于基于Debian的发行版来引导安装所需的初始文件集(或者在64位系统的情况下,32位文件的chroot)。 你没有说你正在使用的操作系统,fakeroot可能不适合你。

我已经看到这个问题以另一种方式解决,在构build系统中使用虚拟机。 在虚拟机中,您可以成为root用户而无需在实际的构build机器上搞乱操作系统,您可以将其快照以便每次启动时都处于相同的清理状态。

您正在创build已知大小的各个分区?

你可以通过创build一个已知字节偏移量的分区的模板“disk image”来解决这个问题,然后用dd将实际的文件系统拼接成该图像。

  1. https://serverfault.com/a/332114/100216 ;
  2. 如果ISO9660对你来说基本没问题的话,请参阅syslinux发行版中的isohybrid脚本。