proxmox

12~14세대 vGPU Proxmox에서 설정, 우분투 적용

dae-ya 2026. 3. 5. 14:54

vGPU란 하나의 GPU를 가상으로 쪼개 각 vm에 할당하여 하드웨어 가속을 할 수 있게 하는 기술이다.

이걸 통해 윈도우 VM에 하드웨어 가속으로 편집을 할 수 있고 리눅스 VM에서 트랜스코딩용으로 쓸 수 있다.

CPU를 통해 이러한 작업을 하면 과도한 사양을 쓰기 때문에 서버가 과부하 될 수 있다.

이런 좋은 기술을 쓰기 위해 여러 문제와 세팅을 하며 설정을 완료 할 수 있었다.

 

인텔 5세대이상 10세대 이하에서는 GVT-g라는 기술로 vGPU를 지원했다.

소프트웨어적으로 그래픽을 쪼개는 기술이며 리눅스 커널에 드라이버가 이미 포함되어 있어 세팅이 간편하다.

Proxmox GRUB 설정에 i915.enable_gvt=1을 추가하면 된다.

그럼 VM 하드웨어에서 Mapped Device를 선택하여 VRAM 크기만 지정하면 된다.

 

하지만 12세대 이상 14세대 이하(11세대 미포함) CPU는 GVT-g 기술 지원이 끊겼고 기업용 서버 기술이던 SR-IOV를 소비자용 CPU에 넣으면서 여러 설정을 바꿔야 한다.

소프트웨어적으로 분리를 하는 것이 아니라 하드웨어 자체에서 그래픽을 물리적으로 나눈다.

이때 리눅스 커널에서는 공식적으로 이 기능을 지원하지 않는다.

그래서 사용자가 직접 커스텀 패치를(DKMS)를 빌드하여 올려야 한다.

 

다행히도 커스텀 드라이버를 다운받을 수 있게 Github에 올려주신 고마운 분이 계신다.

https://github.com/strongtz/i915-sriov-dkms?tab=readme-ov-file

 

GitHub - strongtz/i915-sriov-dkms: dkms module of Linux i915 driver with SR-IOV support

dkms module of Linux i915 driver with SR-IOV support - strongtz/i915-sriov-dkms

github.com

 

먼저 Proxmox 패키지를 업데이트 하고 커널 버전에 맞게 수정하기 위한 패키지를 다운로드한다.

apt update && apt install pve-headers-$(uname -r) git dkms build-essential -y
git clone https://github.com/strongtz/i915-sriov-dkms.git
cd i915-sriov-dkms
dkms add .
dkms install -m i915-sriov-dkms -v $(cat VERSION) --force

install를 통해 i915 드라이버를 리눅스 커널 시스템에 등록한다.

 

nano /etc/default/grub

GRUB 부트로더를 수정하여 GRUB_CMDLINE_LINUX_DEFAULT 항목에 아래 파라미터를 추가한다.

intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7
# 가상 그래픽을 7개로 나눈 상태 개수 수정시 max_vfs 값을 수정하면 된다.
# 인텔 내장 그래픽 아키텍처는 슬롯이 8개까지만 가질수 있고 
# 그중 한개는 무조건 Proxmox 본체가 가져야한다.
# 그래서 7개가 가상으로 분리가 된다. 7개까지가 최대이며 줄일수는 있지만 8개 이상으로 늘릴수는 없다.

 

저장하고 나오며 GRUB에 수정한 내용을 인식시켜야 한다.

update-grub
update-initramfs -u
# 리눅스는 재부팅시 initramfs라는 작은 임시 운영체제 파일 시스템을 램에 올린다. 
# 이 값을 업데이트 해야 GRUB 수정값을 인식 할 수 있다.
reboot

 

재부팅 이후 가상 그래픽을 7개로 쪼개는 명령어를 입력해야 한다.

echo 7 > /sys/class/drm/card0/device/sriov_numvfs
# 이전 과정에서 개수를 수정했다면 이 명령어도 수정해야한다.
lspci | grep VGA

lspci 명령 결과에서 7개 장치가 나오면 성공이다.

 

VM에 vGPU을 할당하기 위해 주의해야 할 점이 있다.

hardware-add-pci device에서 설정하며 raw device에서 00:02.0이 아닌 00:02.1~7까지 선택하면 된다.

또한 PCI-express는 체크하며 ROM-bar를 반드시 체크 해제해야 한다. vGPU는 물리적 ROM이 없기 때문에 ROM-bar를 켜두면

부팅 시 오류가 발생한다.

 

모든 설정을 완료하고 나서 먼저 윈도우 VM에 vGPU를 할당, 드라이버 설치하여 테스트를 해봤을 때 정상적으로 작동을 했다.

 

그래서 실 사용 중인 우분투 VM에 바로 윈도우 VM과 동일하게 설치를 진행했다.

하지만 /dev/dir 디렉터리에 renderD128이 존재하지 않고 card0만 있었다.

이러면 vGPU가 정상적으로 인식되지 않았다는 뜻이었다.

 

무엇이 문제인지 확인하기 위해 우분투 쉘에서 로그를 확인해 보기로 했다.

dmesg | grep -iE "i915|xe|drm"

 

로그를 확인했더니 아래와 같은 로그가 남아있었다.

[ 3.850143] i915 0000:01:00.0: [drm] *ERROR* Device is non-operational; MMIO access returns 0xFFFFFFFF!
[ 3.850705] i915 0000:01:00.0: Device initialization failed (-5)

 

왜 이런 오류가 나는지 확인해 봤다.

우분투 커널에는 기본적으로 있는 i915 드라이버는 인텔 12세대 이상 쪼개진 내장그래픽을 완벽하게 동작하게 하지 못하므로 순정 드라이버가 vGPU를 일반 그래픽 방법처럼 접근하려다가 거부당하고 커널 패닉이 된 상태이다.

즉 드라이버가 제대로 인식을 못한 상황이라 Proxmox처럼 커스텀 드라이버를 설치하면 된다.

 

sudo apt update && sudo apt install git dkms build-essential linux-headers-$(uname -r) -y

그래서 Proxmox와 동일하게 명령어를 입력했다.

하지만 dkms install를 했더니 오류가 떴다.

Error! The ... dkms.conf for module i915-sriov-dkms includes a BUILD_EXCLUSIVE directive which does not match this kernel/arch/config.
This indicates that it should not be built.

이거 또한 알아보았다.

현재 사용 중인 우분투의 버전은 24.04 LTS 버전이다.

커널을 6.8 버전을 쓰고 있다.

하지만 Github에 올라온 드라이버는 6.12 이상부터 지원이므로 우분투 커널버전에 맞춰 드라이버를 다운그레이드하여 받으면 됐다.

2025.07.22 버전으로 다운그레이드 하여 다운을 했다.

git clone https://github.com/strongtz/i915-sriov-dkms.git
cd i915-sriov-dkms
git checkout 2025.07.22 # 버전 다운그레이드
sudo dkms add .
sudo dkms install -m i915-sriov-dkms -v 2025.07.22 --force

마지막 명령어처럼 07.22 버전을 강제로 설치했고 잘 설치됐다.

 

그래서 작업이 잘 완료됐는지 확인하기 위해 모듈을 확인해 봤다.

sudo modprobe i915

하지만 또 오류가 생겼다

 

modprobe: ERROR: could not insert 'i915': Key was rejected by service

키가 거부되었다고 나와 검색해 보니 커스텀 드라이버를 보안상 허용시킬 수 없어서 나타난 오류라고 확인했다.

즉 보안부팅 때문에 생긴 오류이므로 보안 부팅을 꺼주기로 했다.

 

다행히 보안부팅을 끄는 과정은 굉장히 쉬웠다 일반 PC 바이오스 설정처럼 우분투 VM 부팅 시 ESC를 눌러 옵션을 설정한다

Device Manager-Secure boot configuration을 진입하면 Attempt secure boot 체크 표시를 해제한다.

바이오스와 같이 F10을 눌러 저장하고 나오면 모듈이 잘 작동하는 것을 알 수 있다.

 

하지만 재부팅 시 우분투가 순정 드라이버를 꺼내 올 수 있으니 이 드라이버를 쓰라고 고정해야 한다.

echo "i915" | sudo tee -a /etc/modules
sudo update-initramfs -u

마지막 명령을 입력하지 않으면 다시 순정 드라이버를 쓰므로 꼭 입력해야 한다.

 

그다음으로 잘 작동하는지 보기 위해 다음 명령어를 입력해 확인해 보면 된다.

ls -l /dev/dri

 

그럼 renderD128이 잘 나오는 걸 볼 수 있다.

 

'proxmox' 카테고리의 다른 글

proxmox의 lxc 장단점  (0) 2025.11.15
proxmox를 NFS 통해 백업하기  (0) 2025.11.13
proxmox 1년 사용 후기  (0) 2025.11.12