当我从休眠状态恢复时,屏幕经常损坏。我怀疑没有保存图形内存。否则挂起到内存工作正常。
看起来字体缓存也已损坏,因为所有字母均已损坏。该效果似乎针对特定大小的字体。例如,如果我的终端窗口被点击,更改字体和/或字体大小将修复它,除非该大小的字体已经损坏。
如果字体在其他地方(其他应用程序、窗口管理器等)使用,那么问题也存在。有时用于窗口标题的字体被命中,然后所有窗口标题显示相同的字母损坏。
注销并再次登录可以修复它,但我不想这样做。我一直在注销然后休眠,但这是更多的努力并且消除了休眠的大部分好处。
有没有别的办法刷新X11的显示?该Ctrl+ Alt+ F1...没有任何解决它。它切换终端但不重绘任何内容:它只显示旧的损坏屏幕。
我正在使用 Debian 6。
在这种情况下,窗口标题不好:

终端内容不好,但标题(仍然)还可以:

当Linux系统休眠并从休眠状态恢复时,我认为内核需要知道它正在恢复,而不是引导。否则,内核将启动通常的引导过程,并且不会加载交换的数据。内核如何知道它正在恢复?
起初,我认为GRUB(或其他引导加载程序)通过内核参数告诉内核。但只要我检查/proc/cmdline,内核参数就和平常一样了。是否有任何机制让内核知道它正在恢复?
如果我锁定屏幕,关闭笔记本电脑盖进入休眠状态,打开笔记本电脑盖并按下电源按钮,屏幕只会显示黑色表面,我可以立即开始输入密码。如果我在休眠前不锁屏,等待大约30s,打开笔记本电脑盖并按下电源按钮,屏幕会显示桌面,然后像退出休眠状态xscreensaver后被激活一样逐渐变黑。只有在淡出后,我才能停用屏幕保护程序。如何确保在休眠时始终正确激活,以便我不必等待淡出?xscreensaver
根据我拼凑的各种来源~/.config/systemd/user/screenlock.service:
[Unit]
Description=Lock X session
Before=sleep.target
[Service]
Environment=DISPLAY=:0
ExecStart=/usr/bin/xautolock -locknow
[Install]
WantedBy=sleep.target
Run Code Online (Sandbox Code Playgroud)
我已经使用systemctl --user enable screenlock.service. 但是在重新启动、登录、暂停和恢复(systemctl suspend通过关闭盖子进行测试)后,屏幕没有锁定,并且journalctl --user-unit screenlock.service. 我究竟做错了什么?
运行DISPLAY=:0 /usr/bin/xautolock -locknow会按预期锁定屏幕。
$ systemctl --version
systemd 215
+PAM -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ +SECCOMP -APPARMOR
$ awesome --version
awesome v3.5.5 (Kansas City Shuffle)
• Build: Apr 11 2014 09:36:33 for x86_64 by gcc version 4.8.2 (nobody@)
• Compiled against Lua 5.2.3 (running with Lua …Run Code Online (Sandbox Code Playgroud) 当计算机进入休眠模式时,它会将 RAM 的内容保存到交换空间中,以便在重新启动时可以从上次中断的地方恢复。
那么,如果您当前使用的内存多于 RAM 呢?在这种情况下,一些原本应该在 RAM 中的数据被保存到交换区。
一个例子。一台计算机有 1GB 的 RAM 和 1GB 的交换空间。它目前只使用 100MB 的 RAM 和 500MB 的交换空间。因此,它需要记住大约 1.4GB 的内存来保存其状态。但是,swap 只有 1GB。
在这种情况下会发生什么?
~~编辑~~
如下所述,休眠失败。那么接下来的问题是:
当这失败时,错误报告在哪里?
我最近将内核从 3.16.4 (Debian jessie) 升级到 4.9.0 (Debian stretch)。一切都很好,直到我尝试“休眠”(暂停到磁盘)。
当我在 LXDE 中使用 Hibernate 选项时,它似乎处于休眠状态。我能听到磁盘主轴滴答作响和写入数据的声音。但是从休眠状态恢复时就会出现问题。内核成功地从交换中恢复了映像,但随后冻结并重新启动,所有这些工作都丢失了。我在互联网上的任何地方都找不到答案。人们只是在解决一些关于未设置 /etc/initramfs-tools/conf.d/resume 或设置内核参数或在 /etc/fstab 中输入错误的错误。我有这些正确的。更正 /etc/initramfs-tools/conf.d/resume 中的 UUID,更正 fstab 并且不设置 resume kernel 参数。
我将扩展分区之外的交换分区移动到主分区。UUID 已保存并应用于新的交换。
系统到达“正在恢复映像 100%”,然后到达“暂停控制台”,然后它会断电并正常启动,所有工作都丢失了。
尝试干净安装,但没有运气。
仅在 i386(32 位 x86)上发生,amd64(64 位 x86)不会受到影响。
磁盘分区表布局:
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
??sda1 ext4 HDD <ROOT-UUID> /
??sda2 swap HDD-SWAP <SW-UUID> [SWAP]
sr0
Run Code Online (Sandbox Code Playgroud)
sda2 在升级之前是合乎逻辑的(resides-inside-extended)。
表:
UUID=<ROOT-UUID> / ext4 errors=remount-ro 0 1
UUID=<SW-UUID> none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
/etc/initramfs-tools/conf.d/resume
RESUME=UUID=<SW-UUID>
Run Code Online (Sandbox Code Playgroud)
内核命令行
BOOT_IMAGE=/boot/vmlinuz-4.9.0-3-686-pae root=UUID=<ROOT-UUID> ro quiet
Run Code Online (Sandbox Code Playgroud)
系统信息:
Computer: Compaq CQ60-120ec …Run Code Online (Sandbox Code Playgroud) 我一直在努力让我的三星 ATIV BOOK 9 Lite暂停和休眠工作几个小时。当我尝试恢复屏幕时,电源指示灯亮起,但屏幕保持黑色。按下大写锁定键时大写锁定指示灯没有反应,因此使用 Fn 键增加屏幕亮度也不起作用。
我使用了内核版本 3.11 和 3.12rc5,pm 日志不会告诉我太多信息。
$ uname --all
Linux wiske 3.11-2-amd64 #1 SMP Debian 3.11.10-1 (2013-12-04) x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
我的硬件:
$ lspci
00:00.0 Host bridge: Advanced Micro Devices [AMD] Family 16h Processor Root Complex
00:01.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Device 983d
00:01.1 Audio device: Advanced Micro Devices [AMD] nee ATI Device 9840
00:02.0 Host bridge: Advanced Micro Devices [AMD] Family 16h Processor Function 0
00:02.3 PCI bridge: …Run Code Online (Sandbox Code Playgroud) 我在 Linux Mint 14 上尝试了多次休眠。它似乎不起作用。我添加了一些我认为可能有用的日志。有人可以帮我诊断问题吗?
笔记本电脑型号:I:TOSHIBA Satellite R630/便携式电脑,BIOS 版本 1.90 02/24/2011
/var/日志/系统日志
Feb 21 21:21:51 kernel: [ 3526.006366] PM: Marking nosave pages: [mem 0x0009e000-0x000fffff]
Feb 21 21:21:51 kernel: [ 3526.006372] PM: Marking nosave pages: [mem 0xb70d0000-0xffffffff]
Feb 21 21:21:51 kernel: [ 3526.007297] PM: Marking nosave pages: [mem 0x1fc000000-0x1ffffffff]
Feb 21 21:21:51 kernel: [ 3526.007556] PM: Basic memory bitmaps created
Feb 21 21:23:00 kernel: imklog 5.8.6, log source = /proc/kmsg started.
Feb 21 21:23:00 kernel: [ 7.877813] EXT4-fs (sda5): INFO: recovery …Run Code Online (Sandbox Code Playgroud) 我有一个程序将执行一个冗长的计算,可能需要几天才能完成。
有没有办法保存程序的运行状态;这样我就可以关闭计算机并从保存的状态运行程序。或者如果程序因任何原因崩溃,我可以从保存的状态(而不是从一开始)重新启动它?
更新:我在第 4 节中遇到了一些与我的脚本不一致的地方,该脚本旨在在每次唤醒时执行。事实证明,/proc/acpi/wakeup设置只是有时会重置。不是每次关机/重启/休眠/挂起。因此,有时,我的脚本会启用唤醒功能。我已经更新了脚本。现在它检查它是否在任何地方启用,/proc/acpi/wakeup然后才输出给它。
从某种意义上说,这是我未来的备忘录。我不明白为什么 linux 上的休眠不是一个简单的功能,为什么启用它必须如此复杂。我希望它也能帮助那些对冬眠有疑问的人。
sudo swapon --show. 你可能没有足够的。您的交换大小应该比 RAM 大小稍大。网上有一些指南。我在我的 4GB RAM 机器上进行 5GB 交换。/dev/vgmint/root和/dev/vgmint/swap卷。LVM 挂载时无法调整大小,因此您可以从带有 Linux Mint 的 U 盘启动。在那里你可以使用磁盘应用程序来解锁你的加密 LVM 并使用这个漂亮的指南来安全地减小/dev/vgmint/root卷的大小:
sudo e2fsck -f /dev/vgmint/rootsudo resize2fs /dev/vgmint/root 180G。将 180G 替换为您希望最终卷大小的 90%。sudo lvreduce -L 200G /dev/vgmint/root,其中 …hibernate ×10
suspend ×3
arch-linux ×2
debian ×2
linux-kernel ×2
linux-mint ×2
swap ×2
systemd ×2
acpi ×1
awesome ×1
boot-loader ×1
crunchbang ×1
desktop ×1
dump ×1
fstab ×1
initramfs ×1
linux ×1
pm-utils ×1
process ×1
sleep ×1
xorg ×1
xscreensaver ×1