자유게시판

조회 수 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
번호 제목 추천 수 글쓴이 날짜 조회 수
1735 질문있는데 혹시 아시는 분 있으신가요? 1 0 wkek2nk2 2023.12.13 518
1734 참 쉽지 않은 공부 입니다. file 0 재여이 2023.12.13 539
1733 ai공부해보려하는데요. 1 0 용소야 2023.12.13 496
1732 가입합니다 1 0 로케트박 2023.12.12 449
1731 오늘도 공부하고갑니다~~ 1 0 메타몽실 2023.12.12 483
1730 [★고용노동부 5년인증 우수훈련기관] 전액국비지원 기업형 실무 인재 양성 자바웹개발자 과정! file 0 아이티윌부산 2023.12.12 438
1729 요상한 날씨........ 0 메타몽실 2023.12.11 518
1728 날씨 겁나더움. 0 용소야 2023.12.10 526
1727 HamoniKR 7.0 (kumkang) 미디어 매체 의 출시 홍보 보도 자료 가 안보이네요 ? 1 0 새벽별빛 2023.12.22 349
1726 비밀번호 없이 로그인하는 패스워드리스 인증으로 보안·편의성 강화 file 0 BaroPAM 2023.12.09 966
1725 한주가 끝나가네요 0 메타몽실 2023.12.08 571
1724 [SD러닝데이] 광고에서의 생성 AI 활용 실무사례 모음집 file 0 인공지능팩토리1 2023.12.07 599
1723 알약 설치 파일 어디있나요? 2 0 최재우 2023.12.07 655
1722 사이트에서 공부 많이합니다 감사해요 1 0 메타몽실 2023.12.07 694
1721 우박 깜짝 놀랬네요 0 이영훈 2023.12.06 540
1720 우박 보신 분 있나요 ? 0 김이박 2023.12.06 563
1719 갑자기 우박ㅠㅠ 다들 괜찮으신가요 0 메타몽실 2023.12.06 502
1718 리눅스 생태계를 발전하기 위해서는 1 0 닝니니 2023.12.06 596
1717 오늘도 화이팅입니다 0 메타몽실 2023.12.05 494
1716 [★고용노동부 5년인증 우수훈련기관] 전액국비지원 IT 전문가 양성 모집 0 아이티윌부산 2023.12.05 461
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 93 Next
/ 93
CLOSE