我装了一台双CPU的机器,我注意到运行halt或者shutdown指令后,系统不能自动掉电。于是我开始研究,发现由APM电源管理选项在SMP机器上不可靠,所以如果SMP支持被编译到内核中的话,APM对SMP的机器会自动无效。
我阅读了APM核心源文件(arch/i386/kernel/apm.c)的注释, 发现有一种方法解决这个问题。就是启动系统时给内核传入两个参数。
第一步就是确保APM支持被编译到了内核中。我知道大多数发行版缺省就是这样的,但是如果你自己编译内核,请确保打开该选项。APM选项位于"General Setup -> Advanced Power Management BIOS Support." 确保该项是'Y'(编入内核) ,而不是'M'(编译成模块).
现在你在内核中有了APM支持,你需要升级boot loader的配置文件。需要加入的两个选项为apm=on和apm=power-off。如果你使用LILO作为boot loader, 你需要增加一行"append"。实例如下:
image=/vmlinuz
label=linux
root=/dev/hda2
append="apm=on apm=power-off"
别忘了运行/sbin/lilo使改动生效。
如果你使用GRUB作为boot loader,你应该编辑配置文件,例如
title Debian GNU/linux
root (hd0,1)
kernel /vmlinuz apm=on apm=power-off
如果你使用别的boot loader,你需要阅读相关文档,以发现给内核传送参数的方法。