Qemu 共享文件夹-9pnet_virtio:设备没有可用的通道

Qemu 共享文件夹-9pnet_virtio:设备没有可用的通道

我尝试运行一个与主机共享文件夹的 qemu 虚拟机。无论我做什么,总是出现相同的错误:9pnet_virtio: no channels available for device share

主机在Linux下。

内核编译时启用了所有 9P 和 virtio 选项(https://wiki.qemu.org/Documentation/9psetup)。

这是我运行 qemu 的脚本:

#! /bin/bash

HDA=archlinux.img
HDB=myHome.img
KERNEL=linux/arch/x86/boot/bzImage

if [ -n "${KDB}" ]; then
    KGD_WAIT='kgdbwait'
fi

CMDLINE="root=/dev/sda1 rw vga=792 console=ttyS0 kgdboc=ttyS1 ${KGD_WAIT}"

FLAGS="--enable-kvm -s"
VIRTFS+=" --virtfs local,path=./share/,mount_tag=share,security_model=passthrough,id=share "

exec qemu-system-x86_64 ${FLAGS} \
     -hda "${HDA}" -hdb "${HDB}" \
     ${VIRTFS} \
     -net user -net nic \
     -serial stdio -serial tcp::1234,server,nowait \
     -boot c -m 1G \
     -kernel "${KERNEL}" -append "${CMDLINE}"

当我手动挂载文件夹时(https://www.linux-kvm.org/page/9p_virtio

mkdir share_folder
mount -t 9p -o trans=virtio,version=9p2000.L share share_folder

结果是一样的。

答案1

通过添加这些模块为我解决了这个问题(使用 ubuntu 18.04 主机和 14.04 客户机):

  • virtio_input
  • 9pnet
  • 9pnet_virtio

存入宾客档案/etc/initramfs-tools/modules

别忘了添加以下内容以更新内核的 initramfs:

update-initramfs -uk <kernel|all>

答案2

在我的情况下,它失败是因为缺少virtio_pci模块,我修复了它:

modprobe virtio_pci

相关内容