挂起到底需要什么?以前一直以为要acpi的东西,其实不需要的。挂起的真正方案只有两种,一个是 s2ram,一个是 tuxonice,后者需要对内核打补丁,而前者是纯粹的用户空间程序。
Debian 的 s2ram 在 uswsusp 软件包中。
首先找出你的系统怎样挂起才能正常唤醒。如果仅仅 s2ram 就可以挂起并且能正常醒来的话,那就最好了,但如果你的机器是 unknown,用 s2ram 的话来说你的机器不再白名单之列,那么就需要附加参数以使 s2ram 正常工作。首先你得试试 s2ram -f,如果可行,那就没问题了,如果不行,那就按照下面的命令逐一试验,知道可以为止,这可是一个很伤机器的过程,但愿第一个命令就成功。
s2ram -f -a 3
s2ram -f -a 2
s2ram -f -a 1
s2ram -f -p -m
s2ram -f -p -s
s2ram -f -m
s2ram -f -s
s2ram -f -p
s2ram -f -a 1 -m
s2ram -f -a 1 -s
如果成功了,那么以后挂起就需要增加这些参数。当然这时相当麻烦的,而且直接用 s2ram 来挂起计算机也是很低阶的。
建立于 s2ram 之上
s2ram 很低阶,有许多实用脚本是建立在 s2ram 之上的,这里我们使用 pm-utils, 它可以自行配置。现在你已经知道了 s2ram 需要增加的参数,那么要让 pm-suspend 能正常工作,就需要让 pm-suspend 向 s2ram 传递必要的参数,我们将 pm-utils 的配置写在 /etc/pm/config.d/ 里,文件名随意,比如 config。
我们需要写上 ADD_PARAMETERS=”"
双引号里写要附加的参数,具体那些参数可以用 pm-suspend –help 查看。这些参数对应的是哪个 s2ram 的参数,可以看看 man s2ram,很容易对应起来的。
完后,pm-suspend 也可以正常挂起了。
到目前为止,挂起都还仅先于 root 用户,要让普通用户挂起,我们需要一些图形界面程序,kde 下可以用 kpowersave,gnome 可以用 gnome-power-manager,此外,普通用户还必须是 powerdev 组的成员。在没有其他电源管理脚本的情况下,上面的两个程序都会去调用 pm-utils 的。
这样,挂起的问题就解决了,我们根本不需要 acpi。
这个 amd64 下的内核模块问题以前搞过,忘了。如今升级内核又要重新弄,又被我想起来了,于是决定写下来,以后忘了有地方查,顺便别的朋友也可以参考一下。
Debian amd64 的源里提供了 virtualbox-ose 以及 virtualbox-ose-guest-utils 二进制包,但并没有提供 virtualbox-ose-modules,也就是 VirtualBox OSE 内核模块。没有内核模块 VirtualBox 是无法运行起来的。虽然 Debian 并没有提供 amd64 版的内核模块,但是我们可以自己编译。
我们可以通过 virtualbox-ose-source 来编译内核模块。查看 /usr/share/doc/virtualbox-ose-source/README.Debian,里面说:
The Debian virtualbox-ose-source package can be used in several ways,
– Using module-assistant(1) commands provided by the module-assistant Debian
package:
# module-assistant prepare virtualbox-ose
# module-assistant auto-install virtualbox-ose
– Using the make-kpkg(1) command provided by the kernel-package Debian
package. See the “modules_image” section of the make-kpkg(1) man page.
– Unpacking /usr/src/virtualbox-*.tar.bz2 and installing the module on your own.
上面那一串 E 文是在说 virtualbox-ose-source 有三种使用方法。我们就使用第一种来编译内核模块,因为此种方法最简单。呵呵,方法就是上面那两个命令了,再单独列一下也无妨:
# module-assistant prepare virtualbox-ose
# module-assistant auto-install virtualbox-ose
当然,首先你得先装上 virtualbox-ose。这两条命令过后,会在内核源代码目录生成相应版本的内核模块 deb 包,名字叫 virtualbox-ose-modules-内核版本号_amd64.deb。应该是内核源代码目录,因为我用的是自己编译的内核,我生成的 deb 包在我专门用来存放内核源代码的目录下。如果你用的是源里的内核,到底 deb 包在什么位置我也不知道。不过没关系的,编译好直接就会安装的,所以无须知道 deb 包的具体位置。
要使用 VirtualBox OSE,首先加载内核模块:
,然后就能用了。