Linux で QEMU FreeBSD qcow2 イメージをマウントする方法

Linux で QEMU FreeBSD qcow2 イメージをマウントする方法

私は、Debian Jessie マシンにマウントしたい FreeBSD 11 qcow2 イメージを持っています。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)

他の 3 つのパーティション提案も試しましたが、すべて同じエラーが発生します。これは、ファイル システムの種類の違いが原因で機能しないのでしょうか? マウントしようとしている FreeBSD パーティションは UFS ですが、マウント ポイントは EXT4 パーティションにあります。

答え1

私はこれをどうやって行うか考え出しました。それは、上記のリッジの提案と、ここで提案されている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 イメージは読み取り専用としてマウントすることをお勧めします。そうしないと、イメージが破損する可能性があります。

関連情報