Linux에서 KVM 장치 패스 스루를 어떻게 활성화합니까?


13

MSI-GD65 게임 마더 보드와 Intel i7 4790이 있습니다. BIOS의 CPU 기능 섹션에서 VT-D를 사용할 수 있습니다.

Ubuntu 14.04.1 LTS를 실행 중이며 장치를 분리하려고 할 때 다음 메시지가 나타납니다.

# virsh nodedev-detach pci_0000_00_1f_2

오류 : 장치를 분리하지 못했습니다. pci_0000_00_1f_2 오류 : 지원되지 않는 작업 : 현재이 시스템에서 VFIO 또는 KVM 장치 할당이 지원되지 않습니다.

Dmesg에 IOMMU에 대한 정보가 포함되어 있지만 이것이 VT-D가 활성화되어 있는지 여부를 알 수 없습니다

$ dmesg | grep -i iommu

[0.027450] dmar : IOMMU 0 : reg_base_addr fed90000 ver 1 : 0 캡 c0000020660462 ecap f0101a
[0.027455] dmar : IOMMU 1 : reg_base_addr fed91000 ver 1 : 0 캡 d2008020660462 ecap f010da
[0.027521] DRHD베이스의 IOAPIC id 8 0xfed91000 IOMMU 1

누구든지이 시스템에서 VT-D를 활성화하고 PCI 장치를 통해 KVM 게스트에게 전달하기 위해 무엇을해야하는지 조언 할 수 있습니까?


VT 및 VT-d를 활성화 한 후 전체 전원을 껐습니까?
dyasny

답변:


11

이 문제에 대한 해결책은 GRUB 부팅 매개 변수에서 IOMMU를 활성화하는 것입니다.

/ etc / default / grub에서 다음을 설정하여이를 수행 할 수 있습니다.

GRUB_CMDLINE_LINUX_DEFAULT = "intel_iommu = on"

AMD 프로세서를 사용하는 경우 amd_iommu=on대신 부팅 매개 변수를 추가해야 합니다

GRUB_CMDLINE_LINUX_DEFAULT = "자동 시작 amd_iommu = on"

그런 다음 실행 update-grub하고 재부팅하십시오.

이 링크는 저에게 많은 도움이되었습니다 : https://www.centos.org/forums/viewtopic.php?f=47&t=48115

참조 : https://pve.proxmox.com/wiki/Pci_passthrough

iommu가 VT-D에 대한 AMD 대안이라고 믿었 기 때문에 이것은 다소 어려웠습니다.


그리고 이것이 작동하지 않으면 CPU가 VT-D 또는 AMD-VI를 지원하지 않을 수 있습니다 (질문이 명확합니다-다른 사람들을 위해 여기에 게시하겠습니다)
ndemou

5

Anonymouslemming의 답변에 추가 : 우분투 (18.04)의 버그가있는 것 같습니다. 이로 인해 / etc / default / grub의 GRUB_CMDLINE_LINUX_DEFAULT 설정이 무시됩니다.

/etc/default/grub.d/50-curtin-settings.cfg에서 GRUB_CMDLINE_LINUX_DEFAULT를 주석 처리하여 수정할 수 있습니다.

https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1569567


1

다른 모듈에서 사용하기 때문에 하드웨어 요구 사항이있는 것 같습니다 (IOAPIC)이 경우 소프트웨어 끝을 설정하기 만하면됩니다.

적절한 장치 분리를 지원하기 위해 모든 필수 구성 요소가 설치되어 있는지 확인해야합니다. 설치되지 않았거나 설정되지 않은 것 같습니다.

이와 같은 경우에 사용하기 전에 적절한 라이브러리와 커널 모듈을 설치하고 초기화해야합니다. 이것들은 KVM 설정을위한 다양한 "호스트"시스템 유틸리티 및 커널 모듈입니다.

유틸리티를 실행하기 전에 해당 KVM 솔루션을 적절하게 설정하는 방법에 대한 매뉴얼 섹션을 읽고 해당 단계를 수행해야합니다. 필요한 패키지가 설치되어 있기 때문에 처음 시작할 때 단순히 설정되지 않습니다.

문제의 장치가 마더 보드에 내장되어 있으면 기술적으로 PCI 장치가 아니라 PCI 매핑 장치 일 수 있습니다. 이러한 장치는 실제로 다른 방법으로 연결되어 있지만 BIOS를 사용하여 PCI BIOS 공간에 매핑됩니다. 시스템에 연결되는 방법의 다양한 측면에 따라 장치 분리와 호환되거나 호환되지 않을 수 있습니다.

또한 드라이버가 상호 의존적 인 경우 상위 장치를 분리하지 않고 하위 장치를 분리하지 못할 수 있습니다. 부모 장치가 PCI 컨트롤러, PCI 브리지 또는 기타 지원되는 버스 컨트롤러 또는 브리지 인 경우 절대 확실성을 가진 장치 만 분리 할 수 ​​있습니다.


정보 주셔서 감사합니다. 내 질문에 "KVM 에서이 작업을 수행하기위한 문서를 어디에서 찾을 수 있습니까?"가 더 구체적으로 포함되어 있어야합니다.
Anonymouslemming

0

나는 centos7에있어

나는이 오류로 여기에 나를 이끌었지만 내 문제는 (내 경우)를 업데이트하고 줄 끝에 vim /etc/sysconfig/grub추가 하는 것이 아닙니다.intel_iommu=onGRUB_CMDLINE_LINUX

이 명령을 실행해야했습니다

grub2-mkconfig -o /boot/grub2/grub.cfg

그런 다음 재부팅

참고 : 그러나 위의 명령 전에 재부팅으로 grub2-mkconfig를 실행했지만 내가 본 것에서 아무것도하지 않았습니다.

참조 : https://bugzilla.redhat.com/show_bug.cgi?id=1269446

댓글 11과 12

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.