자유게시판

조회 수 1634 추천 수 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
번호 제목 추천 수 글쓴이 날짜 조회 수
1261 엑셀은 사용 불가능한건가요? 5 0 방주 2022.03.09 860
1260 에스페란토어 입력도 이슈가 있나봐요. 2 0 Yueunseon 2021.01.19 557
1259 에러났는데 조금 도와주세요 1 0 라루미 2021.04.25 1335
1258 에디터 추천 부탁드립니다. 4 0 잘몰라요. 2021.11.03 649
1257 업스트림이 뭐죠? 1 0 gegul 2020.04.02 1118
1256 업데이트가 안되고 에러만 생김 3 0 여미마 2019.11.23 1288
1255 업데이트 오류 9 file 0 보이차 2022.07.16 608
1254 업데이트 서버 점검 바랍니다. 3 0 반시12 2019.11.13 833
1253 업데이트 매니저 오류 3 0 dodoria 2022.10.18 586
1252 업데이트 매니저 실행안됨 1 0 리눅스_걸음마 2022.01.06 645
1251 엄청나게 그만두고 있다는 공무원들 0 용소야 2023.10.26 651
1250 얼른 벚꽃이나 폈으면 좋겠네요 0 민지렁이 2024.03.08 47
1249 언니는 괜찮아 이미 배불러 너 다 먹어 0 용소야 2023.10.28 670
1248 어제 하모니카 민트를 지워씁니다. 19 0 스피더 2019.02.03 1110
1247 어어 차가 넘어간다~ 0 young1004 2018.03.07 602
1246 어머니가 쓰시는 컴퓨터에 리눅스를 설치하는게 좋을까요? 4 0 가벼운게최고 2019.04.30 1686
1245 어느 게임 개발자가 리눅스판으로도 게임을 냈더니.. 1 file 0 taiyin 2022.12.22 684
1244 양치 후 절대 하지 말아야하는 것 file 0 재여이 2023.09.08 679
1243 야후의 연타석 홈런 0 string 2016.10.15 6485
1242 앱별로 오디오 볼륨 조절하기 2 file 0 오직파폭99 2021.04.21 1402
Board Pagination Prev 1 ... 27 28 29 30 31 32 33 34 35 36 ... 95 Next
/ 95
CLOSE