如何在 Linux 中挂载 QEMU FreeBSD qcow2 镜像

如何在 Linux 中挂载 QEMU FreeBSD qcow2 镜像

我有一个 FreeBSD 11 qcow2 映像,我想将其安装在我的 Debian Jessie 机器上。我还有其他带有 Debian Jessie 的 qcow2 映像,并且我可以使用 libguestfs-tools 在主机上的映像中挂载分区。在 Debian Jessie qcow2 的情况下,我通常会做这样的事情,并且它按预期工作:

guestmount -a <qcow2 image> -m <parition to mount in the image> --ro <mount point>

但是,当我对 FreeBSD 映像执行相同操作时,出现错误:

root@bonddtest:/home/igw/bondd_testbed/ooo# guestmount -a ../shaper.qcow2 -m /dev/gpt/rootfs --ro /mnt
libguestfs: error: mount_options: mount_options_stub: /dev/gpt/rootfs: No such file or directory
guestmount: '/dev/gpt/rootfs' could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
guestmount:     /dev/sda1 (unknown)
guestmount:     /dev/sda2 (unknown)
guestmount:     /dev/sda3 (ufs)

我已经尝试了其他三个分区建议,但它们都会导致相同的错误。由于文件系统类型的差异,这是否不起作用?我尝试挂载的 FreeBSD 分区是 UFS,而挂载点位于 EXT4 分区中。

答案1

我想出了如何做到这一点,它结合了上面的 Ridgy 建议和使用 qemu-nbd 实用程序,如本中所建议的博客

  1. 将 FreeBSD qcow2 文件连接到 NBD 设备:

    qemu-nbd -c /dev/nbd0 qcow2_file

  2. 确定NBD设备要挂载的分区。我使用了 lslbk:

root@host:# lsblk 
NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0       11:0    1  1024M  0 rom  
nbd0      43:0    0    21G  0 disk 
├─nbd0p3  43:3    0    20G  0 part 
├─nbd0p1  43:1    0  62.5K  0 part 
└─nbd0p2  43:2    0     1G  0 part

我的qcow2镜像有20G大小,所以我选择nbd0p3来挂载

  1. 将 NBD 设备分区挂载到挂载点:

    挂载-r -t ufs -o ufstype=ufs2 /dev/nbd0p3 /mnt

注意:最好将 qcow2 映像安装为只读,否则可能会损坏。

相关内容