尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PVE下LXC容器运行Ubuntu桌面并实现核显SR-IOV共存方案

PVE下LXC容器运行Ubuntu桌面并实现核显SR-IOV共存方案 之前折腾 PVE 的时候一直想用一台机器同时搞定客厅主机和虚拟机集群一套 Ubuntu 桌面平时能连电视看视频、跑微信 QQ又不想为了它单独开一台 KVM 虚拟机占掉太多资源。后来发现用 LXC 容器跑桌面系统再配合核显 SR-IOV既能输出 HDMI/DP 到物理显示器又能把核显的虚拟功能分给其他虚拟机用整体开销比 KVM 小很多。这篇文章就把这套完整方案整理出来从 PVE 宿主设置、LXC 容器创建、Ubuntu 桌面安装到核显 SR-IOV、物理输出、常用软件集成一步步写清楚。这篇文章适合两类读者一类是已经玩过 PVE想在 LXC 里跑一个带图形界面的 Ubuntu 桌面另一类是打算用一台物理机兼顾“家庭桌面机”和“虚拟化宿主机”的折腾型玩家。按文章操作下来你会得到一个能开机自启、能接显示器、能硬解视频、能装 QQ 微信和浏览器、还能用 Moonlight 串流的 LXC 桌面系统。1. 方案背景与核心概念1.1 为什么不用 KVM 虚拟机而用 LXC 跑桌面PVE 里最常见的跑 Linux 桌面的方式是创建 KVM 虚拟机类似 VMware 装一个 Ubuntu 桌面。KVM 的优势是隔离性好、兼容性高但代价也很明显每个虚拟机都要完整运行一个内核内存和 CPU 开销较大。桌面系统如果还想调用核显硬解视频、跑图形加速需要额外做 GPU 直通或 vGPU 虚拟化配置复杂度高。如果只是想让一个 Ubuntu 桌面作为日常娱乐、办公终端KVM 那套完整虚拟化能力属于“杀鸡用牛刀”。LXC 是 Linux 内核层面的容器方案它与宿主机共享内核但拥有独立的文件系统、进程树和网络栈。PVE 对 LXC 的支持很成熟创建快、启动快、内存占用低。在 LXC 里装 Ubuntu 桌面本质上是把桌面系统的根文件系统放进一个容器中运行进程跑在宿主内核上所以图形设备、输入设备、声卡这类硬件节点可以直接挂载给容器使用反而省掉了 KVM 的 virtio 显卡模拟和远程桌面中转流程。1.2 SR-IOV 是什么为什么需要它SR-IOV 的全称是 Single Root I/O Virtualization允许多个虚拟机或容器共享同一个物理 PCIe 设备。对 Intel 核显来说在支持 SR-IOV 的平台上通常是 12 代酷睿及之后的核显可以通过修改版 i915 驱动把一个物理核显拆成多个虚拟功能 VF。每个 VF 可以被不同的虚拟机或容器独占使用这样一台 PVE 主机就能做到一个 LXC 容器使用核显的某个 VF跑 Ubuntu 桌面并输出物理画面其他 KVM 虚拟机使用另外的 VF做 Jellyfin 硬解转码、Windows 远程桌面加速等一台核显搞定多路输出不需要额外插独立显卡也不用把整块核显直通给某一个虚拟机导致其他虚拟机完全无法使用 GPU。本文标题里提到的“核显 SR-IOV 共存”指的就是同一块 Intel 核显上物理输出和虚拟功能同时可用。这是这套方案相对 KVM GPU 直通最大的优势。1.3 这套方案的收益按照本文流程完成后你可以获得一个比较完整的家庭虚拟化桌面PVE 宿主上跑一个 Ubuntu LXC 容器启动快、占内存少桌面可以通过 HDMI/DP 线直接输出到物理显示器也可以随时切回 Moonlight 串流模式远程从其他设备访问容器内能正常使用输入法、中文界面、Chrome 浏览器、QQ、微信、视频播放器GPU 硬解能力可用视频播放、浏览器视频流畅度接近原生物理机核显通过 SR-IOV 拆分后其他虚拟机仍然可以共享 GPU不会“一核显独宠一个 VM”。2. 环境准备与版本说明2.1 硬件要求这套方案对硬件有一定要求尤其是核显 SR-IOV 部分。建议的硬件条件如下部件建议要求说明CPUIntel 12 代酷睿或更新核显为 UHD 730/770 及以上SR-IOV 支持依赖 12 代后的核显架构主板支持 VT-d 和 SR-IOVBIOS 可开启Above 4G Decoding建议选华硕、微星、技嘉的较新 BIOS 版本内存至少 16GB推荐 32GBLXC 桌面分配 4-8GB 足够但宿主还有其他 VM硬盘任意 SSD容量至少 128GBLXC 根文件系统要容纳桌面软件显示器任意支持 HDMI 或 DP 的显示器用于物理输出验证需要说明的是AMD 核显目前没有开放类似的 SR-IOV 能力。AMD 平台通常只能走整体 GPU 直通给某个虚拟机或者使用 GIM 这类实验性方案与本文的 Intel SR-IOV 思路不同。2.2 PVE 与 Ubuntu 版本选择标题里写的是 Ubuntu 26.04。从 LTS 发布节奏看Ubuntu 26.04 LTS 属于未来版本实际部署时更推荐使用当前已稳定可用的 LTS 版本比如 Ubuntu 22.04 LTS 或 24.04 LTS。原因有两个PVE 的 LXC 容器模板默认提供的是基础 rootfs安装桌面环境时需要依赖 apt 软件源和内核模块LTS 版本的源更稳定桌面环境升级跨度较大选择 LTS 能减少莫名其妙的显卡驱动、输入法兼容问题。本文以 Ubuntu 24.04 LTS 为例因为它内核版本较新对 12 代以上 Intel 核显的支持更完整。如果你是冲着 26.04 来的安装思路完全一致只需要把apt源换成对应版本即可。PVE 版本建议使用 8.2 或更新版本。PVE 8.x 基于 Debian 12内核版本为 6.8配合 i915-sriov-dkms 补丁可以顺利加载 SR-IOV 相关驱动。2.3 整体架构简单画一下最终架构PVE 宿主机 (Debian 12内核 6.8) ├── PVE Web 管理界面 :8006 ├── Linux Bridge: vmbr0 └── Intel 核显 i915 ├── PF (物理功能 card0/renderD128) │ └── 挂载到 LXC 容器输出 HDMI/DP └── VF0 (card1/renderD129) └── 可分配给其他 KVM 虚拟机 └── VF1 (card2/renderD130) └── 保留或分给另一个容器LXC 容器虽然不是 KVM 虚拟机无法直接使用 PCI 直通把 VF 设备传进去但因为容器与宿主机共享同一内核所以可以通过设备节点挂载的方式把/dev/dri/下的显卡节点直接暴露给容器内的用户态程序。容器里的 Xorg、Wayland、mpv 等进程需要打开显示设备时访问的就是宿主内核里同一个 DRM 设备。3. PVE 宿主初始配置3.1 BIOS 与内核参数首先进入主板 BIOS确认开启以下选项VT-d / Intel Virtualization Technology for Directed I/OSR-IOV 相关选项有些主板叫 SR-IOV Support需要开启Above 4G Decoding有的主板叫 Resizable BAR。然后在 PVE 宿主机上修改内核启动参数。编辑/etc/default/grubvim /etc/default/grub找到GRUB_CMDLINE_LINUX_DEFAULT加入GRUB_CMDLINE_LINUX_DEFAULTquiet intel_iommuon iommupt i915.force_probe你的核显PCI IDforce_probe是为了让新版 i915 驱动识别你的核显型号。可以通过以下命令查看核显 PCI IDlspci -nn | grep -i VGA例如输出00:02.0 VGA compatible controller [0300]: Intel Corporation AlderLake-S GT1 [8086:4680]那么force_probe4680。如果你的核显本来就在 i915 驱动默认支持列表里可以不写force_probe但加上无害。更新 GRUB 并重启update-grub reboot重启后确认 IOMMU 是否开启dmesg | grep -i -e DMAR -e IOMMU看到DMAR: IOMMU enabled就说明成功。3.2 安装 i915 SR-IOV 内核驱动原版内核 i915 驱动默认不会开放 SR-IOV 功能需要安装补丁版驱动i915-sriov-dkms。先确保安装了 DKMS 和编译工具apt update apt install -y dkms build-essential linux-headers-$(uname -r)然后克隆并安装 i915-sriov-dkmsgit clone https://github.com/strongtz/i915-sriov-dkms.git cd i915-sriov-dkms make make installmake install会把驱动安装到 DKMS 中这样以后 PVE 内核升级时会自动重新编译补丁版驱动。安装后重启一次宿主机确保加载的是补丁版 i915modinfo i915 | grep -i sriov如果输出里有sriov相关字段说明补丁驱动已经生效。3.3 创建核显虚拟功能 VF重启后查看核显设备目录ls /sys/class/drm/正常情况下会出现card0、renderD128。要创建 VF执行echo 2 /sys/class/drm/card0/device/sriov_numvfs创建成功后再查看ls /sys/class/drm/可以看到多出card1、renderD129、card2、renderD130。card0 card1 card2 renderD128 renderD129 renderD130其中card0/renderD128是物理功能 PFcard1/renderD129是第一个虚拟功能 VF0card2/renderD130是第二个虚拟功能 VF1。注意echo 2 sriov_numvfs这条命令在重启后会失效。要持久化可以写一个 systemd 服务或者直接在 PVE 的 rc.local 里执行。后面最佳实践部分会给出命令。4. 创建 LXC 容器并安装 Ubuntu 桌面4.1 创建容器在 PVE Web 界面创建 LXC 容器也可以直接使用命令行。这里使用命令行创建方便复现。先下载 Ubuntu 24.04 容器模板pveam update pveam available | grep ubuntu下载模板pveam download local ubuntu-24.04-standard_24.04-2_amd64.tar.zst创建容器CTID 设为 100分配 4 核 8GB 内存设置 root 密码和网络pct create 100 /var/lib/vz/template/cache/ubuntu-24.04-standard_24.04-2_amd64.tar.zst \ --hostname ubuntu-desktop \ --memory 8192 \ --cores 4 \ --rootfs local-lvm:20 \ --net0 nameeth0,bridgevmbr0,ipdhcp \ --password 你的密码 \ --unprivileged 0 \ --features nesting1几个参数说明--unprivileged 0创建特权容器。LXC 跑桌面系统会遇到大量设备访问和权限映射问题特权容器最省心。风险是权限隔离比非特权容器弱需要在可信内网环境使用。--features nesting1允许容器内嵌套虚拟化某些软件需要用到。--rootfs local-lvm:20给根文件系统 20GB如果空间充足建议给到 40GB因为桌面环境加微信、QQ、浏览器会占不少空间。启动容器pct start 100 pct enter 1004.2 基础网络与软件源进入容器后先检查网络ip addr如果使用 DHCP 已经拿到 IP可以直接用 SSH 登录容器操作。如果网络不通检查 PVE 宿主的vmbr0是否正常以及容器的eth0是否正确绑定到 bridge。接下来替换为国内软件源以清华源为例sed -i s|http://archive.ubuntu.com/ubuntu|https://mirrors.tuna.tsinghua.edu.cn/ubuntu|g /etc/apt/sources.list apt update如果 Ubuntu 24.04 使用新的 deb822 格式源路径可能在/etc/apt/sources.list.d/ubuntu.sources需要对应修改。执行下列命令确认源路径ls /etc/apt/sources.list.d/4.3 安装 Ubuntu 桌面环境容器内安装完整桌面系统apt install -y ubuntu-desktop这一步会安装 GNOME 桌面、系统设置、常用 GUI 应用等包数量多时间较长。如果不需要完整 GNOME也可以选择轻量桌面apt install -y xfce4 xfce4-goodies但从“开箱即用”角度看ubuntu-desktop最省心GNOME 对 Wayland 支持也最好。安装完成后先不要急着启动桌面因为还需要做显卡设备挂载。4.4 中文语言与输入法先安装中文字体和语言包apt install -y language-pack-zh-hans fonts-noto-cjk fonts-noto-color-emoji配置系统语言为中文update-locale LANGzh_CN.UTF-8重启或重新登录容器后生效。输入法方面推荐安装 fcitx5 中文输入引擎apt install -y fcitx5 fcitx5-chinese-addons fcitx5-config-qt然后在容器用户的环境变量中增加输入法配置。编辑/etc/environment加入GTK_IM_MODULEfcitx QT_IM_MODULEfcitx XMODIFIERSimfcitx如果你更喜欢搜狗输入法可以下载搜狗输入法 for Linux 的 deb 包安装。新版搜狗输入法底层已经兼容 fcitx安装后在 fcitx5 中启用“Sogou Pinyin”即可。5. LXC 与核显 SR-IOV 共存配置5.1 设备节点挂载为了让容器内的桌面系统访问显卡需要把宿主机的/dev/dri目录挂载进容器。编辑容器的配置文件vi /etc/pve/lxc/100.conf在文件末尾追加以下内容lxc.cgroup2.devices.allow: c 226:0 rwm lxc.cgroup2.devices.allow: c 226:128 rwm lxc.cgroup2.devices.allow: c 226:129 rwm lxc.cgroup2.devices.allow: c 226:130 rwm lxc.mount.entry: /dev/dri dev/dri none bind,optional,createdir lxc.mount.entry: /dev/input dev/input none bind,optional,createdir lxc.apparmor.profile: unconfined配置说明226是 DRM 设备的主设备号0、128、129、130分别是 card0、renderD128、renderD129、renderD130 的次设备号lxc.mount.entry直接把宿主机的/dev/dri目录 bind mount 到容器内/dev/input挂载是为了让容器内的 Xorg 可以读取键鼠输入设备lxc.apparmor.profile: unconfined避免 AppArmor 拦截容器内对 DRM 设备的访问这是在 LXC 桌面方案里常用的调试配置。修改后重启容器pct reboot 1005.2 容器内设备节点确认重新进入容器检查显卡设备ls -l /dev/dri/预期输出total 0 drwxr-xr-x 2 root root 80 Apr 1 10:00 by-path crw-rw---- 1 root video 226, 0 Apr 1 10:00 card0 crw-rw---- 1 root video 226, 1 Apr 1 10:00 card1 crw-rw---- 1 root video 226, 2 Apr 1 10:00 card2 crw-rw---- 1 root render 226, 128 Apr 1 10:00 renderD128 crw-rw---- 1 root render 226, 129 Apr 1 10:00 renderD129 crw-rw---- 1 root render 226, 130 Apr 1 10:00 renderD130把桌面用户加入video和render组usermod -aG video,render your_username如果card0/renderD128是物理功能 PFcard1/renderD129和card2/renderD130就是 VF。桌面容器默认使用 PF其他虚拟机可以分配 VF。5.3 验证 GPU 可用性安装vainfo验证视频硬解能力apt install -y vainfo使用物理功能测试vainfo --display drm --device /dev/dri/renderD128预期输出类似libva info: VA-API version 1.17.0 libva info: Trying to display /dev/dri/renderD128 vainfo: VA-API driver: iHD vainfo: Driver version: 23.3.6 VAProfileH264Main : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointVLD看到VAEntrypointVLD就说明硬解通道已打通。接下来桌面的视频播放器就能直接走显卡硬解。6. HDMI/DP 物理输出配置物理输出是整套方案里最有价值也最容易踩坑的部分。LXC 容器与宿主机共享内核理论上容器内的 Xorg 可以直接操作显卡节点输出画面到物理显示器。但有几个前提条件需要满足。6.1 物理输出原理简单理解宿主机内核中的 i915 驱动负责管理物理显卡的显示输出接口而 LXC 容器里的图形协议栈Xorg 或 Wayland通过/dev/dri/card0和 DRM/KMS 接口控制这些输出接口。只要宿主机上没有其他进程抢占 DRM master容器内的桌面就能“借用”宿主内核的 DRM 驱动把画面上到 HDMI 或 DP 口上。6.2 释放宿主的 DRM 权限如果宿主机安装了完整的 desktop 或显示管理器需要先停掉否则 DRM master 会被宿主机的登录管理器抢占。在 PVE 宿主机执行systemctl stop display-manager 2/dev/null systemctl disable display-manager 2/dev/nullPPVE 宿主机本身默认没有桌面只装了 Web 管理界面一般不会出现抢占。但如果你的 PVE 之前折腾过桌面需要检查一下。6.3 启动桌面并输出到显示器在容器内将显示器通过 HDMI 或 DP 线连接到宿主机的主板输出口。然后启动图形环境。如果使用的是 GDM GNOME 桌面可以直接让 GDM 接管显示输出systemctl start gdm3如果正常显示器会进入桌面登录界面。如果驱动或权限没有问题登录后就能看到 Ubuntu 桌面。如果希望手动启动 Xorg 调试可以安装xserver-xorg-video-intel或使用 modesetting 驱动apt install -y xserver-xorg-video-intel然后写一个简单的.xinitrcecho exec gnome-session ~/.xinitrc startx -- -keeptty -verbose 3-keeptty是为了在手动 startx 时保留当前终端便于查看日志。6.4 黑屏与无信号排查物理输出最常见的现象是显示器无信号或者短暂亮起后黑屏。排查顺序如下现象可能原因解决思路显示器完全无信号DRM master 被其他进程占用检查宿主机 PVE 进程停掉 display-manager黑屏但有背光分辨率超出显示器支持范围手动指定 Xorg 分辨率例如xrandr --output HDMI-1 --mode 1920x1080登录界面亮进入桌面后黑屏Wayland 或 GNOME 的 DRM 权限问题尝试改用 Xorg 会话或在/etc/gdm3/custom.conf中设置WaylandEnablefalse输出画面只有字符界面容器启动了显示设备但图形会话未启动查看容器内 Xorg 日志/var/log/Xorg.0.log7. 日常应用全家桶集成桌面环境装好之后重点就是常用软件。以下软件均在 LXC 容器内操作使用的还是同一个 Ubuntu 系统安装方式与物理机没有区别。7.1 谷歌浏览器Google Chrome 在 Linux 下没有直接的 apt 官方源需要下载安装包安装wget -q -O /tmp/google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb apt install -y /tmp/google-chrome.deb安装完成后在应用列表里打开 Chrome 即可。如果地址栏输入中文卡顿或无法输入中文检查 fcitx5 运行时环境变量是否生效。Chrome 的硬件视频加速配置访问chrome://flags开启“Hardware Media Key Handling”和“Video Acceleration”相关选项。重启浏览器后可以在视频播放页面按ShiftCtrlAltI打开视频统计信息确认是否走Video Decoder: HW。7.2 QQ 与微信QQ 官方已经提供 Linux x64 版本微信也发布了国产 Linux 系统适配版。安装方式比较直接从官网下载 deb 包后执行dpkg -i linuxqq_*.deb dpkg -i wechat*.deb如果依赖缺失执行apt -f install修复。需要注意两点新版微信 Linux 版对 Wayland 支持不完善输入框偶尔无法弹出输入法。建议在 GNOME 登录界面选择“Ubuntu on Xorg”会话兼容性最好。QQ 和微信都会在后台启动大量辅助进程占内存 1-2GB 属于正常。所以在 8GB 内存的容器里两者同时开着会明显吃紧建议内存至少给到 8GB。7.3 视频播放器与 VA-API 硬解推荐安装 mpv 和 VLCapt install -y mpv vlcmpv 使用 vaapi 硬解播放时指定 DRM 设备mpv --hwdecvaapi --vogpu --gpu-contextdrm --gpu-apivulkan --drm-device/dev/dri/renderD128 video.mkv如果使用 Xorg 会话可以简化为mpv --hwdecvaapi video.mkvVLC 中设置硬解打开“工具 - 偏好设置 - 输入/编解码器”硬件加速解码选择“VA-API 视频解码器”。之后播放 HEVC 或 H.264 视频时CPU 占用率会明显下降。7.4 Moonlight 串流Moonlight 是 NVIDIA GameStream 和开源自组服务端 Sunshine 的客户端。在 LXC 桌面里安装后可以串流到另一台安装 Sunshine 的高配主机玩 PC 游戏也可以把本桌面作为服务端让手机/平板远程访问。安装客户端flatpak install flathub com.moonlight_stream.Moonlight如果你的发行版没有启用 Flatpak先安装apt install -y flatpak flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepoMoonlight 客户端使用非常简单打开应用后它会自动扫描局域网内的 Sunshine/GameStream 主机输入配对码后即可串流。如果想把 LXC 桌面本身作为服务端可以安装 Sunshineapt install -y sunshineSunshine 安装完成后浏览器访问https://localhost:47990进行设置。串流时要注意如果桌面容器已经通过 HDMI/DP 物理输出到显示器同时又把画面串流给其他设备每次操作需要确认只保留一个“虚拟显示器会话”否则会出现分辨率被迫改到物理显示器分辨率的情况。8. 常见问题汇总问题现象常见原因解决思路PVE 创建 LXC 后容器内没有/dev/dri未在/etc/pve/lxc/100.conf中配置设备挂载按 5.1 节追加配置并重启容器容器内vainfo报 PERMISSION ERROR用户不在video或render组usermod -aG video,render 用户名重新登录写入sriov_numvfs失败BIOS 未开启 VT-d 或 SR-IOV 选项重启进 BIOS 开启 VT-d / SR-IOV / Above 4G Decoding宿主重启后 VF 消失sriov_numvfs是临时配置编写 systemd 服务或开机脚本自动写入HDMI 输出黑屏宿主机 display-manager 抢占 DRM停用宿主机 display-manager确认无其他进程占用显卡节点中文输入法无法在 Chrome 中呼出环境变量未生效确认/etc/environment中的 fcitx 变量重启会话GNOME 桌面很卡没开硬件加速或容器内仍用 llvmpipe 软渲染检查/dev/dri权限安装驱动后用glxinfo验证渲染器是否显示 i915Moonlight 串流时只有声音没有画面Sunshine 选择了非法分辨率或编码器不支持在 Sunshine Web 管理页切换编码器或降低串流分辨率9. 最佳实践与工程建议9.1 设备挂载最小化虽然我在 5.1 节给出了lxc.cgroup2.devices.allow: c 226:0 rwm这类设备规则但实际生产中建议只开放真正需要的设备节点。如果容器不需要访问某个 VF就不要把对应的次设备号加入白名单。设备越少被容器内恶意程序攻击时的影响面越小。9.2 创建 VF 自动化为 systemd 服务echo 2 sriov_numvfs在每次重启后失效。可以写一个简单的 systemd 服务。在宿主机创建/etc/systemd/system/i915-sriov.service[Unit] DescriptionEnable Intel i915 SR-IOV VFs Aftermulti-user.target [Service] Typeoneshot ExecStart/bin/sh -c echo 2 /sys/class/drm/card0/device/sriov_numvfs RemainAfterExityes [Install] WantedBymulti-user.target启用服务systemctl daemon-reload systemctl enable --now i915-sriov.service也可以先做一步判断如果/sys/class/drm/card0/device/sriov_numvfs已经大于 0就不重复写入。9.3 容器快照与备份LXC 容器的备份和恢复比 KVM 简单得多。在安装完桌面、配置好输入法和所有软件后建议对容器做一个快照pct snapshot 100 desktop-ready --description 桌面环境常用软件已就绪后续如果折腾坏了可以随时回滚。LXC 的 rootfs 在 LVM-Thin 存储上时快照几乎是瞬时的。9.4 性能与内存控制桌面容器建议分配 8GB 内存同时在 PVE 中开启 swap 选项避免内存不足时直接 OOM 崩溃。还可以给容器设置 CPU 配额限制它不影响宿主机上其他服务pct set 100 --cpulimit 4 --cpuunits 1024cpuunits控制在多个容器竞争 CPU 时的权重桌面容器设 1024 属于中等级别。9.5 安全提醒特权容器的权限隔离相对较弱容器内能访问到宿主的设备节点。建议不要直接以 root 权限在桌面容器里乱跑未知脚本宿主机防火墙限制 8006 端口和 SSH 端口的来源 IP桌面容器只在内网使用不暴露到公网如果需要远程访问走 Moonlight 或 SSH 隧道不要直接开公网端口。10. 总结这篇文章围绕“PVE LXC 运行 Ubuntu 桌面”这个核心场景完成了一条从 PVE 宿主配置、i915 补丁驱动安装、SR-IOV 创建 VF到 LXC 容器创建、Ubuntu 桌面安装、设备挂载、HDMI/DP 物理输出再到常用软件集成的完整链路。最终效果是一台 PVE 宿主机上的 LXC 容器里跑着能直接接显示器、能硬解视频、能用 QQ 微信 Chrome、能串流桌面的 Ubuntu 系统同时核显还能通过 SR-IOV 把能力分给其他虚拟机做到物理输出与虚拟化共存。如果你配置过程中遇到卡在 VF 创建、HDMI 黑屏或输入法失效等问题优先对照第 8 节的表格排查。还有一个容易被忽略的点LXC 跑桌面其实比 KVM 更依赖宿主机内核和设备节点权限遇到问题时先看/dev/dri是否存在、权限对不对很多“黑屏”和“无法启动桌面”的根因都在这里。这套方案下一步可以折腾的方向有很多把 Jellyfin、Emby 这类媒体服务跑在另一个使用 VF 的虚拟机里共享同一个核显或者在 LXC 桌面里接入蓝牙手柄把它当成客厅游戏机串流终端。核心的 LXC SR-IOV 这条路踩顺了后面很多玩法都是在这个基础上叠功能而已。
返回列表