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