我从不关闭我的笔记本电脑。我改用休眠。休眠和挂起正在工作,但如果我在单击“休眠”后合上盖子,下次启动将崩溃。我看到一个永远不会消失的黑屏,我必须按住电源按钮来硬重置它,丢失所有打开的应用程序。
当我忘记它并合上盖子时,我讨厌!有解决方案吗?这是没有解决方案的兼容性问题吗?
我的笔记本电脑是运行 Debian wheezy 的联想 Ideapad Y460。
Linux 2.6.39-2-amd64 #1 SMP Tue Jul 5 02:51:22 UTC 2011 x86_64 GNU/Linux
我是 Linux 休眠支持的忠实粉丝,它在我尝试过的所有(不可否认的稍旧)硬件上都运行得非常好。我非常喜欢它完全关机和开机。
不过,关于休眠的一件事让我困扰了一段时间:休眠的系统在恢复后总是缓慢且无响应。通电后不会立即活泼。旧硬件会加剧这种情况,但在较新的系统上也会发生稍微显着的程度。
这似乎是因为内核只将 [内核级] 操作所必需的页面交换回工作内存,恢复内核的基本工作状态,并让用户空间在各种进程交换他们需要的页面时只搅动一段时间。 RAM 下他们自己的蒸汽。
这在实践中效果不佳,因为系统最初运行时好像某个大型进程已强制所有内容完全交换到磁盘。屏幕上的任何内容都会很快换回,但切换到另一个进程,您将等待几秒钟,因为它也会换回内存。在较旧的硬件上——我的例子是 Core 2 ThinkPad T60——“几秒钟”甚至可以结束几分钟。
我最近意识到这个问题有一个令人惊讶的简单解决方案,在考虑了一下之后:记下标记磁盘和 RAM 中哪些页面的标签,然后在恢复时恢复这个确切的状态。当然,恢复过程可能需要大约 10 秒以上,但我不在乎 - 我有一个活泼的系统。
我想知道是否有任何晦涩的内核编译选项可以启用此类功能,或者我可以设置一些近似于这种行为的配置?
注意:我不认为swapoff -a; swapon -a可行的解决方案;当挂起的用户空间被重新激活时,所有加载的进程都在尝试执行代码并努力将自己交换回 RAM,从而导致大量的磁盘 I/O。试图破坏交换区只会加剧飓风,实际上比内核在重新激活用户空间之前恢复所有RAM需要更长的时间才能完成。
我的Wi-Fi将不会在下班后暂停,但WILL下班后冬眠。 我已经尝试了几件事并且有一些运气,所以我会发布我所做的事情以及我所看到的效果。
$ sudo lshw
description: Notebook
product: HP ENVY 14 Notebook PC (J9L59UA#ABA)
vendor: Hewlett-Packard
version: 096C120014405F10000620182
serial: 5CD5143D9B
width: 64 bits
capabilities: smbios-2.7 dmi-2.7 vsyscall32
configuration: administrator_password=disabled boot=normal chassis=notebook family=103C_5335KV G=N L=CON B=HP S=ENV X=Null sku=J9L59UA#ABA uuid=35434435-3134-3344-3942-D0BF9C9A90FA
*-core
description: Motherboard
product: 2298
vendor: Hewlett-Packard
physical id: 0
version: 78.21
serial: PEWNT018J8I1ER
slot: Type2 - Board Chassis Location
*-firmware
description: BIOS
vendor: Insyde
physical id: 0
version: F.36
date: 02/02/2015
size: 128KiB
capacity: 6080KiB …Run Code Online (Sandbox Code Playgroud) 我使用 Debian Jessie 并希望使用 uswsusp 进行待机/休眠。安装配置没问题,s2disk手动执行也可以。然而,对于 systemd,系统似乎发生了巨大的变化。替换 pm-* 文件或类似文件的旧解释不起作用。
此外,官方 wiki也无济于事,因为文档没有多少帮助。
How to hibernate in Debian Jessie与这个问题密切相关,但是 - 但是 - 只显示了用户遇到的特定问题的修复程序,而没有解释如何使用 uswsusp。然而在一个答案将sleep.conf被提到(我只是怀疑“关机”是正确的入口设置有像我们......呃......不想关机,但冬眠)。
所以这个文件似乎是一件好事,您可以在其中更改休眠系统,但是 man 文件令人困惑,我不明白必须放入的内容。
额外:还要解释如何首先使用混合睡眠(或“暂停镇静”或您将如何称呼它)。
我认为睡眠/暂停到 RAM只是将会话保存到 RAM,因此进入睡眠并很快恢复,但在电池耗尽的情况下,由于机器因电源故障而关闭,会话将丢失。
在Hibernation 中,RAM 中活动的会话数据保存在 HDD 上(我认为需要交换分区),然后机器完全关闭。当 Linux 系统再次启动时,所有打开的程序都会从磁盘中恢复会话。(在多重启动的情况下,在回到Linux之前可以选择使用其他系统,如Windows,不影响休眠程序的有效性。)
我知道Hybrid-Sleep是一种中介操作;它不会关闭机器(例如,您不能在多重启动中进入 Windows)并且会刷新 RAM(例如在“睡眠/暂停到 RAM”中),同时数据也会保存到 HDD 的交换空间。
如果机器完全关闭时电池电量耗尽:混合睡眠状态会发生什么?我认为RAM数据丢失了,但是当Linux系统再次启动时,硬盘备份是否恢复了?
我希望能够让我的另一台 Debian/KDE 机器休眠,因为它很实用,而且我想节省一些能源。
我无法休眠另一个当前禁用了交换文件和安全启动的文件。
这台机器运行 Debian10/KDE,启用了安全启动,目前没有交换文件,但有一个交换分区(比 RAM 大)。硬盘是完全加密的。我已经尝试了以下方法:
sudo s2disk. 这将返回:s2disk: Could not open the snapshot device. Reason: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
sudo hibernate. 这将返回:hibernate:Warning: Tuxonice binary signature file not found.
UdevQt: unhandlet device action "unbind"
UdevQt: unhandled device action "unbind"
UdevQt: unhandlet device action "bind"
UdevQt: unhandled device action "bind"
Run Code Online (Sandbox Code Playgroud)
sudo pm-hibernate. 这什么都不返回,什么也没有发生。sudo systemctl hibernate。Failed to hibernate system via logind: Sleep …Run Code Online (Sandbox Code Playgroud) 几天前,我跑到dmesg我的终端上看到这条线Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
有时,如下图[附],内核环形缓冲区只重复打印这一行!
此诊断消息是关于什么的,它是什么意思?如果这是我应该立即处理的事情,我该怎么办?
在我全新安装的带有 MATE 的 Linux Mint 16 中,电源管理器中没有休眠选项;只挂起和关闭。
在退出菜单中,我将休眠作为一个选项。也sudo pm-hibernate可以从命令行工作。
关于如何在电源管理器中启用休眠的任何建议?我想在笔记本电脑盖合上时休眠。
我有足够的交换空间供休眠工作:
$ free -h
total used free shared buffers cached
Mem: 3.5G 1.6G 1.8G 0B 18M 406M
-/+ buffers/cache: 1.2G 2.3G
Swap: 3.6G 16M 3.6G
Run Code Online (Sandbox Code Playgroud) 这个问题是关于当两个发行版共享一个交换分区时的副作用的一个更具体的“子问题” 。
如果我在我的机器上安装两个带有共享交换分区的 Linux 发行版,其中一个休眠,然后启动到另一个,实际会发生什么?另一个会发现交换数据无效,还是会尝试使用它(可能会产生不可预测的后果)?
我使用的是最新的 Arch/Antergos Linux。
从休眠状态恢复后,我的触摸板停止工作。我似乎受到了这个错误的影响,我需要sudo rmmod i2c_hid; modprobe i2c_hid在每次恢复后输入以使触摸板恢复工作状态。
我试图通过添加脚本这一进程的自动化fix-touchpad.sh,以/usr/lib/systemd/system-sleep使得它在恢复时从休眠状态运行:
#!/bin/sh
if [ $1 = post ]
then
rmmod i2c_hid
modprobe i2c_hid
fi
Run Code Online (Sandbox Code Playgroud)
该脚本在启动时执行,我在测试echo "something" > log.log之前和之后if以及就在fi. 然而,它并没有让我的触摸板恢复原状。
我还在sh fix-touchpad.sh post恢复后成功测试了脚本,瞧,我的触摸板再次唤醒。
为什么脚本在作为恢复程序的一部分运行时不修复触摸板?
有没有其他方法可以修复我的触摸板?
hibernate ×10
systemd ×3
debian ×2
laptop ×2
linux-mint ×2
suspend ×2
swap ×2
arch-linux ×1
cinnamon ×1
dual-boot ×1
hybrid-sleep ×1
io ×1
kde ×1
linux ×1
mate-desktop ×1
secure-boot ×1
shell-script ×1
shutdown ×1
touchpad ×1
wifi ×1