序言/系统规格
我已经将这篇文章的主要部分发布到了https://github.com/NigelCunningham/tuxonice-kernel/issues/30
几年前我购买笔记本电脑后不久,我就遇到了从 Ubuntu 休眠状态恢复的问题……
我的系统目前正在使用内核运行unity
DM xenial
(16.04LTS) Linux [namehere] 4.4.0-78-generic-tuxonice #99~ppa1-Ubuntu SMP Thu May 18 20:29:50 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
。tuxonice
内核版本已从 ppa 安装和更新:deb http://ppa.launchpad.net/tuxonice/ppa/ubuntu xenial main
。笔记本电脑是 Dell Inspiron 14-5447,配备 i5-4210U CPU、8GB RAM 和 1TB 非 Dell HDD,其中 Linux 分区约占 55%。此外,我使用tint2
系统托盘列出所有应用程序的所有窗口(除了 Dock,它只显示所有打开的应用程序),此外还在 time-til-empty 上方显示电池状态,在 DDDD yyyy-mm-dd 上方显示 hh:nn:ss(抱歉使用了 MS 符号)。
该系统与 windows10 是双启动(grub2
),但我很少使用 windows,一般来说,当我使用 windows 时,磁盘上没有 linux 休眠映像(或使用 linux 时没有 windows 休眠映像)
主要问题
大约有 50% 的时间hibernate
,我无法在第一次尝试时恢复此磁盘映像。该过程使主用户空间 + 内核复制/恢复达到 100%,但随后在接下来的几个步骤之一中冻结:
- (无背光黑屏)
Doing atomic copy/restore
(100% 时)Doing atomic copy/restore
(0%)(可能
Doing atomic copy/restore
再次达到 100%)它偶尔会进入登录屏幕,但然后就冻结了。
有时系统锁定时,指示灯caps lock
会稳定闪烁。其他时候,没有任何外部迹象表明系统已锁定。按住电源按钮关闭系统,等待几秒钟,然后重新打开系统,通常(大约 75% 的时间)可以恢复hibernate
(当然,如果我按下“c”键确认我想再次尝试使用该图像)。
如果它在第二次尝试时锁定,我将尝试最多 8 次来恢复……但如果它在第四次尝试时没有恢复,我想我以后再也没有恢复过,所以我最终会使该映像无效,我的假设是休眠映像的某些部分保存不正确。如果它在登录屏幕上锁定,有时(但并非总是)它已经删除了休眠映像,因此无法使用该映像再次尝试恢复。
如果我使用默认(非tuxonice
)内核,第一次尝试的成功率似乎会略高一些,但如果失败,我不会选择再次尝试使用该图像。因此,我还没有严格测试这两个内核的成功率。
当我在创建图像和恢复图像期间更改电源或显示状态(插入到拔出或反之亦然;将外接显示器拔出或 vv)时,我似乎更频繁地遇到从图像恢复的问题。但问题并非每次发生时都会发生,也不会只在电源或显示状态更改时发生。
我有时会使用suspend
而不是hibernate
。大约 10% 的时间,这会锁定在登录屏幕上,显示我将其置于睡眠状态的时间而不是当前时间。关闭并重新启动时,没有使用映像进行恢复的选项(如预期的那样)。
休眠或挂起的失败率似乎并不取决于休眠/挂起的方法:从顶部菜单栏上的电源菜单中选择、关闭笔记本电脑而不插入外接显示器和电源、电池严重不足或命令行调用。
其他系统异常
为了完整起见:我的系统有几个奇怪的现象。偶尔(约 1%)在启动时(无论是热启动还是冷启动;休眠或非休眠)键盘没有响应。我设置了 100 秒的等待按键延迟,这样grub2
如果键盘没有响应,我可以关闭系统并在提示休眠图像之前重试。键盘似乎总是在第二次尝试时工作,但这可能只是因为故障率低。在倒计时期间插入外部键盘无法挽救内置键盘,外部键盘也无法工作。
此外,有时我的tint2
面板会在启动时出现,但通常不会。如果从休眠映像恢复,tint2 面板始终会出现(因为它在休眠之前一直在运行)。当 tint2 未显示在 GUI 上时,top
DOES 会显示tint2
正在运行,但必须位于我的桌面下。
自从我拥有这个系统以来,交换分区已经“消失”了三次,并且其中的条目/etc/fstab
具有mtab
无效或未注册的识别 UUID 代码。
最后的问题/请求帮助
那么我该如何诊断/修复休眠(和挂起?)问题?有没有办法在休眠之前将所有打开的文件句柄刷新到磁盘,因为当休眠失败时,我保存到磁盘的最后几个项目在 ext4 fs 中并不完整(我相信是在 LVM 中)。磁盘/bios 使用 gpt 分区表和 efi。我的键盘没有sysreq
列出按键(甚至没有作为Fn
按键选项),所以我不能使用助记符alt sysreq r e i s u b
,如果一开始就建议这样做的话。