자유게시판

조회 수 1627 추천 수 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
번호 제목 추천 수 글쓴이 날짜 조회 수
1708 보안에 취약한 방식과 가장 중요한 기본 사항 2 0 BaroPAM 2023.11.25 1457
1707 하모니카 OS의 보안 강화를 위하여 3단계 인증 솔루션인 BaroPAM 설치 가이드 file 0 BaroPAM 2023.11.24 1409
1706 하모니카는 홍보가 아쉬워요ㅠ 6 0 컴퓨터조아 2023.11.22 683
1705 진작살껄.. RTX 4090 가격이 폭등 이유 0 용소야 2023.11.22 674
1704 맥북 패러럴즈에 하모니카를 설치할 수 있나요.? 2 0 홍반장 2023.11.20 571
1703 ‘정부24’ 먹통 사태가 우리에게 시사하는 의미 file 0 BaroPAM 2023.11.18 1284
1702 오래 앉아 있으면 운동도 소용없어 0 용소야 2023.11.20 646
1701 부산에 비가 조금 내린다고 하던데 0 예안이 2023.11.16 508
1700 해커들의 영화 속 해킹 리뷰 0 용소야 2023.11.14 682
1699 하모니카 페이지 오타 file 0 killsystem10 2023.11.11 574
1698 오늘 날씨 뭔가요 ㄷㄷㄷ.. 0 도하니7845 2023.11.08 562
1697 세계 1위 유튜버 근황 0 용소야 2023.11.06 823
1696 윈도우10에서 11로 업그레이드 하면 안되겠네요 0 다찌마와 2023.11.06 730
1695 스티브 잡스의 A급 인재 고르기 0 용소야 2023.11.05 615
1694 감사합니다 0 미고스 2023.11.05 431
1693 누룽지 0 노먼들 2023.11.03 534
1692 오늘도 진짜 따뜻하네요. 0 재여이 2023.11.03 584
1691 [챗GPT 러닝데이] 개발자에게 부탁하기 두려웠던 나머지...(더보기) file 0 인공지능팩토리1 2023.11.02 602
1690 일본 내 갤럭시 점유율 0 용소야 2023.11.02 603
1689 하모니카 7.0 주소가 접근되는 상태입니다. 3 0 다래 2023.11.01 729
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 94 Next
/ 94
CLOSE