PCI-Passthrough를 사용하여 오래된 비디오 카드 (Radeon 4770)를 가상 컴퓨터에 연결하려고합니다. Linux-KVM을 사용하여 Debian Linux (Wheezy, 3.2.0-4-amd64) 호스트에서 가상 머신을 실행하고 있습니다.
질문
명확히하기 위해 Linux KVM으로 PCI-Passthrough를 구현하기위한 올바른 '경로'가 무엇인지 확실하지 않습니다. 이 단계에서 나는 올바른 작업을하는 것입니다 의심 추가 CONFIG_DMAR
, CONFIG_DMAR_DEFAULT_ON
및 CONFIG_PCI_STUB
은 "버스 옵션 (PCI 등)"커널 소스 및 재 컴파일의 섹션에.
그러나 이것이 다시 작성하기 전에 필요한 추가 목록을 모두 포함하고 있는지 확실하지 않습니다 . 또는 커널을 다시 컴파일 해야하는 경우 더 쉬운 방법이 있습니까?
내가 참조한 가이드 중 linux-kvm.org 만이 컴파일이 필요하다고 명시 적으로 언급했습니다. Linux-KVM이 이미 설치되어 하이퍼 바이저로 작동합니다.
연구
이 시점에서 내 문제는 내 커널과 관련이 있다고 생각합니다. 내 주요 리소스는 linux-kvm.org ( http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM ) 의 가이드였습니다 . 그러나 분포에 따라 약간 다른 방법을 나타내는 다른 리소스를 찾았습니다.
SUSE- "openSUSE : KVM을 사용한 가상화"(관련성이 낮고 2 링크 제한으로 인해 링크가 생략 됨)
Fedora 안내서는 참조 setsebool
가 RedHat에 특정한 것으로 보일 때까지 작동합니다 . SUSE 설명서는 SUSE에서 그래픽 카드 할당을 지원하지 않음을 나타내지 만 CONFIG_DMAR_DEFAULT_ON
/ boot / config-`uname -r` 에서 문자열을 찾아야하므로 참조하고 있습니다. linux-kvm.org 사이트는 참조는 CONFIG_DMAR_DEFAULT_ON
,이 나타납니다 공통 필요한 구성 요소가 될 수 있도록.
참고 : Fedora 또는 Debian 설명서에서 그래픽 카드에 대한 제한 사항을 찾지 못했습니다. 참조 된 SUSE 문서의 날짜는 2006-2013입니다.
CONFIG_DMAR_DEFAULT_ON
시스템의 / boot / config-`uname -r`에서 찾을 수 없습니다 . 더 많은 연구가 제안 CONFIG_DMAR
, CONFIG_DMAR_DEFAULT_ON
그리고 CONFIG_PCI_STUB
의 지시와 관련이있는 리눅스 커널 구성 항목입니다 linux-kvm.org은 . 따라서 나는이 3 가지 (적어도) 커널 구성 항목으로 호스트 커널을 다시 컴파일해야한다고 생각합니다. intel_iommu=on
내 호스트 OS에 커널 매개 변수로 부팅하는 것만으로는 충분하지 않은 것 같습니다.
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
VT-d / IOMMU / KVM 지원 확인
내 연구에 따르면 PCI-Passthrough에는 VT-d에 대한 CPU 및 마더 보드 지원이 모두 필요합니다.
VT-D
k 가 아닌 INTEL i7-3770 (ark.intel.com/products/65719에 따라) 인 내 프로세서 가 VT-d를 지원함 을 확인했습니다 .
직접 I / O를위한 인텔 ® 가상화 기술 (VT-d) ‡ 예
My Asrock Z77 Extreme4 마더 보드는 VT-d도 지원합니다 (사용자 설명서의 62 페이지 당).
VT-d 인텔 ® VT-d 기술 (Directed I / O 용 인텔 ® 가상화 기술)을 활성화 또는 비활성화하려면이 옵션을 사용하십시오. 이 기능의 기본값은 [해제]입니다.
이오 무
시스템에서 IOMMU를 지원하는지 확인했습니다.
dmesg | grep -e DMAR -e IOMMU | grep -e "DRHD base" -e "enabled"
[ 0.000000] Intel-IOMMU: enabled
KVM
KVM은 PCI-Passthrough 지원 외에 다음과 같이 설치되고 작동합니다.
lsmod | grep kvm
kvm_intel 121968 0
kvm 287749 1 kvm_intel
VT-d가 메인 보드의 BIOS를 통해 활성화되도록했습니다. 따라서 VT-d 사용을 방해하는 하드웨어 / BIOS 문제는 의심되지 않습니다. 어쨌든, 비디오 카드를 호스트에서 성공적으로 분리하여 가상 머신에 다시 할당 할 수 없습니다 .
결산 생각
마지막으로 테스트를 시도했다고 언급하고 싶습니다.
echo "8086 10b9" \> /sys/bus/pci/drivers/pci-stub/new_id
echo "0000:01:00.0" \> /sys/bus/pci/devices/0000:01:00.0/driver/unbind
echo "0000:01:00.0" \> /sys/bus/pci/drivers/pci-stub/bind
echo "8086 10b9" > /sys/bus/pci/drivers/pci-stub/remove_id
kvm -m 512 -boot c -net none -hda debian-7.1.0-amd64-netinst.iso -device pci-assign,host=01:00.0
대상 VM을 생성하려고 시도한 후 다음 오류가 발생했습니다.
Failed to assign device "(null)" : Device or resource busy
*** The driver 'pci-stub' is occupying your device 0000:01:00.0.
***
*** You can try the following commands to free it:
***
*** $ echo "8086 10b9" > /sys/bus/pci/drivers/pci-stub/new_id
*** $ echo "0000:01:00.0" > /sys/bus/pci/drivers/pci-stub/unbind
*** $ echo "0000:01:00.0" > /sys/bus/pci/drivers/pci-stub/bind
*** $ echo "8086 10b9" > /sys/bus/pci/drivers/pci-stub/remove_id
***
kvm: -device pci-assign,host=01:00.0: Device 'pci-assign' could not be initialized
호스트가 여전히 비디오 카드 제어를 포기하지 않기 때문에 커널이 적절한 구성 항목으로 컴파일되지 않았기 때문일 것입니다.
이것은 나를위한 새로운 영역이므로 경험이없는 것을 용서해주십시오. 나는 것이 크게 는 확인이 내가 곧 정상 궤도에 오전 단순히 경우에도, 어떠한 의견을 보내 주셔서 감사합니다. 눈부신 감독을했거나 지나치게 생각하고 있다면 알려주십시오. 내 질문에 대한 건설적인 비판도 환영합니다. "도움을 돕기 위해"(또는 너무 많이 포함시킨 경우) 충분한 정보를 제공하지 않은 경우 알려주십시오. 내 질문을보다 명확하게하거나 쉽게 대답 할 수 있도록 도와 드리겠습니다.
미리 감사드립니다.