手边接触到一个安装了 Debian 的 x86 机器,在全新安装 Debian 13 后,出现异常症状:login 输入正确凭据登录后,显示 motd,但终端假死并在一分钟后强制登出;屏幕大量显示 Failed to start systemd-journald service;top 显示 systemd-journald 和 irq/120-aerdrv 两个进程大量占用 CPU,且硬盘 IO 异常。
这台机器已知存在硬件问题,表现为电源管理异常、睿频时机器断电。在苟延残喘、不考虑进行硬件维修的前提,寻求软件方法缓解此问题,目的是使其能正常运行 Debian(哪怕不那么稳定)。
Rescue Mode 检查日志文件,解析前因后果:
AER 是 PCIe 总线支持一种高级的错误报告机制,当链路或设备发生错误(即使是可纠正的错误)时,硬件会记录错误状态,内核的 AER 驱动会读取这些状态并生成详细的日志信息。
设备内核抛出巨巨巨量 PCIe 硬件错误,由 120-aerdrv 表达某些硬件存在问题(后续查清是 GPU 坏了),问题由 systemd-journald 保存到本地日志,但错误发生速度远大于日志写速度,导致硬盘写排队;且大量垃圾日志的分析拖累了整机 CPU 工作。
最终发现的解决方案是:在 Debian 系统启动之前,声明禁用 PCI 高级错误报告(Advanced Error Reporting, AER)功能,可以通过为 GRUB 启动项添加 pci=noaer 解决。完整解决流程附在博文下方。
使用 pci=noaer 本质上是一种屏蔽症状而非解决问题根源的方法。这个参数只是让内核“闭嘴”,并不会修复导致错误产生的根本硬件或固件问题。如果错误源于有缺陷的硬件,问题依然存在,只是不再被记录。禁用 AER 意味着放弃了内核对于 PCIe 硬件错误的监控和报告能力。如果未来 PCIe 设备真的出现了严重的、不可纠正的硬件故障,系统将无法通过 AER 机制提供详细的诊断信息。
处理流程
进入 root 账户,接下来流程必须使用 root 账户处理。
su
编辑 /etc/default/grub 文件,更新文件内容:
vim /etc/default/grub
将该文件中的 GRUB_CMDLINE_LINUX_DEFAULT 值添加一个 pci=noaer,
假设原本是 GRUB_CMDLINE_LINUX_DEFAULT=”quiet pci=noaer”,那么改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet pci=noaer"
更新 GRUB 设置:
/usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg
重启机器:
/sbin/reboot
重启后,检查 Debian 是否正常按 pci=noaer 启动:
cat /proc/cmdline
若输出信息有 pci=noaer,那么更改已生效。此时异常占用理应缓解。





