
vexpress-a9 보드를 시뮬레이션하면서 QEMU에서 PCI WiFi 어댑터에 액세스하려고 합니다.
내가 팔로우하는 건이것호스트 시스템의 패스스루 PCI 카드를 qemu-kvm에서 실행되는 게스트 시스템과 공유하는 튜토리얼입니다. 하지만 qemu-system-arm에는 적용되지 않는다고 생각합니다.
- vexpress-a9에 qemu-system-arm을 사용하여 PCI 패스스루가 가능합니까?
- 게스트 OS에서 USB 장치로 PCI 카드에 액세스할 수 있는 방법이 있습니까? 아니면 게스트 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가 호스트에서 활성화되고 인식되는지 확인하십시오. dmesg 실행 | Intel 시스템의 경우 grep -e DMAR -e IOMMU 또는 dmesg | AMD 시스템에서 AMD-Vi를 grep하십시오. 출력이 나오지 않으면 하드웨어가 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의 동작을 예상하고 그 동작으로 돌아가는 커널을 자동 감지합니다. (절대 필요한 경우 "-global universal_pci.broken-irq-mapping=1"을 사용하여 이전 IRQ 동작을 강제할 수 있습니다.)
- 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 헤더가 있는 램디스크를 허용합니다.
- 이제 Calxeda ECX-2000/Midway 시스템 모델이 지원됩니다("midway").