我的计算机有硬件问题,导致其在睡眠时损坏(需要硬重置)。然而,我仍然希望获得某种低功耗模式。是否可以向所有进程发送 SIGSTOP,然后一半关闭内核?我希望它作为挂起的替代品,所以我还需要一种方法来逆转它。我不知道具体的硬件问题是什么,但是当我的笔记本电脑进入睡眠状态时,它就会开始发出蜂鸣声。
我最近购买了一台 HP14-fq1003cl
笔记本电脑,并摆脱了 Windows 11 的束缚,并在系统上安装了 KDE neon。它与 Linux 配合得很好,我对此非常满意。
然而,我多次遇到的一个问题是,当我从睡眠状态恢复它时,时钟有时会向前跳。通常情况下,只有当我将笔记本电脑插入电源,合上盖子(触发睡眠),在仍处于暂停状态时拔下插头,并在暂停超过几分钟后恢复时,才会发生这种情况。其他时候,只需简单的暂停和恢复即可触发此操作。如果有帮助的话,它喜欢跳到 2077 年或 2195 年。
我可以通过简单地禁用 NTP 并重新启用它来修复它,我什至感到非常沮丧,以至于我创建了一个按键绑定来快速修复它。
我翻遍了 Unix StackExchange、AskUbuntu 等的大量文章,发现除了“不要挂起你的系统,只需将其关闭”之外没有任何解决方案。虽然我不想将其用作最佳解决方案,但我会选择它而不是根本没有解决方案。但我想在放弃之前至少弄清楚到底发生了什么,并将其作为我的最终解决方案。
假设我正在编译一些大项目,并且想将笔记本电脑放在包里而不停止编译过程。合上盖子使我的计算机进入休眠状态。停止一次(或一段时间)暂停的选项有哪些?
我想要一些不涉及重新启动的东西systemd-logind.service
。
我一直有一段时间让这款新的联想 Thikpad X1 Carbon Gen 9 暂停。我认为这些是表明我的问题原因的行
systemd-sleep[682835]: System returned from sleep state.
bluetoothd[829]: Controller resume with wake event 0x1
kernel: usb 3-3: new full-speed USB device number 120 using xhci_hcd
kernel: PM: suspend exit
看到这个后,我想禁用 XHCI ACPI,因为我在论坛上看到过这个建议。我这样做了,
❯ acpitool -e | grep XHCI
7. XHCI S3 *enabled pci:0000:00:14.0ed pci:0000:00:14.0
然后我禁用7
了sudo acpitool -W7
. 现在它显示*disabled
并且我的笔记本电脑暂停。XHCI ACPI 唤醒有什么作用?需要这个吗?
我的笔记本电脑在挂起后立即唤醒(或者挂起失败?它们是两种不同的情况吗?)。它是旧的东芝 Satellite C855D-S5105,8Gb RAM。它有一个最近安装的 bodhi Linux(一个 Ubuntu 衍生产品,所以在很多事情上它的工作方式与 Ubuntu 相同)。我找到的解决方案都不起作用。BIOS 中的两个候选项被禁用(Wake on LAN和Wake on Keyboard)。还有一个触摸板,没有鼠标或蓝牙接收器。下面我发布相关信息,并附有来源。
$ uname -a
Linux Orion 5.4.0-107-generic #121-Ubuntu SMP Thu Mar 24 16:04:27 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
试图识别唤醒的候选者(假设它挂起并唤醒)。
这里似乎有一些启用唤醒的设备(请参阅this)。
$ cat /proc/acpi/wakeup | grep enabled
Device S-stateStatus Sysfs node
OHC1 S3 *enabled pci:0000:00:12.0 <- ?
OHC3 S3 *enabled pci:0000:00:16.0 <- ?
EHC1 S3 *enabled pci:0000:00:12.2 <- ?
EHC3 S3 *enabled pci:0000:00:16.2 <- ?
LID0 S4 *enabled platform:PNP0C0D:00 <- Lid
$ lspci | grep "00:1[2,6]."
00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller (rev 11)
00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 11)
00:16.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller (rev 11)
00:16.2 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 11)
这里似乎没有启用唤醒的设备(source)。
$ cat /sys/bus/usb/devices/*/power/wakeup
disabled
disabled
disabled
disabled
disabled
disabled
disabled
$ ll /sys/bus/usb/devices/*/power/wakeup
-rw-r--r-- 1 root root 4,0K abr 6 07:33 /sys/bus/usb/devices/1-3/power/wakeup
-rw-r--r-- 1 root root 4,0K abr 6 07:33 /sys/bus/usb/devices/usb1/power/wakeup
-rw-r--r-- 1 root root 4,0K abr 6 07:33 /sys/bus/usb/devices/usb2/power/wakeup
-rw-r--r-- 1 root root 4,0K abr 6 07:33 /sys/bus/usb/devices/usb3/power/wakeup
-rw-r--r-- 1 root root 4,0K abr 6 07:33 /sys/bus/usb/devices/usb4/power/wakeup
-rw-r--r-- 1 root root 4,0K abr 6 07:33 /sys/bus/usb/devices/usb5/power/wakeup
-rw-r--r-- 1 root root 4,0K abr 6 07:33 /sys/bus/usb/devices/usb6/power/wakeup
试图找出挂起失败的原因。看起来没有失败(如此处),但我不确定它是否真的挂起并醒来,或者它退出挂起(如果它们是两个不同的东西)。
$ journalctl -b | grep -nH suspend
(standard input):1576:abr 06 07:28:55 Orion sudo[1196]: root : TTY=unknown ; PWD=/home/santiago ; USER=root ; COMMAND=/usr/sbin/pm-suspend
(standard input):1578:abr 06 07:28:58 Orion kernel: PM: suspend entry (deep)
(standard input):1583:abr 06 07:29:04 Orion kernel: printk: Suspending console(s) (use no_console_suspend to debug)
(standard input):1627:abr 06 07:29:04 Orion kernel: PM: suspend exit
添加可能有用的行。看起来在第 1591 行和第 1592 行之间发生了唤醒。
$ journalctl -b | grep -nH -A 40 -B 40 suspend
...
(standard input):1578:abr 06 07:28:58 Orion kernel: PM: suspend entry (deep)
(standard input)-1579-abr 06 07:28:58 Orion kernel: Filesystems sync: 0.191 seconds
(standard input)-1580-abr 06 07:29:04 Orion kernel: Freezing user space processes ... (elapsed 0.004 seconds) done.
(standard input)-1581-abr 06 07:29:04 Orion kernel: OOM killer disabled.
(standard input)-1582-abr 06 07:29:04 Orion kernel: Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
(standard input):1583:abr 06 07:29:04 Orion kernel: printk: Suspending console(s) (use no_console_suspend to debug)
(standard input)-1584-abr 06 07:29:04 Orion kernel: wlp2s0: deauthenticating from d0:6e:de:8e:25:f6 by local choice (Reason: 3=DEAUTH_LEAVING)
(standard input)-1585-abr 06 07:29:04 Orion kernel: sd 0:0:0:0: [sda] Synchronizing SCSI cache
(standard input)-1586-abr 06 07:29:04 Orion kernel: sd 0:0:0:0: [sda] Stopping disk
(standard input)-1587-abr 06 07:29:04 Orion kernel: ACPI: Preparing to enter system sleep state S3
(standard input)-1588-abr 06 07:29:04 Orion kernel: PM: Saving platform NVS memory
(standard input)-1589-abr 06 07:29:04 Orion kernel: Disabling non-boot CPUs ...
(standard input)-1590-abr 06 07:29:04 Orion kernel: IRQ 30: no longer affine to CPU1
(standard input)-1591-abr 06 07:29:04 Orion kernel: smpboot: CPU 1 is now offline
(standard input)-1592-abr 06 07:29:04 Orion kernel: ACPI: Low-level resume complete
(standard input)-1593-abr 06 07:29:04 Orion kernel: PM: Restoring platform NVS memory
(standard input)-1594-abr 06 07:29:04 Orion kernel: LVT offset 0 assigned for vector 0x400
(standard input)-1595-abr 06 07:29:04 Orion kernel: microcode: reload patch_level=0x05000119
(standard input)-1596-abr 06 07:29:04 Orion kernel: Enabling non-boot CPUs ...
(standard input)-1597-abr 06 07:29:04 Orion kernel: x86: Booting SMP configuration:
(standard input)-1598-abr 06 07:29:04 Orion kernel: smpboot: Booting Node 0 Processor 1 APIC 0x1
(standard input)-1599-abr 06 07:29:04 Orion kernel: microcode: CPU1: patch_level=0x05000119
(standard input)-1600-abr 06 07:29:04 Orion kernel: CPU1 is up
(standard input)-1601-abr 06 07:29:04 Orion kernel: ACPI: Waking up from system sleep state S3
(standard input)-1602-abr 06 07:29:04 Orion kernel: [drm] Found smc ucode version: 0x00010601
(standard input)-1603-abr 06 07:29:04 Orion kernel: rtlwifi: rtlwifi: wireless switch is on
(standard input)-1604-abr 06 07:29:04 Orion kernel: [drm] PCIE GART of 1024M enabled (table at 0x0000000000162000).
(standard input)-1605-abr 06 07:29:04 Orion kernel: radeon 0000:00:01.0: WB enabled
...
这里没有 Nvidia 驱动程序。显卡是 ATI Radeon。
$ dpkg -l | grep nvidia
ii bodhi-background-invidia 0.01 all Bodhi Sunshine Invidia
有关的
我在我的设置中添加了一个独立的 GPU (AMD RX 6900XT)。效果很好,除了暂停/恢复不再工作。以前,我在 Intel iGPU 上运行并且运行良好,因此 GPU 必须在工作中使用扳手。
lspci -k
显示:
01:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch (rev c0)
Kernel driver in use: pcieport
02:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch
Kernel driver in use: pcieport
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] (rev c0)
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Radeon RX 6900 XT
Kernel driver in use: amdgpu
Kernel modules: amdgpu
03:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT]
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
03:00.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] Device 73a6
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device 73a6
Kernel driver in use: xhci_hcd
Kernel modules: xhci_pci
03:00.3 Serial bus controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 USB
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device 0408
Kernel driver in use: i2c-designware-pci
lsmod | grep -ie 'amd'
显示:
amdgpu 8601600 18
drm_ttm_helper 16384 1 amdgpu
ttm 86016 3 amdgpu,drm_ttm_helper,i915
gpu_sched 53248 1 amdgpu
xrandr --listproviders
显示:
Providers: number : 2
Provider 0: id: 0x58 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 4 associated providers: 1 name:AMD Radeon RX 6900 XT @ pci:0000:03:00.0
Provider 1: id: 0x6f7 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 4 outputs: 3 associated providers: 1 name:modesetting
我做过的事情:
- 创建了一个 Xorg.conf
X -configure
- 添加
amdgpu
到内核模块(在mkinitcpio.conf
) - 尝试了各种 BIOS 设置,例如启用 ASPM、禁用 iGPU
- 已安装
xf86-video-amdgpu
的包(除了明显的meta
包和 Vulkan 包) - 黑名单模块 i915 (
blacklist.conf
in/etc/modprobe.d
) 以防 iGPU 仍然参与 - 列入黑名单
ucsi_ccg
(显示错误) - 已安装
acpid
的软件包(日志显示一些警告) - 试过
amdgpu.dc=0
,amdgpu.reset_method=2
,amdgpu.runpm=0
,nomodeset
,pcie_aspm=force
,acpi_osi=Linux
,acpi_osi=Windows
内核参数 - 将内核从 5.17.1 降级到 5.16.6、5.16.3、5.15.13
- 尝试了实验
mesa-git
包(和相关包) - 重新安装台面
- 重新安装
linux-headers
- 尝试了https://gitlab.freedesktop.org/drm/amd/-/issues/1797的解决方案,这似乎是一个类似的问题
我正在使用带有 GNOME/Xorg 的 Arch Linux (5.17.1)。硬件规格:Intel 第 12 代 12700,配备 32GB DDR5 G.SKILL 内存的 GIGABYTE AERO G 主板。我将显示器 (Alienware AW3420DW) 连接到 DisplayPort 电缆。
如果我查看上次挂起尝试的日志(日志),则挂起的所有日志都是:
apr 02 11:43:43 arch NetworkManager[764]: <info> [1648892623.2585] manager: sleep: sleep requested (sleeping: no enabled: yes)
apr 02 11:43:43 arch NetworkManager[764]: <info> [1648892623.2589] device (wlo1): state change: unavailable -> unmanaged (reason 'sleeping', sys-iface-state: 'managed')
apr 02 11:43:43 arch NetworkManager[764]: <info> [1648892623.2602] device (wlo1): set-hw-addr: reset MAC address to F0:9E:4A:8A:9B:02 (unmanage)
apr 02 11:43:43 arch NetworkManager[764]: <info> [1648892623.2623] manager: NetworkManager state is now ASLEEP
apr 02 11:43:43 arch gnome-shell[1091]: Timelines with detached actors are not supported
apr 02 11:43:47 arch systemd[1]: Reached target Sleep.
apr 02 11:43:47 arch systemd[1]: Starting System Suspend...
系统似乎正常挂起。当我按下一个键时,系统重新打开(电源 LED 亮起,风扇转动)但屏幕保持黑色。有趣的是,没有任何关于恢复尝试的日志。我已经处理了另一台计算机上的 NVIDIA 卡的挂起/恢复问题,但总是记录有关启动恢复的一些信息(然后通常由于模式设置问题而无法找到 GPU)。
我还查看了dmesg
Xorg 日志,但没有什么有趣的。至少,没有明显的错误或警告。
在这一点上我几乎没有想法,所以我希望有人可以分享一些提示或指出我可以进一步调查的事情。
我尝试按照以下规则为笔记本电脑的合上盖子提供一种行为:
当盖子关闭时:
- 1m后,应该是锁屏的;
- 10m后应暂停;
- 15m后应关机。
因此,我制作了以下脚本:
#!/bin/bash
USER=fauve
sleep 1m
# set screensaver
su -c "$HOME/.local/bin/screenlock" - $USER
# hibernate
sleep 9m
systemctl suspend
sleep 5m
# shutdown
shutdown 0
但正如您所看到的,shutdown
当笔记本电脑处于暂停状态时,它就永远不会关闭。
那么如何编程暂停或关闭 5 分钟,然后让脚本继续完全关闭计算机?
我有一台在内核 5.17 上运行 Manjaro 21.2.3 的 Lenovo Legion Slim 7 笔记本电脑(15ACH6)。
我面临的问题是,在干净启动时,我无法更改系统亮度(使用 Fn 键或更改brightness
in的实际值/sys/class/backlight
)。然而,在让系统进入睡眠状态然后恢复之后,亮度控制就可以正常工作了——尽管亮度级别没有被保留。
内容/sys/class/backlight
:
amdgpu_bl1 -> ../../devices/pci0000:00/0000:00:08.1/0000:05:00.0/backlight/amdgpu_bl1/
nvidia_0 -> ../../devices/pci0000:00/0000:00:01.1/0000:01:00.0/backlight/nvidia_0/
nvidia_wmi_ec_backlight -> ../../devices/pci0000:00/PNP0C14:00/wmi_bus/wmi_bus-PNP0C14:00/603E9613-EF25-4338-A3D0-C46177516DB7/backlight/nvidia_wmi_ec_backlight/
实际亮度值写入文件,nvidia_wmi_ec_backlight/brightness
其他2个保持不变。
加载的 nVidia 内核模块:
nvidia_uvm 2650112 0
nvidia_drm 73728 2
nvidia_modeset 1163264 3 nvidia_drm
nvidia_wmi_ec_backlight 16384 0
nvidia 39133184 99 nvidia_uvm,nvidia_modeset
wmi 40960 3 nvidia_wmi_ec_backlight,wmi_bmof,ideapad_laptop
在小于 5.16 的内核上,该nvidia_wmi_ec_backlight
模块不存在,我无法更改亮度。我想知道是什么原因导致该模块仅在从 sleep 恢复后才能正常运行。
我怀疑某种竞争条件或不正确的初始化。为了理解这种行为,我应该做什么样的调查?
内核模块的源代码在这里:nvidia-wmi-ec-backlight.c
.
输出inxi -Fz
:
System:
Kernel: 5.17.0-1-MANJARO x86_64 bits: 64 Desktop: GNOME 41.3
Distro: Manjaro Linux
Machine:
Type: Laptop System: LENOVO product: 82K8 v: Legion S7 15ACH6
serial: <superuser required>
Mobo: LENOVO model: LNVNB161216 v: NO DPK serial: <superuser required>
UEFI: LENOVO v: HACN27WW date: 08/02/2021
Battery:
ID-1: BAT0 charge: 64.3 Wh (90.6%) condition: 71.0/71.0 Wh (100.0%)
CPU:
Info: 8-core model: AMD Ryzen 9 5900HX with Radeon Graphics bits: 64
type: MT MCP cache: L2: 4 MiB
Speed (MHz): avg: 1526 min/max: 400/4680 cores: 1: 1397 2: 1397 3: 1397
4: 1395 5: 1396 6: 1395 7: 1397 8: 1397 9: 1397 10: 3482 11: 1395 12: 1396
13: 1396 14: 1395 15: 1397 16: 1397
Graphics:
Device-1: NVIDIA GA106M [GeForce RTX 3060 Mobile / Max-Q] driver: nvidia
v: 510.47.03
Device-2: AMD Cezanne driver: amdgpu v: kernel
Device-3: Syntek Integrated Camera type: USB driver: uvcvideo
Display: x11 server: X.org 1.21.1.3 driver: loaded: amdgpu,ati,nvidia
unloaded: modesetting,nouveau,radeon resolution: <missing: xdpyinfo>
OpenGL: renderer: AMD RENOIR (DRM 3.44.0 5.17.0-1-MANJARO LLVM 13.0.0)
v: 4.6 Mesa 21.3.5
Audio:
Device-1: NVIDIA driver: snd_hda_intel
Device-2: AMD Raven/Raven2/FireFlight/Renoir Audio Processor driver: N/A
Device-3: AMD Family 17h HD Audio driver: snd_hda_intel
Sound Server-1: ALSA v: k5.17.0-1-MANJARO running: yes
Sound Server-2: PulseAudio v: 15.0 running: yes
Network:
Device-1: Intel Wi-Fi 6 AX200 driver: iwlwifi
IF: wlp2s0 state: up mac: <filter>
Bluetooth:
Device-1: Intel AX200 Bluetooth type: USB driver: btusb
Report: rfkill ID: hci0 rfk-id: 4 state: down bt-service: enabled,running
rfk-block: hardware: no software: yes address: see --recommends
Drives:
Local Storage: total: 953.87 GiB used: 169.04 GiB (17.7%)
ID-1: /dev/nvme0n1 vendor: SK Hynix model: HFS001TDE9X084N
size: 953.87 GiB
Partition:
ID-1: / size: 905.83 GiB used: 169.04 GiB (18.7%) fs: ext4
dev: /dev/nvme0n1p3
ID-2: /boot/efi size: 511 MiB used: 288 KiB (0.1%) fs: vfat
dev: /dev/nvme0n1p1
Swap:
ID-1: swap-1 type: partition size: 32 GiB used: 0 KiB (0.0%)
dev: /dev/nvme0n1p2
Sensors:
System Temperatures: cpu: N/A mobo: N/A
Fan Speeds (RPM): N/A
Info:
Processes: 452 Uptime: 8m Memory: 30.79 GiB used: 3.68 GiB (12.0%)
Shell: Zsh inxi: 3.3.12
更新:似乎在干净启动时我可以使用amdgpu_bl1
控制器控制亮度:
echo 50 | sudo tee /sys/class/backlight/amdgpu_bl1/brightness
从睡眠中恢复后,开始nvidia_wmi_ec_backlight
负责。