如何使用熔断器挂载完整磁盘映像(即带有分区表的映像)中的分区?

如何使用熔断器挂载完整磁盘映像(即带有分区表的映像)中的分区?

这有点间接,但可以使用mountorlosetup的“offset”参数挂载带有磁盘映像的分区。

我希望能够使用熔断器在用户空间中执行相同的操作

使用案例

我的用例是在自动构建服务器上构建磁盘映像,其中构建作业不允许具有 root 权限,并且服务器不需要为特定构建作业进行自定义设置。

答案1

可以使用保险丝来完成,但使用自定义工具可能会更干净。

解决方案

使用 apt-get-able 工具,可能会出现以下混乱情况:

mkdir mnt
xmount --in dd --out vdi disk.img mnt

mkdir mnt2
vdfuse -f mnt/disk.vdi 

mkdir mnt3
fuseext2 -o "rw" mnt2/Partition1 mnt3

解释

基本思想是,熔断器可用于将完整磁盘映像就地分离成指向其分区的文件。 vdfuse 可以做到这一点,但它是一个 VirtualBox 工具,需要 VDI 或 VMDK 文件才能工作。 xmount 使用 fusion 使原始磁盘映像显示为 VDI 文件。

最后,一旦通过 vdfuse 提供了分区文件,就可以通过 ext2/3/4 工具 fusionext2 来安装它。

它很丑陋,但它完全可以在用户空间中工作。

更新

vdfuse 应该能够在没有 xmount 帮助的情况下挂载原始映像,但是存在一个忽略 RAW 选项的错误。

我在这里找到并修复了这个错误:

https://bugs.launchpad.net/ubuntu/+source/virtualbox-ose/+bug/1019075

答案2

挂载实用程序是标准安装程序的包装器,允许普通用户在没有匹配的 /etc/fstab 条目的情况下安装可移动设备。

要允许用户使用它,您唯一需要做的就是将用户添加到plugdev组中。

答案3

  1. losetup图片
  2. kpartx -av由此产生的环回设备
  3. /dev/mapper/...像使用物理磁盘一样使用生成的分区

您可以使用可执行的自动挂载映射来完成所有这些任务。

Achdir可以触发以上所有动作。或者使用 sudo 作为安装/删除脚本。或者...

答案4

libguestfs 现在有一个命令guestmount可以启动虚拟机,以允许您在用户空间中挂载任意分区。

相关内容