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:

  • Passthrough toàn bộ GPU vào 1 máy ảo duy nhất (Full iGPU Passthrough).
  • Sử dụng công nghệ iGPU GVT-g để chia sẻ GPU cho nhiều máy ảo (Split iGPU GVT-g Passthrough).

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ị

  • Máy chủ Proxmox sử dụng CPU Intel có tích hợp iGPU.
  • Máy ảo VM (Windows / Linux) đã được tạo trên máy chủ Proxmox.

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

nano /etc/default/grubCode language: JavaScript (javascript)

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

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"Code language: JavaScript (javascript)

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

update-grub

2. Cấu hình PCI Passthrough

nano /etc/modulesCode language: Nginx (nginx)

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_virqfdCode language: Nginx (nginx)

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

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

dmesg | grep -e DMAR -e IOMMUCode language: Nginx (nginx)

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.

[    0.058500] DMAR: IOMMU enabledCode language: YAML (yaml)

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

 sudo lspci -nnv | grep VGACode language: Nginx (nginx)

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.

00:10.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 530 (Desktop) [8086:3e92] (prog-if 00 [VGA controller])Code language: CSS (css)

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

lspci -tvqnnCode language: Nginx (nginx)

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

-+-[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]
Code language: YAML (yaml)

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

Tham khảo: 3os

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *


8 Comments

        1. Tuỳ thuộc mainboard của bạn nó có chịu boot nếu không có card rời không thôi. Nếu mainboard hỗ trợ thì proxmox có thể chạy không card vô tư.
          Bạn đang có máy ở nhà thì tự thử nghiệm xem có được hay không.

          1. Cảm ơn bạn. Phải nói mình rất thích đọc blog của bạn. Toàn thủ thuật hữu ích và nâng cao. Chúc blog bạn nhìu người biết đến hơn.

  1. Hi bạn!
    Bạn có thể hướng dẫn cách xuất hình trực tiếp VM (thí dụ là win10) qua cổng xuất hình của card màn hình đã đc passthrough vào VM được không.