升级后的Ubuntu 16.04有时无法进入睡眠状态。

我将我的系统从15.10(Ubuntu + xfce = XUbuntu)升级到16.04,之后有50%的情况是当我通过“开始菜单>关闭>睡眠”将系统置于睡眠状态时,屏幕变黑但硬件仍在运行(我听到风扇转动)。我无法切换到控制台(ctrl + alt + f2)或进行其他任何操作。我正在寻找解决这个问题的方法。我在以下日志中没有找到任何信息:

/var/log/syslog.1

May  1 01:05:01 lampa CRON[7380]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
May  1 01:14:27 lampa NetworkManager[884]: <info>  [1462058067.4749] manager: sleep requested (sleeping: no  enabled: yes)
May  1 01:14:27 lampa NetworkManager[884]: <info>  [1462058067.4749] manager: sleeping...
May  1 01:14:27 lampa whoopsie[796]: [01:14:27] offline
May  1 01:14:27 lampa NetworkManager[884]: <info>  [1462058067.4750] manager: NetworkManager state is now ASLEEP
May  1 01:14:27 lampa systemd[1]: Reached target Sleep.
May  1 01:14:27 lampa systemd[1]: Starting Suspend...
May  1 01:14:27 lampa systemd-sleep[7497]: Failed to connect to non-global ctrl_ifname: (nil)  error: No such file or directory
May  1 01:14:27 lampa systemd-sleep[7499]: /lib/systemd/system-sleep/wpasupplicant failed with error code 255.
May  1 01:14:27 lampa systemd-sleep[7497]: Suspending system...

/var/log/pm-suspend.log.1

最后一行太旧了,来自:Tue Apr 26 19:44:13 CEST 2016:已完成。文件 'pm-suspend.log' 是空的。

/var/log/kern.log

...
Apr 30 21:26:34 lampa kernel: [ 8420.249061] Key type cifs.idmap registered
May  1 01:14:27 lampa NetworkManager[884]: <info>  [1462058067.4749] manager: sleep requested (sleeping: no  enabled: yes)
May  1 01:14:27 lampa NetworkManager[884]: <info>  [1462058067.4749] manager: sleeping...
May  1 01:14:27 lampa NetworkManager[884]: <info>  [1462058067.4750] manager: NetworkManager state is now ASLEEP
May  1 08:01:21 lampa kernel: [    0.000000] Initializing cgroup subsys cpuset
...

我在寻找Xorg日志,但我不知道哪些日志行属于此时刻。当我按文件日期查看它(文件Xorg.0.log和Xorg.0.log.old),这些文件都很短且没有错误,它们以以下内容结尾:
[    11.084] (II) This device may have been added with another device file.
[    12.912] (II) RADEON(0): Allocate new frame buffer 2048x768 stride 2048
[    12.912] (II) RADEON(0): VRAM usage limit set to 931309K
[  1258.032] (II) AIGLX: Suspending AIGLX clients for VT switch
[  1259.227] (II) AIGLX: Resuming AIGLX clients after VT switch

并且

[    10.176] (II) RADEON(0): Allocate new frame buffer 2048x768 stride 2048
[    10.176] (II) RADEON(0): VRAM usage limit set to 931309K

dmesg

我找不到系统中的dmesg.0,我只看到'dmesg',而且是空的。

接下来应该去哪里找?

编辑: 我发现这只发生在我运行“wine模拟器与战网游戏星际争霸2”之后。我尝试终止所有在玩游戏后生成并保留的进程。我想知道是否我的显卡没有切换到某种无法休眠的模式。

4个回答

我仍然有这个问题,但已经尝试了许多可能的解决方法。问题的本质是挂起作业失败,卡住了。
我已经尝试过逐行查看内核日志(fishing through kernel logs line by line),但仍然不确定是什么原因导致的。我以为问题出在视频上,但现在怀疑是网络和/或USB-C支持的问题。
当挂起失败时,重新登录,打开终端。如果在ps aux输出中看到像这样的内容,则处于相同的情况。
$ ps aux | grep sus
root     22926  0.0  0.0   8668   840 ?        Ss   23:07   0:00 /lib/systemd/systemd-sleep suspend

那个任务,22926,可以被终止,这将导致电脑立即暂停。
$ sudo kill -9 22926

这周,我找到了一个相当不错的方法来避免这个问题。创建一个像这样的脚本文件:
sudo /etc/init.d/network-manager stop
sudo /etc/init.d/networking stop
sudo systemctl suspend

对我来说,这样可以减少暂停时的延迟,并且从未失败过。
重新启动后,请记得手动重新启动网络。
sudo /etc/init.d/network-manager stop
sudo /etc/init.d/networking stop
sudo /etc/init.d/networking start
sudo /etc/init.d/network-manager start

这再次告诉网络关闭,仅供娱乐,并重新启动。

这是一个高级解决方案。我一直在处理细节上的改变,但没有任何一个像这个那样有效。

另一个有趣的线程是硬件设备出现故障导致虚假唤醒。我尝试过了,但没有好处。如果这是真正的问题,我认为挂起作业不会仍然失败。

很多人都遇到了同样的问题,似乎可能有很多原因。查看this Ask Ubuntu搜索。以下是我的一些收藏:


你用的是哪个版本的内核?(你可以通过“uname -a”命令找到),也许你还遇到了4.4.0-21的bug? - MiroJanosik
几个月过去了,我还是有这个问题,尝试了各种内核... Linux delllap-16 4.8.0-32-generic #34-Ubuntu SMP Tue Dec 13 14:30:43 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux - pauljohn32
难以相信你付出了如此长时间的研究努力却没有得到任何点赞。+1,干得好! - WinEunuuchs2Unix

你可能遇到了这个bug
要解决问题,尝试安装一个新的内核。

Commands for 64 bit system:

cd /tmp

wget \
kernel.ubuntu.com/~kernel-ppa/mainline/v4.5.2-wily/linux-headers-4.5.2-040502_4.5.2-040502.201604200335_all.deb \
kernel.ubuntu.com/~kernel-ppa/mainline/v4.5.2-wily/linux-headers-4.5.2-040502-generic_4.5.2-040502.201604200335_amd64.deb \
kernel.ubuntu.com/~kernel-ppa/mainline/v4.5.2-wily/linux-image-4.5.2-040502-generic_4.5.2-040502.201604200335_amd64.deb

sudo dpkg -i linux-headers-4.5*.deb linux-image-4.5*.deb

来源: Padraig Galvin,错误报告评论#26


没错。我有核心版本4.4.0-21。通过重新启动到较旧的可用核心(在我的情况下是“4.2.0-30”)来解决问题。 - MiroJanosik

我有同样的问题。

Sep 26 17:26:15 pavel-kjsdfk systemd-sleep[8022]: Failed to connect to non-global ctrl_ifname: (nil)  error: No such file or directory
Sep 26 17:26:15 pavel-kjsdfk systemd-sleep[8023]: /lib/systemd/system-sleep/wpasupplicant failed with error code 255.

所以,我整天在寻找解决方案,但是没有任何帮助到我。 然后我找到了一个可疑的解决方案,但它确实起作用!

打开/lib/systemd/system-sleep/wpasupplicant

从文件中删除/sbin/wpa_cliresume,使其如下:

#!/bin/sh
set -e

if [ "$2" = "suspend" ] || [ "$2" = "hybrid-sleep" ]; then
    case "$1" in
        pre) /sbin/wpa_cli suspend ;;
        post) /sbin/wpa_cli resume ;;
    esac
fi

变成:

#!/bin/sh
set -e

if [ "$2" = "suspend" ] || [ "$2" = "hybrid-sleep" ]; then
    case "$1" in
        pre) suspend ;;
        post) ;;
    esac
fi

这对我有用(Xubuntu 16.04):
sudo apt-get remove light-locker
sudo apt-get install xscreensaver

1你能编辑你的回答并详细说明你是如何做到的吗? - storm
1这不会对我有所帮助,因为我已经在使用xscreensaver而不是light-locker。在出现问题之前,我就进行了这个更改。 - MiroJanosik
这个解决了“挂起和恢复循环后我看不到光标”的问题。它不会影响那个出现程序无响应的问题。 - pauljohn32