오늘:
471
어제:
3,169
전체:
3,298,280

자유게시판

조회 수 2178 추천 수 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
번호 제목 추천 수 글쓴이 날짜 조회 수
720 [질문] nimf 설치할 때 옵션 줄 수 없나요? (도커 이미지 생성 문제) 2 0 김원철 2020.11.24 1004
719 2020 대한민국 소프트웨어대전 Softwave 2020 12월 2일(수)~6일(금) 코넥스 B홀 전관 file 0 BaroPAM 2020.11.23 995
718 우분투 20.04 에서 버추얼박스 usb인식 불가 증상 4 0 Japser 2020.11.22 1928
717 섀도우pc라는 클라우드 컴퓨팅 업체가 한국 서비스를 예정중이네요 2 0 가벼운게최고 2020.11.21 1203
716 토렌토란? 1 0 kiwijuice 2020.11.20 1126
715 부팅 시 나타나는 부트 선택 스크린(검정색) 4 0 코코멜로디 2020.11.20 1067
714 리눅스가 은행 서버를 점령하기까지 0 나눔앱하자 2020.11.20 981
713 [HamoniKR 4.0 JIN 64bit] 카카오톡_설치하기가 사라졌어요. 3 0 코코멜로디 2020.11.20 1082
712 도커로 리눅스버전 한컴2020 오피스, 뷰어 설치하기 12 file 0 가벼운게최고 2020.11.20 3944
» qemu와 인텔 가상 그래픽을 이용한 가상머신 사용하기 11 file 0 가벼운게최고 2020.11.16 2178
710 정부에서 지원하는 숙박쿠폰 아시나요? (최대4만원) 0 나이스투미튜 2020.11.12 1121
709 rclone을 이용한 구글드라이브 마운트 1 0 가벼운게최고 2020.11.10 4914
708 리눅스 패널로 폴리바polybar 사용하기 3 0 가벼운게최고 2020.11.06 1614
707 이제 목돈없어도 서울 청년주택 입주 가능 1 0 나이스투미튜 2020.11.06 1039
706 fusuma를 이용한 터치패드 제스쳐 추가하기 0 가벼운게최고 2020.11.04 1344
705 rofi를 이용한 블루투스 애플릿 대체 file 0 가벼운게최고 2020.11.04 979
704 startx를 자동으로 실행하지만 약간의 지연을 주고싶을때 1 0 가벼운게최고 2020.11.04 1000
703 가볍고 그럴듯한 락스크린 betterlockscreen file 0 가벼운게최고 2020.11.02 960
702 rofi를 이용한 와이파이 애플릿 대체 file 0 가벼운게최고 2020.11.02 1063
701 dunst를 이용한 볼륨 조절 및 밝기조절 알람 file 0 가벼운게최고 2020.11.02 1112
Board Pagination Prev 1 ... 62 63 64 65 66 67 68 69 70 71 ... 102 Next
/ 102
CLOSE