微妙的破裂比坦率的破裂更糟糕......
背景:
我已经在系统设置->电源中禁用挂起功能。
“暂停”选项仍然出现在齿轮菜单上(我没想到它会消失),并且键盘上的睡眠(月亮)按钮仍然会触发暂停。
正如其他人指出的那样,#1 中的选项太容易每月左右被误击一次。
似乎只有 1% 的平台可以正确挂起,因为某个地方的某个驱动程序工程师忘记检查 PCIe 或 IO 空间寄存器 X 在唤醒时是否恢复。所以这比损坏更糟糕:唤醒后一切通常看起来都很好,但事实并非如此。希望这些损坏的寄存器不会像 ECC 配置或存储 FIFO 深度那样以渐进的方式影响可靠性。但它们通常会以某种形式影响可靠性,这就是为什么针对图形驱动程序的勘误表在它们上市多年后仍会无限期地持续下去的原因之一(“图形芯片 X 在从挂起状态恢复一小时后挂起等等”)。
应该有一个自动化测试来查看哪些寄存器在睡眠周期内发生变化,但很少有供应商有这样的测试。由于某些寄存器预计会发生变化(例如计时器),因此测试有些复杂。更糟糕的是,有时您必须按特定顺序或特定粒度读取寄存器,或者首先在其他地方写入读取索引。因此,这个过程不能集中在行业中方便的地方,比如 Canonical 的办公室。除非 PCIe 重新定义成便于比较的方式,否则这真的是无望的,但事实并非如此。
由于驱动程序开发的混乱状态,#5 中的神奇测试套件永远不会被编写出来。因此,在没有这些的情况下,我提出了这个问题。
我非常绝望,我不介意对 /etc/whatever_suspend_file 进行黑客攻击,但如果有一种“礼貌”的方式来做到这一点会很好,比如系统设置 - > 电源中不存在的复选框,上面写着“永久禁用挂起,因为它从第一天起就是错误的想法”。
注意:我这里不讨论休眠,休眠不会出现上述问题,因为它涉及电源循环。尽管从原则上讲,从永久存储中恢复寄存器可能会出现类似的问题。
答案1
根据Debian 维基,你也可以通过 systemd 禁用它,如下所示:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
虽然我已经在自己的机器上这样做了,但我无法证明其有效性。我没有足够的勇气去特意尝试。
答案2
在 Ubuntu 16.* 上尝试这个。
去:
- 系统设置
点击:
亮度与锁定
不活动时关闭屏幕
将其设置为“从不”
希望能帮助到你 :)
答案3
运行以下命令打开要编辑的文件:
sudo -H gedit /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
滚动到底部。检查以下信息是否存在,如果不存在,请添加:
[Disable suspend]
Identity=unix-user:*
Action=org.freedesktop.upower.suspend
ResultActive=no
这样做会使单击暂停时它不执行任何操作;重新启动计算机后它将从菜单中消失。
您也可以运行此命令来防止计算机进入睡眠状态:
gsettings set org.gnome.desktop.session idle-delay 0
答案4
在 Ubuntu 20.04 中,转到“设置”->“隐私”->“屏幕”将黑屏延迟更改为“从不”