Ubuntu 22.04(内核6.2.0-33-generic)下ACPI BIOS错误无法隐藏的问题咨询
我的情况
刚装了台新机器,配置如下:
- 主板:Asus TUF GAMING B760M-PLUS
- CPU:i5-13600k
- GPU:Nvidia RTX 3060
安装Ubuntu 22.04(内核6.2.0-33-generic)后,开机时弹出一大串ACPI错误日志。这些错误看起来没什么实际危害,但看着闹心,想把它们隐藏掉。
已经尝试过的方法
- 按照论坛常规操作,在
/etc/default/grub的启动参数中添加loglevel=3,执行sudo update-grub后无效;甚至把日志级别调到0也压不住这些错误 - 试过
acpi=off:直接无法开机,放弃尝试 - 还测试了
pci=noacpi、acpi=force这类常见ACPI参数,均无效果 - 已将BIOS更新到最新版本,且关闭了Secure Boot
错误日志(dmesg | grep -i "acpi"输出)
[ 3.560834] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.560849] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.560875] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.561047] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.561058] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.561080] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.561248] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.561259] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.561281] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.561448] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.561459] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.561480] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.561648] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.561659] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.561680] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.561847] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.561857] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.561879] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.562046] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.562057] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.562078] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.562251] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.562262] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.562279] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.562407] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.562418] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.562436] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.562564] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.562574] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.562592] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.562721] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.562731] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.562749] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.562877] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.562887] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.562905] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.563033] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.563043] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.563061] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.563189] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.563199] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.563217] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529) [ 3.563346] ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.PEG1.PEGP._DSM.USRG], AE_ALREADY_EXISTS (20221020/dsfield-184) [ 3.563356] ACPI Error: AE_ALREADY_EXISTS, CreateBufferField failure (20221020/dswload2-477) [ 3.563374] ACPI Error: Aborting method \_SB.PC00.PEG1.PEGP._DSM due to previous error (AE_ALREADY_EXISTS) (20221020/psparse-529)
我的疑问
虽然这些错误不影响使用,但我实在搞不懂为什么论坛上大家都在用的loglevel=3方法在我这儿完全没用,有没有大佬能给点思路或者其他解决方案?
针对这个问题的建议
首先看日志里明确标了ACPI BIOS Error (bug),这说明是华硕主板BIOS本身的ACPI定义问题——具体是GPU对应的ACPI方法_DSM在创建对象时重复了,属于BIOS层面的小bug,和系统本身关系不大。
至于loglevel=3没用,大概率是这些错误属于早期启动阶段的输出,常规的loglevel参数覆盖不到这个阶段。可以试试下面这些方法:
更全面的启动日志参数
编辑/etc/default/grub,把GRUB_CMDLINE_LINUX_DEFAULT改成:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash loglevel=3 rd.systemd.show_status=auto rd.udev.log_level=3"然后执行
sudo update-grub重启试试。这个组合能同时控制内核、systemd和udev的日志级别,覆盖更多启动阶段。调整ACPI兼容性参数
试试在GRUB参数里加acpi_osi=! "Windows 2020"或者acpi_osi=Linux,这两个参数会让系统告诉BIOS自己是Linux系统,而非Windows,可能能避开BIOS里针对Windows的重复ACPI定义。修改后同样要执行sudo update-grub重启。检查Nvidia驱动
你的RTX3060建议安装官方闭源驱动,而非默认的nouveau开源驱动——部分ACPI的_DSM方法是和GPU厂商驱动交互的,换驱动可能缓解这个问题。可以直接执行:sudo ubuntu-drivers autoinstall安装完成后重启系统看看效果。
等待BIOS更新
虽然你已经更到最新BIOS,但华硕后续可能会发布修复ACPI定义问题的版本,可以多关注一下主板官网的BIOS更新。
最后说句实在的,这些错误真的只是BIOS层面的小bug,完全不影响系统稳定性,如果以上方法都没用,其实也可以直接忽略,后续内核或BIOS更新后大概率会自动修复。
备注:内容来源于stack exchange,提问作者werefkin

