Skip to content
Thuan Bui's Blog
Go back

[Proxmox] Cấu hình iGPU Passthrough cho máy ảo VM

Trước đây mình đã chia sẻ cách cấu hình iGPU Passthrough cho LXC Container trên Proxmox để Plex tận dụng tính năng Quick Sync của iGPU (intel GPU) cho việc transcode phim. Dạo này mình ngồi vọc XPEnology trên Proxmox nên có nghiên cứu thêm cách cấu hình iGPU Passthrough cho máy ảo (Virtual Machine).

Có hai cách cấu hình iGPU Passthrough cho máy ảo VM:

Bài viết này là hướng dẫn cách cấu hình Full iGPU Passthrough. Còn Split iGPU GVT-g Passthrough hẹn sẽ chia sẻ sau.

I. Yêu cầu chuẩn bị

II. Cấu hình trên host Proxmox

Truy cập SSH vào Proxmox để chỉnh sửa một số file cấu hình

1. Chỉnh sửa grub

Terminal window
nano /etc/default/grub

Tìm dòng GRUB_CMDLINE_LINUX_DEFAULT và sửa lại thành như sau

Terminal window
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction initcall_blacklist=sysfb_init video=simplefb:off video=vesafb:off video=efifb:off video=vesa:off disable_vga=1 vfio_iommu_type1.allow_unsafe_interrupts=1 kvm.ignore_msrs=1 modprobe.blacklist=radeon,nouveau,nvidia,nvidiafb,nvidia-gpu,snd_hda_intel,snd_hda_codec_hdmi,i915"

Mục đích nhằm kích hoạt tính năng passthrough đồng thời ngăn Proxmox sử dụng iGPU khi khởi động.

Kích hoạt những thay đổi vừa chỉnh sửa để hiệu lực trong lần khởi động kế tiếp

Terminal window
update-grub

2. Cấu hình PCI Passthrough

Terminal window
nano /etc/modules

Nhập vào các dòng sau và lưu lại

# Modules required for PCI passthrough
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

Chạy lệnh sau để kích hoạt

Terminal window
update-initramfs -u -k all

3. Khởi động lại Proxmox

Khởi động lại máy chủ Proxmox và chạy lệnh sau để xác nhận

Terminal window
dmesg | grep -e DMAR -e IOMMU

Nếu thấy trong kết quả trả về có dòng sau nghĩa là tính năng IOMMU đã được kích hoạt thành công.

Terminal window
[ 0.058500] DMAR: IOMMU enabled

III. Cập nhật cấu hình máy ảo

Cách cấu hình iGPU cho máy ảo Windows hay Linux đều như nhau.

1. Thêm PCI Device

Bạn truy cập vào phần Hardward của máy ảo, bấm vào Add, chọn PCI Device.

Chọn dòng tương ứng với iGPU trên máy hiện có.

Bấm chọn vào mục All Functions, sau đó bấm Add

Ngoài ra, cần phải thay đổi thông số Machine qua q35 (mặc định là i440fx) để hỗ trợ PCI Express.

2. Xác nhận iGPU hoạt động

Ra lệnh tắt (Shutdown) máy ảo và mở lên lại (Power on) để kích hoạt những thay đổi. Không được chọn Restart trên máy ảo vì cách này sẽ không áp dụng những thay đổi vừa tạo trong mục Hardware.

Trên Windows, bạn có thể truy cập vào Device Manager để xác nhận iGPU đã xuất hiện trên máy ảo.

Trên Linux, bạn có thể dùng lệnh sau

Terminal window
sudo lspci -nnv | grep VGA

Nếu thấy xuất hiện dòng tương tự như dưới đây nghĩa là iGPU đã được passthrough thành công.

Terminal window
00:10.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 530 (Desktop) [8086:3e92] (prog-if 00 [VGA controller])

Còn trên XPEnology, mình kiểm tra bằng lệnh

Terminal window
lspci -tvqnn

Kết quả trả về đã thấy xuất hiện Intel Corporation HD Graphics 530

Terminal window
-+-[0001:01]---00.0 Marvell Technology Group Ltd. 88SE9235 PCIe 2.0 x2 4-port SATA 6 Gb/s Controller [1b4b:9235]
\-[0000:00]-+-00.0 Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller [8086:29c0]
+-1a.0 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 [8086:2937]
+-1a.1 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 [8086:2938]
+-1a.2 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 [8086:2939]
+-1a.7 Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 [8086:293c]
+-1b.0 Intel Corporation 82801I (ICH9 Family) HD Audio Controller [8086:293e]
+-1c.0-[01]----00.0 Intel Corporation HD Graphics 530 [8086:1912]
+-1c.1-[02]--
+-1c.2-[03]--
+-1c.3-[04]--
+-1d.0 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 [8086:2934]
+-1d.1 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 [8086:2935]
+-1d.2 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 [8086:2936]
+-1d.7 Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 [8086:293a]
+-1e.0-[05-09]--+-01.0-[06]--+-03.0 Red Hat, Inc. Virtio memory balloon [1af4:1002]
| | +-07.0 Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] [8086:2922]
| | \-12.0 Red Hat, Inc. Virtio network device [1af4:1000]
| +-02.0-[07]--
| +-03.0-[08]--
| \-04.0-[09]--
+-1f.0 Intel Corporation 82801IB (ICH9) LPC Interface Controller [8086:2918]
+-1f.2 Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] [8086:2922]
\-1f.3 Intel Corporation 82801I (ICH9 Family) SMBus Controller [8086:2930]

Vậy là xong. Chúc bạn thực hiện thành công!

Tham khảo: 3os


Share this post on:

Previous Post
Cài đặt DSM 7.2 (DVA3221) lên máy ảo ESXi 7.0 sử dụng arpl-i18n
Next Post
Học tiếng Nhật – Ngày 105: Luyện kỹ năng nói, viết và nghe