자유게시판

조회 수 1607 추천 수 0 댓글 11
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

가상머신에는 대표적으로 virtualbox가 있고

저도 아주 좋아하는 프로그램이지만

언젠가는 vga passthrough를 이용해서

리눅스는 리눅스대로, 윈도우는 윈도우대로 전부 사용하고자 하는 욕심이 있기 때문에

vga passthrough를 지원하지 않는 virtualbox를 포기하고

qemu를 이용해서 가상머신을 구성하고자 합니다.

 

qemu에서 가상머신을 설치하는 방법은 워낙 많이 알려져 있으니 

그대로 하시면 됩니다.

 

중요한건 인텔 GVT-g입니다.

제 노트북은 예전 노트북이라 성능이 좋지 않지만

그래도 vga passthrough를 연습하기에는 좋은것 같습니다.

인텔 그래픽, 그중에서도 스카이레이크 이상급은 GVT-g라는 가상 그래픽을 이용한 vga passthrough를 지원하네요.

 

우선 커널 설정부터 변경하겠습니다.

sudo vi /etc/mkinitcpio.conf

test1.jpg

위 스샷과 같이 모듈을 추가합니다.

 

그리고 커널을 재구성합니다.

sudo mkinitcpio -p linux

 

그리고 부트로더에 파라미터를 추가합니다.

test2.jpg

위 스샷과 같이 추가합니다. 블록으로 잡아놨습니다.

이제 재부팅합니다.

 

이제 그래픽카드의 pci 번호를 알아냅니다.

lspci | grep VGA

가장 왼쪽의 00:02.0 와 같은 숫자가 우리가 원하던 번호입니다.

 

ls /sys/devices/pci0000:00/0000:위에서 찾은 번호/mdev_supported_types

(ex. ls /sys/devices/pci0000:00/0000:00:02.0/mdev_supported_types)

를 통해 해당 인텔 그래픽이 지원하는 형태를 확인할 수 있습니다.

정확한 내용은 해당 폴더의 description을 열어보면 확인할 수 있습니다.

저는 i195-GVTg_V5_4를 선택합니다.

 

다음 사이트에서 랜덤하게 UUID를 생성합니다.

https://www.uuidgenerator.net/

저는 a47e3f01-e89d-4151-9973-a73fabacf7a9가 나왔습니다.

다음 코드를 실행해 봅시다.

sudo /bin/sh -c "echo 위에서 만든 UUID > /sys/devices/pci0000:00/0000:위에서 찾은 PCI/mdev_supported_types/위에서 선택한 그래픽/create"

(ex. sudo /bin/sh -c "echo 위에서 만든 a47e3f01-e89d-4151-9973-a73fabacf7a9 > /sys/devices/pci0000:00/0000:00:02.0/mdev_supported_types/i195-GVTg_V5_4/create")
 
만약 정상적으로 진행됐다면 
ls /sys/devices/pci0000:00/0000:00:02.0/
을 통해 위에서 만든 UUID를 확인할 수 있습니다.
아니라면, 커널 구성에서 빠트린게 있다던가
지원하지 않는 인텔 cpu던가
등등 여러가지 이유가 있을 수 있습니다.
 
위와 같은 과정을 매번 해줘야하는데
이건 귀찮은 일이니 systemd 파일로 만들어줍시다.
sudo vi /etc/systemd/system/gvtvgpu.service
 
[Unit]
Description=Create Intel GVT-g vGPU
 
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo '위에서 만든 UUID' > /sys/devices/pci0000:00/0000:위에서 찾은 PCI/mdev_supported_types/위에서 선택한 그래픽/create"
ExecStop=/bin/sh -c "echo '1' > /sys/devices/pci0000:00/0000:위에서 찾은 PCI/위에서 만든 UUID/remove"
RemainAfterExit=yes
 
[Install]
WantedBy=graphical.target

 

그리고 enable해줍시다.

sudo systemctl enable gvtvgpu

 

이제 미리 만들어둔 가상머신을 실행합니다.

자신의 인텔 그래픽에 맞는 드라이버를 설치합니다.

저는 hd520라서 https://downloadcenter.intel.com/product/88355/Intel-HD-Graphics-520 에서 받았습니다.

zip형태로 받은 다음

장치관리자에서 드라이버 업데이트로 폴더 지정 후 설치했습니다.

 

이제 가상머신을 종료합니다.

그리고 가상머신 설정을 변경합니다.(저는 libvirt를 사용하기 때문에 libvirt기준으로 적습니다.)

sudo virsh edit 가상머신이름

(ex. sudo virsh edit win10)

 

test3.jpg

먼저 위 스샷과 같이 첫줄을 변경하고(원래는 kvm만 있을겁니다.)

 

test4.jpg

기존의 graphic, video 블록을 제거하고

위 스샷과 같이 추가합니다.

 

test5.jpg

그리고 hostdev블록을 다음과 같이 추가하는데

uuid부분은 위에서 만든 uuid로 변경해야 합니다.

 

test6.jpg

끝으로 devices블록 다음줄에 qemu:commandline블록을 위 스샷과 같이 추가해줍니다.

 

이제 가상머신을 실행하면

test7.jpg

 

다음과 같이 hd520그래픽으로 가상머신이 실행됩니다.

(해당 스샷은 일부러 해상도를 낮춘 상태입니다.)

 

 

이렇게 열심히 했는데

성능이 더 나은지는 솔직히 잘 모르겠습니다.

제 노트북 성능이 충분하지 않아서 그럴수도 있겠네요.

vga passthrough를 연습하는 것에 의의를 두겠습니다.

 

참고: https://wiki.archlinux.org/index.php/Intel_GVT-g

https://www.reddit.com/r/VFIO/comments/8h352p/guide_running_windows_via_qemukvm_and_intel_gvtg/

  • ?
    가벼운게최고 2020.11.16 21:36

    그냥 기존 방식(qxl)이 훨씬 부드럽네요

    안돼..

  • ?

    음... 저는 vnc로 해서 그런거고

        <graphics type='spice'>

          <listen type='none'/>

          <gl enable='yes'/>

        </graphics>

        <video>

          <model type='none'/>

        </video>

    으로 옵션으로 주면 훨씬 빠릿합니다.

    근데 제가 vnc로 옵션을 준건 어쩔 수 없는 사정이 있었습니다.

    test8.jpg

    예전에 너무 혹사를 해서 그런건지(95도의 온도를 견뎌가며, 다크소울 창모드를 강행했습니다),

    아니면 설정을 잘못준건지

    화면이 깨지네요

    가상머신 내에서 창을 잡고 드래그하면 그 순간에는 전부 정상으로 보이는데

    대체 왜 저럴까요

    vga passthrough시 훨씬 부드럽게 사용이 가능하다는걸 알게 된 걸로 만족해야겠습니다..

    당장 실사는 불가능하지만.. ㅠ

     

  • ?
    가벼운게최고 2020.11.17 00:03

    와 해결했어요

    근데 워낙 별짓을 다 해서 

    어떤거 덕분에 해결된건지는 잘 모르겠네요; ㅎ

  • ?

    test1.jpg

     

    어제 늦어서 확인하지 않았고 오늘 확인해봤습니다.

    zsh_history를 보면서 제가 한 행동을 하나씩 반대로 지워갔는데

    딱 한가지만 추가하면 해결되는 문제였습니다.

     

      <qemu:commandline>

        <qemu:env name="MESA_LOADER_DRIVER_OVERRIDE" value="i965"/>

      </qemu:commandline>

     

    이미 아치위키에 해결법이 올라와 있는데

    다른데서 열심히 뒤지던 제가 바보같았습니다..

    https://wiki.archlinux.org/index.php/Intel_GVT-g#Garbled_graphics

  • ?
    가벼운게최고 2020.11.17 22:53

    libvirt나 virt-manager를 쓰지 않고

    그냥 qemu로 터미널상에서 실행하고 싶어서

    스크립트를 만들었습니다.

    기존 방식으로 가상머신을 실행하고

    ps -ef | grep qemu에 있는 옵션들을 보면서 조금씩 수정했습니다.

    libvirt와 virt-manager를 삭제하고 사용중인데 당장은 별 문제가 없네요.

     

    #!/bin/sh

    export MESA_LOADER_DRIVER_OVERRIDE=i965

     

    sudo qemu-system-x86_64 \

    -name win10 \

    -uuid ac779ce5-4cee-4f60-9bc9-6b4b3c916a43 \

    -enable-kvm \

    -cpu Skylake-Client-IBRS,hypervisor=on,arch-capabilities=on,ssbd=on,hv-time,hv-relaxed,hv-vapic,hv-spinlocks=0x1fff,hle=off,rtm=off \

    -smp cores=2,threads=2,sockets=1 \

    -m 4G \

    -machine type=q35,accel=kvm,kernel_irqchip=on \

    -global kvm-pit.lost_tick_policy=delay \

    -global ICH9-LPC.disable_s3=1 \

    -global ICH9-LPC.disable_s4=1 \

    -rtc base=localtime,driftfix=slew \

    -drive file=/var/lib/libvirt/images/win10.img,format=raw,media=disk \

    -device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 \

    -device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 \

    -device pcie-root-port,port=0x12,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 \

    -device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 \

    -device pcie-root-port,port=0x14,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 \

    -device pcie-root-port,port=0x15,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 \

    -device pcie-root-port,port=0x16,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 \

    -device pcie-pci-bridge,id=pci.8,bus=pci.7,addr=0x0 \

    -device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.2,addr=0x0 \

    -device virtio-serial-pci,id=virtio-serial0,bus=pci.3,addr=0x0 \

    -device virtio-balloon-pci,id=balloon0,bus=pci.5,addr=0x0 \

    -device intel-hda -device hda-duplex \

    -usb -device usb-tablet \

    -nic model=virtio-net-pci \

    -device vfio-pci,sysfsdev=/sys/devices/pci0000:00/0000:00:02.0/02f9c2ca-962d-4265-96c5-68f6fdebe378,x-igd-opregion=on,display=on,ramfb=on,driver=vfio-pci-nohotplug,xres=1024,yres=768 \

    -display gtk,gl=on \

    -vga none

  • ?
    가벼운게최고 2020.11.17 23:09

    써보면서 느끼는 거라면 생각보다 쓸만하다는거네요

    인텔이 지금처럼 죽쑤지만 않았으면 나중에 노트북 새로 살때 인텔 노트북으로 사서 이 기능을 이용할거 같은데

    지금 인텔 상황을 보면 참.. 

    amd도 지원을 해주면 모르겠는데, 내장 그래픽으로는 지원안하고 그나마도 전문가용에만 지원한다는거 같네요

    노트북은 무게가 최우선이라 생각해서 외장달린걸 살 생각이 없는데..

  • ?
    Moordev 2020.11.17 16:32
    VGA Passthrough가 훨씬 부드러운것은 알지만 제 PC는 지원이 안 되네요 ㅜ(하스웰)
  • ?
    나눔앱하자 2020.11.18 23:14

    VGA passthrough 기능이 뭔지부터 굼금하네요~

  • ?
    가벼운게최고 2020.11.19 07:31
    가상머신의 vga를 가상화해서 사용하는게 아닌 컴퓨터 부품인 vga와 직결하는겁니다. 여기서 사용된 vga는 인텔 내장 그래픽을 쪼개서 호스트와 게스트가 각각 사용했다고 생각하시면 됩니다. 엔비디아나 암드도 할 수 있지만 자사의 전문가 라인업을 위해 일반사용자 제품에는 지원을 하지 않아서 보통은 사용하려면 vga두개가 필요하던가 내장하나 외장하나가 필요하던가 쓸때마다 호스트 vga연결을 끊던가 등 방법이 필요합니다.
  • ?
    Moordev 2020.11.20 07:26
    인텔은 내장그래픽을 직접 쪼개서 이용이 가능하군요.
    AMD라인업에서는 APU시스템(르누아르,피카소 등)에 추가로 GPU를 추가하는것으로 해결하는데 인텔시스템을 쓰는것도 괜찮은 방법같네요.
  • ?
    가벼운게최고 2020.11.21 17:55

    인텔..

    최근 몇년사이 너무 바보처럼 돼서 인텔 cpu 제품을 구매하기가 꺼려지는게 문제에요..


List of Articles
번호 제목 추천 수 글쓴이 날짜 조회 수
1755 리눅스 쓸수록.. 15 0 꼬꼬댁 2018.04.21 3266
1754 칼리리눅스인데요.. 1 0 맥고양이 2018.04.22 780
1753 바퀴벌레 키워서 돈 벌기 2 0 세벌 2018.04.23 702
1752 [네이버쇼핑] 양념 돼지갈비 왕구이 1.6kg (9,920원/3000원) 8 0 기므리 2018.04.24 716
1751 HTML5로 고전 게임도 할 수 있군요! 9 0 krhamoni 2018.04.25 930
1750 DOS 게임을 웽 브라우저로 즐길 수 있습니다. 12 0 krhamoni 2018.04.25 778
1749 마이크로소프트, 역사상 최초 자체 개발 리눅스 배포 8 0 버디버디 2018.04.25 938
1748 닌텐도 스위치에서 리눅스가 구동된다고 합니다. 7 0 PEACH 2018.04.25 1380
1747 [모임] Ubuntu 18.04 Release Party @ Seoul 0 행복한펭귄 2018.04.26 652
1746 Ubuntu 18.04 LTS 다운로드 2 0 iskra 2018.04.27 1003
1745 남북 정상회담 기념 긴급 IT 교류 좌담회 2 0 행복한펭귄 2018.04.27 697
1744 [질문] tar로 백업후 복구할때 포맷하고 해야하나요? 4 0 iloveapink 2018.04.28 938
1743 [후기] Ubuntu 18.04 Release Party @ Seoul 참석 후기 7 file 0 One 2018.04.29 1651
1742 [고전게임] 스타듀밸리(Stardew Valley) 멀티플레이 베타 출시 5 0 PEACH 2018.05.02 1133
1741 이제 쿠팡 하면 '쿠팡맨' 아닌 '오픈소스'가 먼저 떠오를 수도 있겠습니다. 1 0 PEACH 2018.05.02 886
1740 결막하 충혈 5 0 꼬꼬댁 2018.05.05 922
1739 [소개] 무료로 TV볼 수 있는 TV Radius 4 file 0 행복한펭귄 2018.05.11 1374
1738 애플과 골드맨삭스 브랜드를 입은 신용카드 출시 예정 7 file 0 PEACH 2018.05.11 700
1737 [잡담] 공공 SW 유지관리요율 15% '공염불' 2 0 행복한펭귄 2018.05.14 697
1736 [잡담] "초중학생 SW교육 필요할까"…토크콘서트 2 0 행복한펭귄 2018.05.14 785
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 93 Next
/ 93
CLOSE