PVE ASPM设置

PVE 使用内核选项禁用 PCIe ASPM。

9 / 9

PVE 系统如何使用内核选项禁用 PCIe 省电 (ASPM)

在 Proxmox VE (PVE) 系统中,可以通过添加内核选项 pcie_aspm=off 来禁用 PCIe 的主动状态电源管理 (ASPM)。

PVE 系统根据其安装方式(特别是文件系统和启动模式)使用两种不同的引导加载程序:GRUB 或 systemd-boot。需要首先确定当前系统正在使用哪一种,然后才能正确应用设置。

步骤一:检查当前 PVE 系统使用的引导加载程序

可以通过以下任一方法来确定当前引导加载程序。

方法 A:检查 proxmox-boot-tool(推荐)

在 PVE 主机的 Shell (CLI) 中运行以下命令:

命令
proxmox-boot-tool status

如果看到类似 Re-executing '/usr/sbin/proxmox-boot-tool' ... 的输出,并且它列出了当前 EFI 系统分区 (ESP),那么正在使用 systemd-boot。

如果看到 proxmox-boot-tool: command not found 或其他错误,很可能在使用 GRUB。

方法 B:检查 efibootmgr (适用于 UEFI 系统)

如果当前系统使用 UEFI 启动,此命令非常可靠:

命令
efibootmgr -v

查看输出:

如果启动项指向 ...File(\EFI\proxmox\grubx64.efi)...,使用的是 GRUB。

如果启动项指向 ...File(\EFI\systemd\systemd-bootx64.efi)...,使用的是 systemd-boot。

方法 C:检查文件是否存在

运行 ls /etc/default/grub。如果该文件存在,很可能在使用 GRUB。

命令
ls /etc/default/grub

运行 ls /etc/kernel/cmdline。如果该文件存在,很可能在使用 systemd-boot。

命令
ls /etc/kernel/cmdline

经验法则:

systemd-boot 通常用于在 UEFI 模式下安装并使用 ZFS 作为根文件系统的系统。

GRUB 通常用于 Legacy/BIOS 模式安装,或在 UEFI 模式下安装并使用 ext4/LVM 的系统。

步骤二:根据当前引导加载程序禁用 ASPM

请仅遵循适用于系统的方法。

选项 A:如果当前 PVE 使用 systemd-boot

这是为 ZFS on UEFI 系统添加内核参数的推荐方法。

编辑内核命令行文件:

使用 nano 或喜欢的文本编辑器打开 /etc/kernel/cmdline 文件。

命令
nano /etc/kernel/cmdline

添加参数:

该文件通常只有一行。在这一行的末尾,添加一个空格,然后输入 pcie_aspm=off。

修改前示例:

命令
root=ZFS=rpool/ROOT/pve-1 boot=zfs

修改后示例:

命令
root=ZFS=rpool/ROOT/pve-1 boot=zfs pcie_aspm=off

保存并关闭文件 (在 nano 中, 按 Ctrl+O, Enter, 然后 Ctrl+X)。

刷新引导加载程序:

这一步用于写入启动配置。运行以下命令以应用更改:

命令
proxmox-boot-tool refresh

重启系统:

命令
reboot

选项 B:如果当前 PVE 使用 GRUB

这是用于 Legacy/BIOS 或 ext4/LVM 系统的标准方法。

编辑 GRUB 配置文件:

使用 nano 或喜欢的文本编辑器打开 /etc/default/grub 文件。

命令
nano /etc/default/grub

找到并修改 GRUB_CMDLINE_LINUX_DEFAULT:

找到以 GRUB_CMDLINE_LINUX_DEFAULT= 开头的行。在该行引号内的末尾,添加 pcie_aspm=off。

修改前示例:

命令
GRUB_CMDLINE_LINUX_DEFAULT="quiet"

修改后示例:

命令
GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_aspm=off"

保存并关闭文件 (在 nano 中, 按 Ctrl+O, Enter, 然后 Ctrl+X)。

更新 GRUB:

运行以下命令以重新生成 GRUB 配置文件:

命令
update-grub

重启系统:

命令
reboot

步骤三:验证更改是否生效

系统重启后,登录到 PVE 主机的 Shell 并运行以下命令:

命令
cat /proc/cmdline

检查命令的输出。应该能在文本行中看到添加的 pcie_aspm=off 参数。如果看到了,说明禁用 ASPM 的内核选项已成功应用。