[KVM] VGA Æнº½º·ç °¡À̵å

Tzimiskes   
   Á¶È¸ 12214   Ãßõ 6    

페도라 26 기준입니다.


준비물

Vt-d 지원 CPU/MB, UEFI GOP 지원 VGA


Grub 설정

1. CMOS에서 vt-d 켜져있는지 확인합니다.

2. etc/sysconfig/grub 연 뒤 GRUB_CMDLINE_LINUX 열에 intel_iommu_on iommu=pt rd.driver.pre=vfio-pci 추가합니다. (iommu=pt는 옵션)

3. grub2-mkconfig -o /etc/grub2-efi.cfg


vfio 드라이버 설정

1. lspci -nnk 실행 후 패스스루할 VGA를 찾습니다. 1번 PCIE 슬롯은 보통 01:00.0과 01:00.1에 등록되어 있습니다.

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM206 [GeForce GTX 950] [10de:1402] (rev a1)
Subsystem: Gigabyte Technology Co., Ltd Device [1458:36c5]
Kernel driver in use: nouveau
Kernel modules: nouveau
01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:0fba] (rev a1)
Subsystem: Gigabyte Technology Co., Ltd Device [1458:36c5]
Kernel driver in use: nouveau
Kernel modules: snd_hda_intel

여기서 각각 10de:1042, 10de:0fba가 device id입니다.

2.  /etc/modprobe.d에 새로운 conf파일 생성 후 options vfio-pci ids=10de:1042,10de:0fba 입력 후 저장합니다.

3. /etc/dracut.conf.d에 새로운 conf파일 생성 후 add_drivers+="vfio vfio_iommu_type1 vfio_pci vfio_virqfd" 입력 후 저장합니다.

4. dracut -f 명령으로 initramfs 생성 후 재부팅합니다.


VM 생성 (Virt-manager 기준)

1. Root 세션으로 VM 생성하셔야 패스스루 가능합니다.

2. UEFI(OVMF)는 거의 필수입니다. 칩셋은 Q35로 했는데 i440FX에서도 동작은 하긴 합니다.

3. VM 생성, 윈도우 설치 후 하드웨어 추가 -> PCI 호스트 디바이스 -> VGA랑 HDMI audio 추가합니다.

4. 쿼드로 제외한 일반 Nvidia VGA를 패스스루 할 경우 추가 설정이 필요합니다. sudo virsh edit (VM이름) 하시면 xml파일이 하나 뜹니다

<features>
  ...
  <hyperv>
    ...
    <vendor_id state='on' value='whatever'/>
  </hyperv>
  ...
  <kvm>
    <hidden state='on'/>
  </kvm>
</features>

위처럼 feature를 찾아서 빨간색으로 표시된 두줄을 추가하면 됩니다. whatever에는 12글자 이하 아무거나 입력하셔도 됩니다.


옵션 1. 사운드 설정

1. Virt-manager에서 ICH6이나 ICH9 사운드를 추가합니다. 아마 기본설정시 ICH6이 있을겁니다.

2. xml 파일 제일 윗줄에

<domain type='kvm'>

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

로 변경합니다.

3. 역시 xml파일 아래줄에

  <devices>
    ...
  </devices>
  <qemu:commandline>
    <qemu:env name='QEMU_AUDIO_DRV' value='pa'/>
    <qemu:env name='QEMU_PA_SERVER' value='127.0.0.1/>
    <qemu:env name='QEMU_PA_SAMPLES' value='4096'/>
    <qemu:env name='QEMU_AUDIO_TIMER_PERIOD' value='150'/>

  </qemu:commandline>

</domain>

를 추가해줍니다. 초록색은 생략해도 됩니다.

4. /etc/pulse/default.pa를 편집합니다.

#load-module module-native-protocol-tcp

를 찾아서 언코멘트 해주고

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1

빨간색을 추가해 주면 됩니다. 설정이 끝나면 호스트 리부팅이 필요합니다.

5. 이렇게 해도 KVM의 경우 사운드에 문제가 많습니다. 틱틱거리는 잡음이 들리던가 동영상 재생시 딜레이가 생기던가..

3에 초록색으로 표시된 옵션을 추가해서 값을 조절해보는 식으로 해결하는 경우도 있긴 한데 안될수도 있습니다.

레딧에서는 그냥 USB나 PCIE 외장 사운드를 추가로 패스스루 하거나 VGA의 HDMI오디오를 쓰는게 최선이라고 하더군요.


옵션 2. Message signaled interrupt 설정

설정 안해주면 게스트 리부팅시 뻗어버리거나 모니터 껐다 켤 때 화면이 깨지는 문제가 가끔 발생했습니다.

http://www.mediafire.com/file/2kkkvko7e75opce/MSI_util_v2.zip

링크한 유틸리티를 윈도우 게스트에서 관리자 권한으로 실행 한 뒤 패스스루한 VGA와 HDMI 오디오 장치에 설정해 주면 됩니다.


옵션 3. Secondary VGA로 호스트 부팅

Primary VGA를 vfio로 넘길 경우 호스트 부팅시 X가 실행되지 않는 경우가 있습니다.

제 경우는 호스트 인텔 내장+게스트 GTX950 패스스루인데 CMOS에서 인텔 내장을 primary로 설정해도 리눅스에서는 GTX950을 프라이머리로 인식합니다.

1. /etc/X11/xorg.conf.d에 새로운 conf 파일을 생성합니다.

Section "Device"
  Identifier "Intel Graphics"
  Driver "intel"
  BusID  "PCI:0:2:0"
EndSection

BusID는 lspci로 찾으면 됩니다. 드라이버는 lspci에는 i915로 나오는데 i915를 넣으면 안됩니다.

2. grub 커맨드라인에 video=efifb:off를 추가해줍니다.



참고

https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF
http://vfio.blogspot.kr/2015/05/vfio-gpu-how-to-series-part-1-hardware.html
http://vfio.blogspot.kr/2015/05/vfio-gpu-how-to-series-part-2.html
http://vfio.blogspot.kr/2015/05/vfio-gpu-how-to-series-part-3-host.html
http://vfio.blogspot.kr/2015/05/vfio-gpu-how-to-series-part-4-our-first.html
http://vfio.blogspot.kr/2015/05/vfio-gpu-how-to-series-part-5-vga-mode.html
https://www.redhat.com/archives/vfio-users/2016-August/msg00024.html
https://www.reddit.com/r/VFIO/

¼ÛÁÖȯ 2017-08
Ãßõµå¸³´Ï´Ù!
     
Tzimiskes 2017-08
°¨»çÇÕ´Ï´Ù.
Tzimiskes ´Ô ¾È³çÇϼ¼¿ä ÁÁÀº±Û °¨»çµå¸³´Ï´Ù.
µÎ°¡Áö ±Ã±ÝÇÑ »ç¾ÈÀÌ ÀÖ¾î ¿©Â޾´Ï´Ù.
1. Á¦°¡ Á¢Çغ¸Áö ¾ÊÀº °¡»óÈ­ ÇÁ·Î±×·¥°°Àºµ¥ Á¤È®ÇÑ À̸§ÀÌ ¹«¾ùÀΰ¡¿ä(Àü esxi¿Í xenserver¸¸ ´Ù·ïºÁ¼­¿ä..)

2. ÃÖ±Ù ÀÎÅÚ ³»Àå ±×·¡ÇÈ Æнº½º·ç¸¦ ÇؾßÇÒ ÀÏÀÌ ÀÖ¾î °è¼Ó ¾Ë¾Æº¸°í Àִµ¥¿ä. Ȥ½Ã ¸®´ª½º»ó¿¡¼­µµ ÀÎÅÚ ³»Àå±×·¡ÇÈ Æнº½º·ç°¡ Áö¿ø µÇ³ª¿ä...?
    (esxi´Â Áö¿øÇÏÁö ¾Ê°í xenserver´Â µÇ´ÂÁÙ ¾Ë°í °è¼Ó Çغôµ¥ À©µµ¿ì¿¡¼­¸¸ µÇ´õ¶ó±¸¿ä..¤¾¤¾)
     
Tzimiskes 2017-08
1. KVM ÇÏÀÌÆÛ¹ÙÀÌÀúÀÔ´Ï´Ù.
2. Á÷Á¢ Çغ¸Áø ¾Ê¾Ò½À´Ï´Ù¸¸ ±¸±Û¸µ Çغ¸´Ï ¼º°øÇÑ »ç·Ê°¡ ÀÖ´Â °Í °°½À´Ï´Ù.
https://forum.proxmox.com/threads/guide-intel-intergrated-graphic-passthrough.30451/
     
°í±×¸Á 2017-08
Ȥ½Ã³ª ÇÏ½Ã´Ï ÀÌ ±Ûµµ ÂüÁ¶ Çغ¸¼¼¿ä..

https://www.redhat.com/archives/vfio-users/2016-June/msg00106.html
Æäµµ¶ó Æнº¾²·ç °­Á´ óÀ½ºÃ½À´Ï´Ù. Á¤¼º±Û ŸëÀϾú½À´Ï´Ù.^^ Ãßõ!


Á¦¸ñPage 1/128
2015-12   1477459   ¹é¸Þ°¡
2014-05   4940599   Á¤ÀºÁØ1
2018-08   41827   limitless
2013-06   28056   SkyBase
2013-06   12128   ȸ¿øK
2016-01   9792   MikroTikÀÌÁø
2015-12   6263   ȸ¿øK
2013-08   38613   oÈ«Áرâo
2013-05   22296   hatson
2013-05   48368   hatson
2015-12   5567   Á¤ÀºÁØ1
2015-02   12257   pyrasis
2017-08   12215   Tzimiskes
2015-08   14439   isul
2014-09   12304   inoree
2016-12   16147   ²Ü¹úlÃÖÀÎÇõ
2016-06   29328   DoubleSH
2015-12   5699   Á¶ÀçÇü3
2014-09   19956   ¹Úû¸í
2015-12   7868   ȸ¿øK
2014-12   16680   ljssmh1
2016-08   21148   ÄĹÚ
2017-06   7178   ±èȲÁß