红联首页 凝聚Linux人的力量
菜鸟过关 | 精华文档 | 同城人(交友) | 我与Linux的故事 | Linux新闻 | Linux视频 | Linux人才 | 软件下载 | 大学校园 | English
发新话题
打印

Archlinux 休眠相关问题

Archlinux 休眠相关问题

出自http://navarro.blogbus.com/

今天试了下休眠和挂起,一合上本本的屏幕,结果马上就唧唧唧地报警了几声。打开屏幕一看,系统进到了gdm的登录界面,登录进去,电源管理applet报告休眠出错。

查了查linux休眠的问题,大致如下:Linux里的休眠分几5个等级,具体情况不详述了。在archlinux的gnome里的休眠有两个,一个是suspend,一个是hibernate。 suspend会把所有东西存入RAM然后系统挂起,就是所谓suspend to ram。而hibernate,则是将内存中的信息写入硬盘并且关闭系统电源,即所谓的suspend to disk。

首先怀疑是权限问题,因为电源管理需要root权限的,工具包pm-utils里的几个工具可以控制休眠。尝试用root权限休眠:

sudo pm-suspend

很好很强大,可以正常进入suspend to ram挂起状态,返回系统也正常。

再尝试hibernate休眠到硬盘

sudo pm-hibernate

硬盘转了一阵,然后电源关闭。开机,问题出现了,系统没有进入恢复状态,而是正常启动,并且启动过程中swap分区报错,无法挂载swap分区。这下麻烦了,hibernate是需要写入swap分区的,不处理swap分区问题,后面无法解决hibernate。没办法,只有先解决swap了,尝试手动激活swap分区

sudo mkswap /dev/sda5

sudo swapon -a /dev/sda5

出错,还是无法挂载,google了一下,原来有可能是fstab里UUID的问题,因为硬盘分区表一旦有任何改变(比如调整swap分区位置,改变swap分区大小等等),使用UUID来挂载swap就不能。修改/etc/fstab,将swap分区所在的那一行改为直接用/dev/xxxx的格式:

/dev/sda5               none      swap          sw                 0       0

保存后重启,进入系统后free -m查看是否swap被正确挂载。

OK,swap工作正常。如果没有挂载,再次手动激活应该没有问题。

现在来解决普通用户无权限休眠的问题。根据以前使用其他发行版的经验,系统内应该有个电源管理的组。查了下,archlinux里面,电源管理的组就叫power。把当前用户加入power组:

sudo gpasswd -a raven power

注销raven重新登录,尝试挂起(suspend),一切正常。

休眠(hibernate)牵涉到写入swap和启动时候要从swap区重新读取,需要在grub设置,将/boot/grub/menu.lst里面启动项的位置加入 resume=/dev/sda,比如我的类似:

# (0) Arch Linux
title  Arch Linux
root   (hd0,3)
kernel /boot/vmlinuz26 root=/dev/sda4 resume=/dev/sda5 ro
initrd /boot/kernel26.img

保存后,重启。再次尝试hibernate, 挂起正常,开机恢复正常。

TOP

发新话题