PVE教程

PVE教程
落魄君子Proxmox VE (PVE) All-in-One 搭建教程
最近整了一个 N100 的小主机,准备搞个 PVE 试试。这篇文章记录从安装宿主机,到部署爱快、iStoreOS/OpenWrt,再到换源、PCI 直通和核显 SR-IOV 的完整过程。
2026-10-01 更新:补全原教程中的存储调整、订阅提示处理、温度显示、软件源和 SR-IOV 安装与卸载步骤,同时区分新旧版本。当前 PVE 9.2 基于 Debian 13.5 “Trixie”,默认稳定内核为 Linux 7.0;旧节点不要直接套用新版仓库或驱动命令。版本信息参考 PVE 9.2 官方发布说明。
阅读前先确认环境
本文命令在 PVE 宿主机的 Shell/SSH 中执行,除非特别注明“在虚拟机内执行”。代码块中的 IP、虚拟机 ID、文件名和 PCI 地址都是示例,需要按实际环境替换;text 代码块是配置文件内容,不能当作 Shell 命令运行。
先记录节点版本和存储状态:
1 | pveversion -v |
| PVE 主版本 | Debian 基础系统 | 软件源代号 | 配置说明 |
|---|---|---|---|
| PVE 9 | Debian 13 | trixie |
优先使用 deb822 .sources 格式 |
| PVE 8 | Debian 12 | bookworm |
常见为 .list,不能混入 trixie |
| PVE 7 | Debian 11 | bullseye |
本文保留历史配置,不作为新安装方案 |
| PVE 6 | Debian 10 | buster |
本文保留历史配置,不作为新安装方案 |
开始前准备好来宾备份、配置备份和本地显示器/键盘。尤其是软路由 All-in-One:PVE 关机或路由虚拟机启动失败时,家里网络也可能中断;不要让恢复过程完全依赖这台虚拟机提供的网络。
一、安装 Proxmox VE
1. 硬件与系统准备
以下是 N100 家用实验环境的参考配置,并非 Proxmox 的官方最低要求:
- CPU:支持 Intel VT-x/AMD-V 的 64 位处理器;PCI 直通还需要 VT-d/AMD IOMMU。
- 内存:至少 8GB,运行多台虚拟机时建议 16GB 或更多。
- 存储:至少 120GB SSD;系统、虚拟磁盘、下载文件和备份尽量分开规划。
- 网络:至少一个网口;主路由用途建议有独立 WAN/LAN 网口,并保留宿主机管理通道。
从 Proxmox VE 官方下载页 获取 ISO,按下载页提供的校验值核对。N100 使用 x86-64 镜像,不要选 ARM64 镜像。
使用 Rufus 或 BalenaEtcher 制作启动 U 盘。写入会清空 U 盘,先确认设备选对。
2. 安装与网络设置
- 进入 BIOS/UEFI,开启 CPU 虚拟化;需要直通时同时开启 VT-d/IOMMU。启动菜单按键因主板而异,常见为 Delete、F2 或 F12。
- 从 U 盘启动,进入 Proxmox VE 安装器,同意许可协议。
- 选择目标磁盘与文件系统。安装会清空目标盘;本文后面的
pve/data调整只针对默认 LVM/LVM-thin 布局,不适用于 ZFS。 - 设置国家、时区、键盘布局、root 密码和管理员邮箱。
- 配置管理网卡、主机名、静态 IP、网关及 DNS。
本文统一使用以下网络示例,实际使用时替换为自己的网段:
| 设备/用途 | 示例地址 | 说明 |
|---|---|---|
| 主路由 LAN | 192.168.1.1/24 |
可以是现有路由器,或之后的爱快虚拟机 |
| PVE 宿主机 | 192.168.1.100/24 |
管理地址,避免与 DHCP 地址池冲突 |
| iStoreOS/OpenWrt 旁路由 | 192.168.1.2/24 |
与主路由、PVE 不重复 |
| PVE/旁路由默认网关 | 192.168.1.1 |
指向主路由,不指向自己 |
主机名可设置为 pve.lab;DNS 可先使用能够访问的本地 DNS 或公共 DNS,例如 223.5.5.5、119.29.29.29。安装阶段先让 PVE 接入现有正常联网的路由器,等路由虚拟机配置完成后再切换网络。
安装完成后拔出 U 盘并重启。在同网段电脑打开 https://192.168.1.100:8006,选择 Linux PAM standard authentication,使用 root 登录。默认自签名证书会触发浏览器警告,确认访问的确实是自己的节点后再继续。
3. 更新系统与仓库
先在“节点 → 更新 → 软件源(Repositories)”确认现有条目:
- 有有效订阅:使用企业仓库。
- 无订阅的家庭实验室:停用企业仓库,启用
pve-no-subscription;该仓库不是企业仓库的同等稳定性替代。 - Debian 基础仓库不能删除;Ceph 仓库是否启用取决于是否实际部署 Ceph。
PVE 9 在 /etc/apt/sources.list.d/proxmox.sources 中使用如下官方无订阅仓库,已存在等价条目时不要重复添加:
1 | Types: deb |
对于没有订阅的节点,可在软件源界面禁用企业条目;手工编辑企业 .sources 时可在对应 stanza 中加入 Enabled: no。国内镜像和 PVE 8 的具体配置见后面的“软件源与模板下载源”一节。
源配置完成后分步更新,先处理 apt update 报错,再决定是否升级:
1 | apt update |
不建议首次操作就加 -y 自动确认。内核更新后可能需要重启,使用 DG1、核显 SR-IOV 或其他 DKMS 模块的节点,还要先确认驱动与目标内核兼容。参考 Proxmox 系统管理文档。
4. 调整 local/local-lvm 存储(可选)
原教程所谓“给 PVE 扩容”,实际是:**删除默认的 LVM-thin 池 pve/data,把释放的空间交给根分区 pve/root**。这不是增加物理硬盘容量,也不是无损合并存储。
| 存储 | 默认用途 | 调整后的变化 |
|---|---|---|
local |
/var/lib/vz,通常放 ISO、模板、备份 |
根分区扩大后,该目录可使用更多空间 |
local-lvm |
pve/data 中的虚拟机磁盘和容器磁盘 |
删除薄池后,这个存储不能继续使用 |
仅适合确认没有任何来宾磁盘、没有其他用途的新装空节点。
lvremove pve/data会删除整个薄池及其中数据,不能靠重新添加存储条目恢复。已有虚拟机/容器时,先备份并迁移,通常保留local-lvm更省事。ZFS、独立数据盘、自定义 LVM 布局不要套用以下命令。
先在 PVE 界面检查所有虚拟机和容器的磁盘位置,再查看:
1 | pvesm list local-lvm |
确认薄池为空、根卷确为 pve/root,并理解删除后果后,依次执行;不要一次性粘贴两条跳过检查:
1 | lvremove pve/data |
按提示确认删除成功后,再将该卷组的剩余空闲空间扩给根卷,并同步扩文件系统:
1 | lvextend -l +100%FREE -r pve/root |
+100%FREE 表示分配卷组里全部剩余空闲空间;希望预留 LVM 空间时不要使用这个参数。
然后在 Web 界面:
- “数据中心 → 存储 → local-lvm → 移除”,删除已经失效的配置条目。
- 编辑
local,保留 ISO、容器模板、备份等已有用途;需要在这里存放虚拟机或容器磁盘时,再勾选“磁盘映像”和“容器”。 - 查看节点磁盘空间,确认后续创建虚拟机时选择的是实际存在的存储。
不必把所有内容类型都勾上。LVM-thin 支持的快照、克隆和稀疏置备方式,与目录存储不同;目录存储中的 qcow2 虚拟磁盘仍可支持部分快照操作,不能简单理解为“移除 local-lvm 后所有快照都不能用”。存储规划参考 PVE 存储文档。
5. 无有效订阅提示(可选、旧版方法)
这个提示不妨碍家庭实验室正常使用。切换到无订阅仓库与隐藏提示是两件事;下面的修改只改变前端提示,不会获得订阅或企业仓库授权。
原教程的两组命令保留如下,仅作为对应旧版的可选记录,不保证适用于当前补丁版本,更不要直接用于 PVE 9。它们修改安装包文件,升级后可能被覆盖;重复运行还可能覆盖旧备份。
展开 PVE 6.3~8 的历史提示处理方法
操作前先单独保存一份原文件,确认备份名尚未使用;已有备份时换一个文件名,不要覆盖:
1 | cp -a /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.before-popup |
PVE 6.3~7.x 原方法:
1 | sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js |
PVE 8.x 原方法:
1 | sed -i.backup -z "s/res === null || res === undefined || \!res || res\n\t\t\t.data.status.toLowerCase() \!== 'active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js |
两种方法只选适用的一种。服务重启会短暂影响 Web 访问;刷新浏览器缓存后查看页面。如果页面异常且期间未升级这个软件包,用自己操作前的备份恢复:
1 | cp -a /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.before-popup /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js |
如果期间已经升级,不要把旧版 JavaScript 覆盖回新版;应恢复与当前软件包版本对应的文件。生产环境建议购买订阅,而不是维护前端补丁。
6. 开启 PCI 直通(可选)
直通前先在 BIOS/UEFI 开启 VT-d/AMD IOMMU,保留本地控制台和管理网卡。宿主机唯一的管理网卡、系统盘控制器不能直接交给虚拟机。同一个设备也不能同时被宿主机和虚拟机占用。
6.1 识别实际引导方式
不能只根据“用了 UEFI”判断是否使用 GRUB;先查看:
1 | efibootmgr -v |
EFI 启动项要结合 BootCurrent 判断:grubx64.efi 或 shimx64.efi 通常对应 GRUB,systemd-bootx64.efi 对应 systemd-boot;传统 BIOS 安装一般使用 GRUB。proxmox-boot-tool status 可辅助了解启动分区,但不能单独证明当前引导器类型。
6.2 配置 IOMMU 参数
GRUB 节点:
1 | cp -a /etc/default/grub /etc/default/grub.before-passthrough |
把需要的参数合并到现有 GRUB_CMDLINE_LINUX_DEFAULT,不要用 sed 覆盖整行,避免丢失原有参数。以下是只有 quiet 时的示例,Intel 与 AMD 二选一:
1 | # Intel |
保存后执行:
1 | update-grub |
systemd-boot 节点:
1 | cp -a /etc/kernel/cmdline /etc/kernel/cmdline.before-passthrough |
这个文件的参数放在同一行,保留原有 root=、ZFS 等内容,只追加 Intel 的 intel_iommu=on iommu=pt 或 AMD 的 amd_iommu=on iommu=pt。保存后执行:
1 | proxmox-boot-tool refresh |
原教程中的 pcie_acs_override=downstream 不再默认加入。它可能让分组看似被拆开,却不能提供真实硬件隔离;只有明确理解设备和隔离风险时才考虑,不要用它掩盖不适合直通的 IOMMU Group。
6.3 加载 VFIO 模块
备份并编辑 /etc/modules,已有模块不要重复添加:
1 | cp -a /etc/modules /etc/modules.before-passthrough |
加入:
1 | vfio |
原教程的 vfio_virqfd 在新内核中已并入 VFIO;PVE 8/9 的新内核不要继续添加。仍使用旧内核时先确认模块是否存在。
更新 initramfs,再安排重启:
1 | update-initramfs -u -k all |
6.4 查看分组并添加设备
重启后在宿主机查看:
1 | cat /proc/cmdline |
确认 IOMMU 生效、设备与必须保留给宿主机的设备没有不可分离的分组关系。关闭目标虚拟机,在“硬件 → 添加 → PCI 设备”中按 PCI 地址选择网卡/显卡等设备;启用 PCI-Express 时通常需要 q35 机型,具体按设备及官方文档调整。
部分设备需要提前绑定 vfio-pci。不要在不了解影响时给所有同型号网卡统一绑定同一个 vendor/device ID,否则管理网卡也可能被一起接管。绑定、复位和设备专有参数参考 Proxmox PCI(e) Passthrough。
如果配置导致无法启动,可从引导菜单临时移除新增参数,进入系统后恢复自己保存的配置,并按引导方式重新生成配置和 initramfs。
二、安装路由虚拟机
1. 安装 iKuai(爱快,主路由)
从 爱快官方下载页 下载 x86-64 ISO。以下按原教程使用的 3.x 系列说明;官方已提供其他主版本,安装与升级前阅读对应说明,不要默认跨主版本可以降级。
- 在 PVE 的
local存储中上传 ISO,创建虚拟机并挂载镜像。 - CPU、内存和硬盘按固件要求及流量规模分配;官方 64 位版本页面要求至少 4GB 内存。首次安装先使用兼容的虚拟硬件。
- 给虚拟机配置 WAN/LAN 两侧网络。可以直通独立网卡,也可以使用连接不同物理网口的独立桥接;WAN 与 LAN 不要误接到同一个无 VLAN 隔离的二层网络。
- 从 ISO 启动,按爱快安装界面完成写盘,关机后移除安装光盘,再从虚拟硬盘启动。
- 在控制台确认网卡编号和物理端口对应关系,设置 LAN 为
192.168.1.1/24。官方 3.x 下载页列出的初始管理地址为192.168.9.1,与本文示例不同,需要先调整。 - 浏览器打开 LAN 管理地址。3.x 默认用户名/密码为
admin/admin,首次登录后立即修改。 - WAN 根据实际接入方式选择 PPPoE、DHCP 或静态地址;静态 WAN 的网关是上游网关,不能笼统设成自己的 LAN 地址。DNS 可用
223.5.5.5、119.29.29.29。
PVE 管理桥应接 LAN 一侧,保留管理 IP 192.168.1.100。不要把唯一承载 PVE 管理连接的物理网卡直接直通走。
网络排查可以从 PVE Shell 或支持 ping 的来宾控制台分开检查 IP 连通与 DNS:
1 | ping -c 4 223.5.5.5 |
能 ping IP、不能解析域名时先查 DNS;两者都不通时先查 WAN、网关和桥接。路由可用后,再设置虚拟机“开机自启动”和启动顺序,给依赖网络的其他来宾留出启动等待时间。
2. 安装 iStoreOS/OpenWrt(旁路由)
N100 选择 x86-64 镜像。combined-efi.img 应配 OVMF/UEFI,普通 BIOS 镜像通常配 SeaBIOS;虚拟机的启动方式要与镜像匹配。不要把用于已有系统升级的文件误当作首次安装的整盘镜像。
2.1 创建空虚拟机并导入磁盘
- 创建一台空虚拟机,例如 VMID
102;不挂载 ISO,删除创建向导自动添加的空硬盘,避免后面误从空盘启动。 - 按镜像选择 BIOS/UEFI;使用 OVMF 时按需添加 EFI 磁盘,并确认 Secure Boot 设置与固件兼容。
- 添加连接 LAN 桥的虚拟网卡,分配 CPU/内存。
- 将镜像上传到 PVE,例如
/root/istoreos.img.gz;.gz文件先解压,再导入。
1 | # 保留压缩包,将解压后的 .img 留在同目录 |
使用 local-lvm 存放磁盘时:
1 | qm disk import 102 /root/istoreos.img local-lvm |
如果前面删除了 local-lvm,且已经给 local 开启“磁盘映像”内容类型,可改为目录存储:
1 | qm disk import 102 /root/istoreos.img local --format qcow2 |
以上二选一,不能两条都执行。qm importdisk 是原教程的同用途命令别名;local-lvm 是完整存储名称,不是给导入命令追加 -lvm 参数。文件名不是 istoreos.img 时,替换为实际解压后的完整路径。
导入成功后还有两步:
- 回到“虚拟机 → 硬件”,双击“未使用的磁盘(Unused Disk)”,选择固件支持的 SATA/SCSI/VirtIO 总线并添加;不确定时先按对应固件的虚拟机指南选兼容方式。
- 在“选项 → 引导顺序”中启用并优先选择这块磁盘,再启动虚拟机。
只运行导入命令并不会自动挂载磁盘或设置启动顺序。操作说明参考 Proxmox 虚拟机迁移与磁盘导入。
2.2 配置管理地址和旁路由
iStoreOS:在来宾控制台内使用原教程的配置工具,而不是在 PVE 宿主机运行:
1 | quickstart |
根据向导调整 LAN 地址;也可以从 Web 界面的网络向导选择旁路由模式。常见官方固件初始用户为 root、密码为 password,不是 admin;实际仍以下载版本说明为准,登录后立即改密码。设备版本的默认地址不尽相同,可先从来宾控制台或主路由 DHCP 列表确认。
原版 OpenWrt:没有通用的 quickstart 命令。初始用户为 root,通常没有初始密码;先设置密码,再通过 LuCI 或 UCI 修改 LAN。初始 LAN 地址常为 192.168.1.1,会与本文主路由冲突,首次启动时先隔离配置,再接入现有 LAN。参考 OpenWrt 首次登录说明。
以旁路由 192.168.1.2/24 为例:
- 旁路由自身默认网关设置为主路由
192.168.1.1,DNS 使用能正常工作的服务器。 - 由主路由提供 DHCP 时,关闭旁路由 DHCP,避免同网段两台设备争抢地址分配。
- 需要经过旁路由处理的客户端,将网关/DNS 按具体方案指向旁路由;只配置旁路由自身网关,并不会让所有客户端自动经过它。
- 主路由与旁路由不能把默认路由互相指向对方,避免环路;IPv6 也要按所选方案单独规划。
原教程的 iStoreOS 插件目录 保留作为第三方资源。优先使用官方 iStore,第三方包要匹配固件架构、发行版本和依赖;不要在不同 OpenWrt/iStoreOS 版本间混装。
三、软件源与模板下载源
换源前先让 PVE 正常联网。更换镜像地址、更新软件包、升级 PVE 主版本是三个不同操作,不要把它们当成一个步骤执行。
原教程提醒 DG1 直通用户谨慎更新,这一点保留:单纯改镜像域名通常不会改变驱动,但后续内核、固件、Mesa 或 DKMS 更新可能影响 DG1/核显硬解。保存能正常工作的内核和配置,确认目标版本兼容后再升级。
可参考镜像站自己的帮助页,清华与中科大选择一个即可:
1. 备份现有 APT 配置
保存当前 Debian、PVE 和 Ceph 源,备份目录使用时间戳,避免覆盖上次备份:
1 | apt_backup="/root/apt-sources-$(date +%Y%m%d-%H%M%S)" |
确认自己修改的是哪个文件,不要在 sources.list、.list、.sources 中重复启用相同仓库,也不要把企业和无订阅源同时当作默认方案。
2. PVE 9 / Debian 13
2.1 Debian 基础源
编辑现有 /etc/apt/sources.list.d/debian.sources,清华镜像示例如下。保留实际节点需要的组件,不要另外创建重复源:
1 | Types: deb |
如选择中科大,仅将上面两处镜像域名换为 mirrors.ustc.edu.cn。Debian 安全更新条目不可漏掉,也不要为了换源随手启用 backports。
2.2 PVE 无订阅源
编辑 /etc/apt/sources.list.d/proxmox.sources:
1 | Types: deb |
中科大的等价 URI 为 https://mirrors.ustc.edu.cn/proxmox/debian/pve,只替换 URI,不要同时添加第二份。密钥使用 PVE 已安装的官方归档密钥,不能用 trusted=yes 或关闭签名检查来绕过错误。
没有订阅时,禁用对应企业 .sources 条目;不要把 PVE 8 的 pve-enterprise.list 当作所有 PVE 9 节点的固定文件名。
2.3 Ceph 源与 401 错误
遇到 401 Unauthorized,先看报错 URL 属于 PVE 企业源还是 Ceph 企业源,再处理对应文件:
- 没有使用 Ceph:可以在软件源界面禁用不需要的 Ceph 企业仓库。
- 已经使用 Ceph:选择与当前 Ceph 版本匹配的仓库,不能把源全部关掉后继续升级。
- 有订阅:排查订阅有效性和仓库配置,不应直接替换为无订阅源。
PVE 9.2 的 Ceph 选项包含 Tentacle 20.2 和 Squid 19.2;本文不提供通用“一键切 Ceph 版本”命令。使用 Ceph 的节点先查看 ceph --version,按官方升级路径及镜像站说明配置对应 release,不能沿用旧版 ceph-quincy bookworm。
3. PVE 8 / Debian 12
以下适合仍在维护的 PVE 8 节点,不是把 PVE 9 降级的办法。
编辑 /etc/apt/sources.list,将原条目注释或替换为同一套镜像。清华示例:
1 | deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware |
中科大示例,二选一:
1 | deb https://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware |
原教程还列出 bookworm-backports;只有明确需要其中的软件包时才添加相同镜像的 bookworm-backports 条目,不是 PVE 更新的必需源。
无订阅时,编辑 /etc/apt/sources.list.d/pve-enterprise.list,在企业源的 deb 行前加 #。再编辑或创建 /etc/apt/sources.list.d/pve-no-subscription.list,填写一种:
1 | # 官方 |
只保留一个有效的 deb 行,其他示例删除或注释。使用 nano 时,Ctrl+O 保存、回车确认文件名,Ctrl+X 退出。
原教程通过编辑 /etc/apt/sources.list.d/ceph.list 处理 Ceph 企业源 401,这个入口保留,但仓库内容要匹配实际版本。原来的这一行仅对应旧的 Quincy/Bookworm 环境:
1 | deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription |
不能将它作为所有 PVE 8 节点的通用修复;已运行 Reef/Squid 等版本时,查对应文档,不要退回 Quincy 仓库。未使用 Ceph 的节点可以禁用不需要的条目。
4. PVE 6/7 历史换源记录
这部分用于对照原教程和旧节点配置。旧发行版仓库可能归档或不再提供安全更新,镜像可用性以帮助页为准;新安装不要选择这些版本。以下每个代码块都是文件内容。
展开 PVE 6 / Buster 的原镜像记录
原文件备份与编辑入口:
1 | cp -a /etc/apt/sources.list /etc/apt/sources.list_bak |
备份文件已存在时先换名称。原清华配置如下,PVE 条目沿用旧镜像路径,仅供辨认历史配置:
1 | deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free |
如果在线镜像已不提供这些条目,应按归档说明处理并规划迁移,不要把代号改成 trixie 强行升级。
展开 PVE 7 / Bullseye 的镜像配置
清华:
1 | deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free |
中科大,二选一:
1 | deb https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free |
原教程的 PVE 条目使用 /proxmox/debian 旧路径,现按镜像帮助页使用 /proxmox/debian/pve。原先的 bullseye-backports 不再作为默认条目;维护旧节点前检查其归档状态。
5. 更新与重启
完成所用版本的源配置后:
1 | apt update |
先读报错再继续。出现 401 查订阅仓库,404 查路径与发行代号,签名错误查官方密钥与系统时间;不要用关闭安全检查或盲目注释基础源来掩盖问题。
如果更新了内核,确认直通/DKMS 驱动准备好后,再安排重启。软路由节点提前考虑重启期间的断网和管理入口。
6. LXC 容器模板下载换源(可选)
原教程的 APLInfo.pm 方法可以保留,但它是修改软件包文件,不是稳定的官方配置接口。清华和中科大帮助页仍提供这种模板下载源调整方法;只有文件存在、内容与示例匹配时才操作。
先查看源地址并备份,备份名称不要与旧文件冲突:
1 | grep -n 'download.proxmox.com' /usr/share/perl5/PVE/APLInfo.pm |
二选一替换:
1 | # 清华 |
1 | # 或中科大 |
如果文件里的原地址已改变,不要照搬替换表达式,应按当前镜像帮助页处理。重启服务并刷新模板列表:
1 | systemctl restart pvedaemon.service |
通常无需为此专门重启整个 PVE。pve-manager 升级可能覆盖该修改;需要回退且期间没有升级时,恢复本次备份并重启服务:
1 | cp -a /usr/share/perl5/PVE/APLInfo.pm_back /usr/share/perl5/PVE/APLInfo.pm |
7. CPU、主板和硬盘温度显示(可选)
原教程的温度美化来自 恩山分享帖,使用 PVE-manager-status 项目,可显示 CPU 频率、温度及 NVMe/其他硬盘信息;具体能显示哪些传感器取决于硬件与驱动。
如果只想查看温度,可以先用命令行,不必修改 Web 界面:
1 | apt install lm-sensors |
原脚本会修改 Nodes.pm、pvemanagerlib.js、proxmoxlib.js。当前源码中的脚本版本标记为 2023.9.5,不能据此认定已兼容 PVE 9;只在确认适配自己节点的版本后使用。不要把网络脚本直接交给 root 执行,先下载和审阅:
1 | curl -fL -o /tmp/pve-showtempcpufreq.sh https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh |
明确接受其修改、确认版本兼容,并单独备份上述三个文件后,才使用原教程的重新修改模式:
1 | chmod +x /tmp/pve-showtempcpufreq.sh |
原先的 mirror.ghproxy.com 备用下载不再写进自动执行链;访问失败时从项目源码页获取可信文件,不要随便更换转发站。
该脚本还提供恢复入口:
1 | /tmp/pve-showtempcpufreq.sh restore |
恢复依赖脚本保存的版本备份,升级后不能保证仍可回退;保留手工备份,且不要向新版软件包覆盖旧版文件。页面异常时先恢复再排查,并刷新浏览器缓存。
四、开启核显 SR-IOV(可选)
项目地址:strongtz/i915-sriov-dkms。
SR-IOV 将受支持的核显划分成多个虚拟功能(VF),供不同虚拟机使用。它与“把整块核显直通给一台虚拟机”不同,也不是所有 Intel 核显都支持。N100 等机器仍要核对实际设备 ID、项目支持情况和驱动版本。
这是社区维护的高度实验性内核模块,并非 Intel 或 Proxmox 官方组件。错误的内核/驱动组合可能造成黑屏、无法启动或宿主机不稳定。操作前备份来宾与配置,保留旧内核、SSH 和本地控制台;不要在唯一承担家庭联网的节点上无回退地尝试。
以下以 i915 路线为例。项目同时支持部分 xe 路线,但参数与适用设备不同,不能把两套配置混用。
1. 选择与运行内核匹配的驱动
先记录:
1 | pveversion -v |
截至 2026-10-01,项目 README 给出的版本范围为:
| 正在运行的内核 | 项目提供的选择 |
|---|---|
| 6.18~7.2 | 2026.09.16 |
| 6.12~6.19 | 2026.03.05.7 |
| 6.8~6.12 | 2025.07.22 |
| 6.1~6.7 | intel-lts-v6.1 分支 |
范围重叠时,不仅看内核数字,也要读对应 release 的设备支持与已知问题。后续版本以 项目 README 和 Releases 为准;不能只根据“PVE 8/PVE 9”猜驱动版本。
安装编译依赖及当前运行内核的头文件:
1 | apt update |
部分旧 PVE 内核的头文件包名使用 pve-headers-$(uname -r);先查询与 uname -r 完全匹配的包。找不到头文件时先解决仓库/内核问题,不能拿另一内核的 headers 凑数。
原教程安装 proxmox-kernel-$(uname -r)、最新版主分支和 build-* 的写法不再照搬:已有运行内核不需要为编译模块重复安装同名内核包,依赖使用明确的 build-essential。升级默认内核是单独的维护决策,不应藏在驱动依赖安装步骤里。
2. 安装驱动:软件包或源码二选一
2.1 从 Release 安装 .deb
下面是运行内核符合 2026.09.16 范围时的具体示例,旧内核先改选兼容发布版:
1 | wget -O /tmp/i915-sriov-dkms_2026.09.16_amd64.deb "https://github.com/strongtz/i915-sriov-dkms/releases/download/2026.09.16/i915-sriov-dkms_2026.09.16_amd64.deb" |
如果依赖或编译失败,先处理第一处有效错误;不能安装报错后仍继续改启动参数。完整流程参考 项目 PVE 宿主机安装指南。
Secure Boot 开启时,外部 DKMS 模块可能需要签名及注册密钥,按 项目 Secure Boot 文档 操作;不要把关闭所有安全检查作为通用修复。
2.2 保留原教程的源码安装方法
适合需要固定源码版本或旧内核分支的情况。不要与 .deb 方法重复安装同一个模块,也不要直接 clone 不断变化的主分支后猜版本。
以下同样以 2026.09.16 为例,使用一个尚不存在的工作目录:
1 | cd /root |
这里的版本号必须与 dkms.conf 和 dkms add 输出一致。原记录中的 2025.02.03 只是当时的示例,不能继续写死,也不需要默认加 --force。
编译需要一些时间。如果失败,可查看对应版本在 /var/lib/dkms/i915-sriov-dkms/ 下的编译日志;先确认 headers、编译错误与设备支持,再考虑是否更换版本。参考 项目手动安装指南。
原教程还提到 gitee.com/ifwwww/i915-sriov-dkms 镜像;这里保留这条资源说明,但不再默认使用。它不是项目的上游仓库,只有确认提交内容和所需 release 一致时才考虑,不能因为下载快就认定可信或兼容。
3. 配置启动参数
按前文识别的引导方式编辑对应文件,并保存单独备份。i915 路线的核心参数为:
1 | intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe |
intel_iommu=on:开启 Intel IOMMU。i915.enable_guc=3:启用项目所需的 GuC 功能。i915.max_vfs=7:设置最多可创建的 VF 数量,实际启用数量在下一步配置。module_blacklist=xe:此处选择 i915 路线,避免被 xe 接管。已有 blacklist 参数时合并列表,不要创建互相冲突的重复参数。
GRUB:编辑 /etc/default/grub,合并到原有参数。例如原来只有 quiet 和 iommu=pt 时:
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe" |
1 | update-grub |
systemd-boot:在 /etc/kernel/cmdline 的原有同一行后追加参数,保留 root= 等内容,然后:
1 | update-initramfs -u -k all |
完成后重启到准备好的内核:
1 | reboot |
启动后确认实际参数、模块路径和 DKMS 状态:
1 | cat /proc/cmdline |
0000:00:02.0 是示例,实际核显地址以 lspci 为准。不能只看到 VGA 设备名称就认定 SR-IOV 已完成。
从 2026.09.16 起,部分 Xe_LP(如 TGL/ADL/RPL)设备的 CCS 默认设置发生变化;如果 Windows VF 来宾遇到项目文档描述的 CCS 问题,按对应 release 考虑 i915.xelp_enable_ccs=1,而不是无条件给所有机器加上。
4. 创建并持久化 VF
以下假设核显 PF 确为 0000:00:02.0。先检查支持的总数与当前数量:
1 | cat /sys/bus/pci/devices/0000:00:02.0/sriov_totalvfs |
在没有 VF 被虚拟机使用、当前数量为 0 时,临时创建 3 个 VF:
1 | echo 3 > /sys/bus/pci/devices/0000:00:02.0/sriov_numvfs |
如果文件不存在、写入报错或支持数量不足,停下来查模块加载及设备支持,不要直接写持久化配置。变更已有 VF 数量前必须停掉使用它们的来宾,不能在线销毁正在使用的 VF。
确认临时创建成功后,备份并编辑 /etc/sysfs.conf,不要像旧教程一样用 > 覆盖整个文件:
1 | cp -a /etc/sysfs.conf /etc/sysfs.conf.before-sriov |
仅添加一条对应设备的配置,已有同一设备配置时修改原条目:
1 | devices/pci0000:00/0000:00:02.0/sriov_numvfs = 3 |
如果核显位于其他 PCI 总线,整条 sysfs 路径也要按实际设备路径修改,不能只改最后的设备名。VF 数量不能超过 sriov_totalvfs 或前面 i915.max_vfs 设置的上限;多个 VF 共享物理核显资源,并不会变出多块独立 GPU 的性能。
安排重启后,再检查 sriov_numvfs 和设备列表。启用 3 个 VF 的示意输出:
1 | 0000:00:02.0 VGA compatible controller: Intel Corporation ... # PF |
设备名称、类别和后缀按硬件及驱动变化,不要求与示例逐字一致。
5. 分配给虚拟机并安装来宾驱动
- 停止目标虚拟机。
- “硬件 → 添加 → PCI 设备”,只选择一个 VF,例如
0000:00:02.1。 - 不要选 PF
0000:00:02.0,也不要勾选会把 PF 和所有 VF 一起带走的“全部功能(All Functions)”。PF 被直通可能导致所有 VF 失效。 - 启动来宾,在来宾内安装相容的驱动,再检查硬解/计算应用是否识别设备。
宿主机出现 VF 只是第一步,不等于来宾已经能硬解。Linux 来宾需要按项目指南安装相容模块,Windows 来宾使用对应的 Intel 驱动和项目配置:
如果后续添加物理核显或 VF 的自动 VFIO 绑定规则,要按项目 VF 绑定说明 区分 PF/VF,避免把宿主机用于创建 VF 的 PF 一起绑定走。
6. 卸载与回退
6.1 先撤掉来宾分配和 VF 配置
先停止使用 VF 的虚拟机,从硬件配置中移除 VF,删除 /etc/sysfs.conf 中自己添加的那一条配置。没有 VF 被占用时可临时关闭:
1 | echo 0 > /sys/bus/pci/devices/0000:00:02.0/sriov_numvfs |
按实际地址执行;系统尚未创建 VF 时不必执行。不要直接恢复整份旧 sysfs.conf 覆盖之后新增的其他配置。
6.2 按安装方式卸载
通过 .deb 安装:
1 | dpkg -P i915-sriov-dkms |
通过源码手动注册 DKMS:
1 | dkms status |
安装了多个手工版本时分别清理对应版本。dpkg -P 不能替代纯源码安装的卸载。原教程中的 pacman -R i915-sriov-dkms 属于 Arch Linux,不适用于 Debian/PVE,不能在宿主机使用。
6.3 移除参数并更新启动配置
从对应启动配置移除自己添加的 i915.enable_guc、i915.max_vfs、module_blacklist=xe 及可选 CCS 参数;如果还需要其他设备直通,可保留 intel_iommu=on 和 iommu=pt。
GRUB 节点:
1 | update-grub |
systemd-boot 节点:
1 | update-initramfs -u -k all |
6.4 无法正常启动时
优先在引导菜单选择之前可用的内核。如果所有可选内核都受模块影响,可临时追加 module_blacklist=i915,xe 启动(已有该参数时合并列表),进入系统后再卸载并修复配置。
GRUB 通常按 e 编辑启动项、Ctrl+X 或 F10 临时启动;systemd-boot 在允许编辑的环境下按 e 修改、回车启动。临时修改不会自动保存为永久配置。黑名单导致本地显示输出不可用时,通过预留的 SSH/管理通道处理;若仍不能进入系统,则需要救援介质,不能只依赖网页管理。
参考资料
本文保留原教程的实践路线和资源链接,涉及仓库、启动方式及驱动版本时以对应项目的现行说明为准:
- 波仔分享:PVE 安装教程
- 番茄科技:原教程参考文章
- Proxmox VE 9.2 发布说明
- Proxmox 系统管理与软件源
- Proxmox PCI(e) Passthrough
- 清华 Proxmox 镜像帮助
- 中科大 Proxmox 镜像帮助
- i915-sriov-dkms 项目与 PVE 安装指南
感谢原作者和各项目维护者的分享!





