解决安装Ubuntu 24.04后关机主板不断电、休眠后不能唤醒问题(原创)
故障现象原因分析解决办法操作步骤详细解释使用场景
故障现象
ThinkPad P50老古董安装Ubuntu24.04后,有几个现象:
通过poweroff关机电脑,系统关闭屏幕变黑,主板不会断电,键盘背光还是亮着的,此时无论怎么按电源键都无法重新启动电脑,只有扣电池,重新拔插电源线后才能启动电脑。通过reboot重启系统,情况和1完全一样。通过电源图标点击“挂起”,电脑会息屏休眠,但是休眠后现象和1完全一样,也需要扣电池、重新拔插电源线后才能启动电脑。原因分析
出现这个问题的原因是默认情况下,许多固件会假定系统是 Windows,并据此做出一些假设。
解决办法
操作步骤
打开终端。输入 sudo gedit /etc/default/grubsudo gedit /etc/default/grub
打开文件如下:# If you change this file, run 'update-grub' afterwards to update# /boot/grub/grub.cfg.# For full documentation of the options in this file, see:# info -f grub -n 'Simple configuration'GRUB_DEFAULT=0GRUB_TIMEOUT_STYLE=hiddenGRUB_TIMEOUT=0GRUB_DISTRIBUTOR=`( . /etc/os-release; echo ${NAME:-Ubuntu} ) 2>/dev/null || echo Ubuntu`GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=! pci=noaer"GRUB_CMDLINE_LINUX=""# If your computer has multiple operating systems installed, then you# probably want to run os-prober. However, if your computer is a host# for guest OSes installed via LVM or raw disk devices, running# os-prober can cause damage to those guest OSes as it mounts# filesystems to look for things.#GRUB_DISABLE_OS_PROBER=false# Uncomment to enable BadRAM filtering, modify to suit your needs# This works with Linux (no patch required) and with any kernel that obtains# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"# Uncomment to disable graphical terminal#GRUB_TERMINAL=console# The resolution used on graphical terminal# note that you can use only modes which your graphic card supports via VBE# you can see them in real GRUB with the command `vbeinfo'#GRUB_GFXMODE=640x480# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux#GRUB_DISABLE_LINUX_UUID=true# Uncomment to disable generation of recovery mode menu entries#GRUB_DISABLE_RECOVERY="true"# Uncomment to get a beep at grub start#GRUB_INIT_TUNE="480 440 1"
在 GRUB_CMDLINE_LINUX_DEFAULT 行中添加 acpi_osi=!。GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=! pci=noaer"
保存文件并关闭编辑器。更新 GRUB 配置:sudo update-grub。重启计算机。 详细解释
ACPI:这是一个标准,用于在操作系统和底层硬件之间进行通信,特别是在电源管理和热插拔设备方面。OSI (Operating System Identifier):ACPI 规范中的一个特性,允许固件根据操作系统类型调整其行为。默认情况下,许多固件会假定系统是 Windows,并据此做出一些假设。acpi_osi=!:当使用这个参数时,它告诉固件不要假设任何特定的操作系统类型。这意味着固件不应该应用任何针对特定操作系统的优化或行为。pci=noaer: 是另一个常用的参数,用于禁用 PCI 错误恢复,有时也能帮助解决某些硬件兼容性问题。使用场景
解决兼容性问题:当 Linux 与某些硬件不兼容时,特别是与 ACPI 相关的问题,使用 acpi_osi=! 可以帮助解决这些问题。
例如,有些电脑在 Linux 下无法正确唤醒,这可能是由于固件为 Windows 做了特定的优化,而这些优化对 Linux 不适用。避免特定行为:
有些固件可能会为 Windows 应用一些特殊的电源管理策略,这些策略可能会干扰 Linux 的电源管理。