我刚刚将 Ubuntu 11.10 升级到 12.04。我在新的 12.04 中遇到了休眠问题。
我运行以下命令
sudo pm-hibernate
但我的系统没有休眠,即我的系统没有关闭;相反,屏幕只是闪烁几秒钟并恢复之前的状态。
我该如何修复此问题并在我的系统上启用休眠模式?
答案1
您的硬件配置中存在与内核休眠方法不兼容的问题。不幸的是,除非故障排除人员恰好拥有非常相似的系统,否则这个问题很难解决。
- TuxOnIce(维基百科|主页)是内核内置休眠技术的替代方案,旨在兼容更广泛的硬件,更加可靠、灵活。
- 它很容易安装,如果它不适合您,也很容易删除。
它确实需要安装TuxOnIce 的自定义内核,但下面的说明应该会让它变得简单。如果你以前从未打开过终端,你现在可能想要打开它 :-)
0. 要求
唯一的要求是TuxOnIce你的交换分区是至少和您拥有的内存 (RAM) 数量一样大。您可以通过以下方式检查:
使用 ++Ctrl启动终端AltT
键入
free -m
,你应该看到类似这样的内容:已使用的、可用的、缓存的共享缓冲区总数 内存:1024 731 260 0 0 190 -/+ 缓冲区/缓存:540 451 交换:1536 6 1530
后面的数字
Swap:
(例如 1536)应该是更多的比后面的数字大Mem:
(例如 1024)如果不是这种情况,并且您的掉期是更小比你的内存,你必须调整并增加交换分区的大小,或配置TuxOnIce使用特殊交换文件。这超出了本回答的范围,但如果您提出其他问题并在评论中提及,我将回答并解释如何操作。
1. 安装 TuxOnIce 内核
使用 ++Ctrl启动终端AltT
- 将以下内容复制并粘贴到终端中。这将添加TuxOnIcePPA 并安装自定义内核和标头。
sudo apt-add-repository ppa:tuxonice/ppa -y
一旦添加了 ppa:sudo apt-get 更新 sudo apt-get 安装 tuxonice-userui linux-generic-tuxonice -y sudo apt-get 安装 linux-headers-generic-tuxonice -y
- 现在重新启动。
Ubuntu 现在应该启动TuxOnIce内核。如果有任何问题,请Shift在启动时按住 ,您将获得 Grub 菜单。使用箭头键转到
Previous Linux Versions
,按回车键,然后再次按回车键返回到正在运行的内核。2. 测试休眠功能。
打开一些您通常使用的应用程序,例如 Firefox、Thunderbird、LibreOffice 等。
- Ctrl使用+ Alt+再次打开终端T。
- 输入
sudo pm-hibernate
,按回车键,输入您的密码。 您应该会看到一秒钟的锁定屏幕,然后看到 TuxOnIce 休眠进度屏幕,如下所示:
- 如果TuxOnIce工作后,您的计算机将会关闭。
- 重新启动它,然后等待。TuxOnIce 应该从您休眠的点恢复,包括您在打开的位置打开的所有窗口。
如果所有这一切有效,请转到步骤 3,您可以从仪表板启用 Hibernate。
3. 从仪表板启用休眠模式
按Alt+ F2,输入以下内容,然后按回车键:
gksudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
粘贴以下内容,按Ctrl+S保存并按Ctrl+Q退出编辑器:
[默认重新启用休眠模式] 身份=unix-用户:* 操作=org.freedesktop.upower.hibernate 结果活动=是
重新启动,你应该看到休眠选项如下图所示:
4. 删除 TuxOnIce
如果 TuxOnIce 不适合您,或者您只是希望删除它,请启动终端并输入:
sudo apt-get 删除 tuxonice-userui linux-generic-tuxonice linux-headers-generic-tuxonice -y
并记得使用以下命令禁用菜单中的休眠选项:
sudo rm /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
然后重新启动。
答案2
这对我有用。在控制台运行:
sudo apt-get install uswsusp
然后您可以尝试使用以下命令暂停计算机:
sudo s2ram
或休眠
sudo s2disk
如果这对您有用,那么只需重新启动,您稍后就可以从常用按钮(在 Unity 桌面右上角并选择休眠)进入休眠状态。
我制作了一个简短的教程,介绍了这个问题以及 Dell XPS 13 Developer Edition 的其他问题这里。
答案3
我以前遇到过这个问题。如果你的交换分区小于休眠时想要存储在硬盘中的内存量,你可能会遇到这个问题。
您可以重新调整交换分区的大小,或者使用交换文件(如果您没有可用空间来重新调整交换分区的大小,这会容易得多)。
具体操作如下:
打开终端窗口(按Ctrl++或Alt选择T应用 > 配件 > 终端)或者使用 ssh 客户端登录远程服务器。
创建存储文件
输入以下命令来创建 512MB 交换文件(1024 * 512MB = 524288 块大小):
sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
示例输出:
524288+0 records in 524288+0 records out 536870912 bytes (537 MB) copied, 3.23347 s, 166 MB/s
if=/dev/zero
表示从 /dev/zero 文件读取。/dev/zero
是一个特殊的文件,它提供空字符来构建一个名为的存储文件/swapfile1
。of=/swapfile1
表示将存储文件写入/swapfile1
。bs=1024
表示每次读写1024 BYTES字节。count=524288
表示仅复制 523288 BLOCKS 输入块。
安全交换文件
出于安全原因,请输入以下命令设置正确的文件权限:
sudo chmod 0600 /swapfile1
一个世界可读的交换文件是一个巨大的本地漏洞。上述命令确保只有 root 用户可以读取和写入该文件。
设置 Linux 交换区域
键入以下命令在文件中设置 Linux 交换区域:
sudo mkswap /swapfile1
示例输出:
Setting up swapspace version 1, size = 524284 KiB no label, UUID=0e5e7c60-bbba-4089-a76c-2bb29c0f0839
启用交换文件
最后,要
/swapfile1
立即激活交换空间,请输入:sudo swapon /swapfile1
更新
/etc/fstab
文件 要/swapfile1
在 Linux 系统重启后激活,请向文件添加一个条目/etc/fstab
。使用文本编辑器(如 vi)打开此文件:sudo vi /etc/fstab
添加以下行:
/swapfile1 none swap sw 0 0
保存并关闭文件。下次重启后 Linux 启动时,它会自动启用新的交换文件。
我如何验证交换是否已激活?
只需使用以下
free
命令:free -m
以下是我获取本教程的链接:添加交换文件
答案4
据我所知,这在 12.04 中不起作用。不知何故他们没有包括休眠支持,因为它在某些机器上有点问题。