
vexpress-a9 ボードをシミュレートして、QEMU 上の PCI WiFi アダプターにアクセスしようとしています。
私がフォローしているのはこれホスト マシンのパススルー PCI カードを qemu-kvm で実行されているゲスト マシンと共有するチュートリアル。ただし、qemu-system-arm には適用できないと思います。
- vexpress-a9 で qemu-system-arm を使用して PCI をパススルーすることは可能ですか?
- ゲスト OS で PCI カードを USB デバイスとしてアクセスする方法はありますか? または、ゲスト OS でホスト USB デバイスとしてアクセスする方法はありますか?
私がやっていることは次のとおりです:
$ qemu-system-arm \
-kernel ./zImage \
-M vexpress-a9 \
-cpu cortex-a9 \
-m 1024 \
-smp 2 \
-serial stdio \
-append "root=/dev/mmcblk0p1 rootfstype=ext4 rw raid=noautodetect console=ttyAMA0,38400n8 rootwait devtmpfs.mount=0 vmalloc=256MB mem=1024M" \
-sd ./vexpress-quantal.img
答え1
このセクションで概説した手順を必ず実行してください。13.3.4. PCI パススルー、ドキュメントのタイトル:第13章 qemu-kvm を使用した仮想マシンの実行。
抜粋
手順13.1 PCIパススルーの設定
ホストの実行中のカーネルで CONFIG_DMAR_DEFAULT_ON が設定されていることを確認します。
$ grep CONFIG_DMAR_DEFAULT_ON /boot/config-`uname -r`
このオプションが設定されていない場合は、ブートローダー設定を編集し、intel_iommu=on (Intel マシン) または iommu=pt iommu=1 (AMD マシン) を追加します。その後、ホストマシンを再起動します。
IOMMU がホスト上でアクティブに有効化され、認識されていることを確認します。Intel マシンでは dmesg | grep -e DMAR -e IOMMU を、AMD マシンでは dmesg | grep AMD-Vi を実行します。出力がない場合は、ハードウェアが IOMMU (VT-d) をサポートしているかどうかを慎重に確認し、BIOS で有効になっていることを確認します。
ゲストに割り当てるホスト PCI デバイスを識別します。
tux@vmhost:~> lspci -nn [...] 00:1b.0 Audio device [0403]: Intel Corporation 82801H (ICH8 Family) \ HD Audio Controller [8086:284b] (rev 02) [...] Note down the device (00:1b.0) and vendor (8086:284b) ID.
デバイスをホスト カーネル ドライバーからアンバインドし、PCI スタブ ドライバーにバインドします。
tux@vmhost:~> modprobe pci_stub tux@vmhost:~> echo "8086 284b" > /sys/bus/pci/drivers/pci-stub/new_id tux@vmhost:~> echo "0000:00:1b.0" > /sys/bus/pci/devices/0000:00:1b.0/driver/unbind tux@vmhost:~> echo "0000:00:1b.0" > /sys/bus/pci/drivers/pci-stub/bind
次に、PCI デバイスが割り当てられた VM ゲストを実行します。
qemu-kvm [...] -device pci-assign,host=00:1b.0
QEMU/KVM ARM サポート
バージョン 1.5 および 1.6 の変更ログによると、ARM は次の方法でサポートされます。
1.5
- このリリースには、ARM アーキテクチャ用の KVM の初期サポートが含まれています。これには、3.9 以上の Linux カーネルと Cortex-A15 CPU が必要です。
- Zynq ボードは SD ホスト コントローラー インターフェイスを提供します。
- VersatilePB および Realview ボードの PCI コントローラ モデルは、機能が大幅に改善されました (MMIO BAR サポートと正しい PCI IRQ マッピングを含む)。Linux カーネルは現在これを利用していませんが、古い壊れた QEMU の動作を期待するカーネルを自動検出し、それにフォールバックします。(古い IRQ 動作は、どうしても必要な場合は、「-global versatile_pci.broken-irq-mapping=1」で強制できます。)
- Thumb モードでの SRS 命令の誤った処理が修正されました。
- ARM ターゲットの TCG エミュレーションのパフォーマンスは、以前のリリースよりも向上しています。
- vexpress-a15 および vexpress-a9 モデルで移行と VM の保存/読み込みが正しく機能するようになりました。
1.6
- ロード-取得/ストア-リリース用の 32 ビット ARMv8 LDA/STL 命令がサポートされています (-cpu any の場合のみ)。残りの新しい v8 命令は将来のリリースでサポートされる予定です。
- vexpress-a9 および vexpress-a15 ボードには、virtio-mmio トランスポートを介して virtio デバイスを実験的にサポートする機能があります。x86 システムで使用される virtio コマンドラインは、PCI virtio デバイスを作成するため機能しないことに注意してください。代わりに、「virtio-blk-device」、「virtio-net-device」などのデバイスを使用してください。この機能は将来のリリースで変更される可能性があることに注意してください。
- -initrd オプションは、U-Boot ヘッダー付きの RAM ディスクを受け入れるようになりました。
- Calxeda ECX-2000 / Midway システムのモデルがサポートされるようになりました (「midway」)。