如何在 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 映像安裝為唯讀,否則可能會損壞。

相關內容