web-dev-qa-db-ja.com

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

結果は同じです。

3
jks

これらのモジュールを追加することで、(ubuntu 18.04ホストと14.04ゲストを使用して)解決しました。

  • virtio_input
  • 9pnet
  • 9pnet_virtio

ゲストファイルに/etc/initramfs-tools/modules

忘れないでください追加後にカーネルのinitramfsを更新します:

update-initramfs -uk <kernel|all>

1
Batman

私の場合、virtio_pciモジュールがないために失敗し、次のように修正しました。

modprobe virtio_pci

0
John Doe