笔记本上使用Archlinux来自: http://arithboy.org/wiki/gnu/arch/Laptop.html

近日购得二手笔记本一台,在其上运行linux的一些设置记录如下: 型号为 <nop>ThinkPad T30

tp 上功能键的使用

我的.xmodmaprc

keycode 227 = F30
keycode 234 = F19
keycode 233 = F20
keycode 77 = Num_Lock

remove Lock = Caps_Lock
remove Control = Control_L
remove Mod4 = Hyper_L
keycode 227 = Caps_Lock
keysym Control_L = Hyper_L
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
add Mod4 = Hyper_L以上把两个翻页键设为F19和F20,把Fn设为F30,使shift+scrlk正常工作.<br> 把caps lock键用于ctrl键,左ctrl键用于窗口管理器.Fn用于大小写切换.<br> Fn做窗口管理器的modifier我没成功,可能主板?已经截获掉好多组合键了 Contents
网络环境的配置 laptop-mode的配置 设置笔记本的待机 cpu自动降频 监测硬盘,cpu,电池等 thinkpad笔记本的热键设置 DPMS的使用
top 网络环境的配置首先添加udev规则,解决两个网卡的顺序问题.<BR> 编辑/etc/udev/rules.d/10-network.rulesSUBSYSTEM=="net", SYSFS{address}=="00:02:8a:47:f4:a5", NAME="wlan0"
SUBSYSTEM=="net", SYSFS{address}=="00:09:6b:06:a5:b4", NAME="lan0"

笔记本上经常移动,需要多套网络的配置.<BR> 编辑rc.conf

...
HOSTNAME="localhost"
lo="lo 127.0.0.1"
INTERFACES=(lo)
NET_PROFILES=(menu)
...将NET_PROFILES=(menu)打开,在/etc/network-profiles/中添加配置文件.

例如文件/etc/network-profiles/20-home

DESCRIPTION="home"
INTERFACE=lan0
HOSTNAME=localhost
IFOPTS="219.242.113.92 netmask 255.255.255.0 broadcast 219.242.113.255 hw ether 00132051A785"
GATEWAY=219.242.113.1
DNS1=202.112.144.30使用sudo /etc/rc.d/network restart则可更改网络设置,/etc/resolv.conf的值会被更新.<BR> 当有多个配置时,文件名以字典序排列,数字开头则比较方便,数字最小的为默认网络配置. top laptop-mode的配置

安装 laptop-mode-tools 软件包.

编辑文件/etc/laptop-mode/laptop-mode.conf 默认设置已经能够满足需要了,只要把CONTROL_开头的打开即可, 里面包含了硬盘,cpu等多方面的设置,能极大延长电池的使用时间, 推荐使用.

top 设置笔记本的待机

安装acpid,机器待机时,背光仍然打开,主要是使用radeon的显卡可能会有这个问题. 详细的描述见1,使用radeontool解决该问题,脚本2如下:

#!/bin/sh

# if launched through a lid event and lid is open, do nothing
echo "$1" | grep "button/lid" && grep -q open /proc/acpi/button/lid/LID/state && exit 0

# remove USB 1.1 driver
rmmod uhci_hcd

# sync filesystem and clock
sync
/sbin/hwclock --systohc

# switch to console
FGCONSOLE=`fgconsole`
chvt 6
/usr/sbin/radeontool light off

# go to sleep
sleep 5 && echo -n "mem" > /sys/power/state

# readjust the clock (it might be off a bit after suspend)
/sbin/hwclock --adjust
/sbin/hwclock --hctosys

# reload USB 1.1 driver
modprobe uhci_hcd

# turn on the backlight and switch back to X
radeontool light on
chvt $FGCONSOLE将脚本保存在/etc/acpi/actions/sleep.sh,并chmod +x sleep.sh

修改/etc/acpi/handler.sh 按下sleep按键时(我这里是Fn+F4)执行sleep.sh,进入待机

...
button/sleep)
case "$2" in
SLPB) #echo -n mem >/sys/power/state ;;
/etc/acpi/actions/sleep.sh;;#注释掉上句,添加这句
...合上屏幕时,待机...
button/lid)
#echo "LID switched!">/dev/tty5
/etc/acpi/actions/sleep.sh #添加这句
;;
...修改脚本以后,重起服务即可生效./etc/rc.d/acpid restart

有个问题就是待机时usb口仍然供电,在windows下则无此现象.

top cpu自动降频查找所需要的模块modprobe -l |grep cpufreq
/lib/modules/2.6.17-ARCH/kernel/drivers/cpufreq/cpufreq_powersave.ko
/lib/modules/2.6.17-ARCH/kernel/drivers/cpufreq/cpufreq_stats.ko
/lib/modules/2.6.17-ARCH/kernel/drivers/cpufreq/cpufreq_userspace.ko
/lib/modules/2.6.17-ARCH/kernel/drivers/cpufreq/cpufreq_ondemand.ko
/lib/modules/2.6.17-ARCH/kernel/drivers/cpufreq/cpufreq_conservative.ko
/lib/modules/2.6.17-ARCH/kernel/drivers/cpufreq/freq_table.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/longrun.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/powernow-k8.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/powernow-k7.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/powernow-k6.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-smi.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-lib.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-ich.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/p4-clockmod.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/cpufreq-nforce2.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/gx-suspmod.ko
/lib/modules/2.6.17-ARCH/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.ko我的cpu是P4M1.6GHZ,选择speedstep-ich.ko,同时需要cpufreq governors: 我这里显示有5个可以选择 userspace, powersave, ondemand, conservative, perform ance.

cpu降频的软件包有cpufreqd和cpufrequtils,后来发现laptop-mode-tools里面直接可以控制cpu频率和throttling.推荐使用这个.

需要在rc.conf中添加speedstep-ich和ondemand

top 监测硬盘,cpu,电池等arch中监测支持smart硬盘温度软件有smartmontools和hddtemp,第一个监测的功能很多,我们使用第二个,[arch@localhost proc]$ sudo hddtemp -n /dev/hda
51

监测cpu频率,温度,电池等. 这些信息都在/proc/acpi中,一般窗口管理器里面自带脚本/插件都可以监测,若没用的话,使用某个脚本语言,用正则表达式抓取数据也是很容易的. conky可以将数据输出到桌面.

这里有一个ion下检测系统信息的脚本

top thinkpad笔记本的热键设置主要使用 ibm_acpi模块,其它品牌笔记本不适用.<BR> 添加ibm_acpi到rc.conf中的MODULES,在/etc/modprobe.conf 添加options ibm_acpi hotkey=enable,0xffff experimental=1指定加载模块时的参数,hotkey=enable,0xffff指明使用尽可能多的快捷键,experimental=1打开一些在测试中的功能,如控 制cpu风扇等,启用hotkey功能后,Fn+F4组合键将不产生sleep的acpi的事件,而是ibm/hotkey事件.

这样运行 acpi_listen后,可以监测Fn+F1-F12中那些组合产生acpi的事件,我这里是 F3,F4,F7,F8,F12.我将F3设置为开关屏幕,F4为待机,F7为切换显示器,F8为关闭bay(用来热拔插光驱或第2块电池),F12设置为关机.

我们使用radeontool来切换,它没有监测lcd状态的功能,可以使用脚本来简单判断lcd的状态.

/etc/acpi/actions/lcd_switch.sh

#!/bin/sh

flag=/tmp/thinkpad_lcd_off

if [ -e $flag ]; then
/usr/sbin/radeontool light on
rm -f $flag
else
/usr/sbin/radeontool light off
> $flag
fi注意要chmod +x lcd_switch.sh

切换显示器使用

echo video_switch > /proc/acpi/ibm/video关闭bay使用echo eject > /proc/acpi/ibm/bay

修改handler.sh

...
ibm/hotkey)
case "$2" in
HKEY)
case "$4" in
00001003) #echo "f3" >/dev/tty5
/etc/acpi/actions/lcd_switch.sh
;;
00001004) #echo "f4" >/dev/tty5
/etc/acpi/actions/sleep.sh
;;
00001007) #echo "f7" >/dev/tty5
echo video_switch > /proc/acpi/ibm/video
;;
00001008) #echo "f8" >/dev/tty5
echo eject > /proc/acpi/ibm/bay
;;
0000100c) #echo "f12" >/dev/tty5
/sbin/halt
;;
esac
;;
*) logger "ibm_acpi undefined:$2";;
esac
;;
...使用tpb可以在屏幕上显示音量等信息,还可以设置thinkpad等热键. top DPMS的使用

修改xorg.conf在Section "Monitor" 中添加 Option "DPMS",在 Section "ServerLayout" 中添加

Option "StandbyTime" "20" # Turn off screen in 20 minutes
Option "SuspendTime" "30" # Full hibernation in 30 minutes
Option "OffTime" "40" # Turn off DPMS monitor使用xset dpms force standby可以立即查看效果.

我这里dpms一直无法使用,将驱动从"versa"换为"radeon"(软件包为 xf86-video-ati)后dpms正常,使用versa时,使用mplayer播放某些rmvb时,cpu占用率很高,但是画面和声音不同步. mplayer提示"Your system is too SLOW to play this! "使用"radeon"再增加cache的值,可以解决.

xorg.conf部分配置,参考34

Section "Device"
Identifier "Card0"
Driver "radeon"
Option "AGPMode" "4"
Option "EnablePageFlip" "on"
Option "Ahod" "EXA"

Option "AGPFastWrite" "yes"
Option "ColorTiling" "on"
Option "RenderA" "on"
#Option "OverlayOnCRTC1" "on"
#Option "OverlayOnCRTC2" "on"
# enable (partial) PowerPlay features
Option "DynamicClocks" "on"
# use bios hot keys on thinkpad (aka fn+f7)
Option "BIOSHotkeys" "on"
# enable radeon specific xinerama
#Option "MergedFB" "true"
#Option "CRT2Position" "RightOf"
#Option "CRT2Hsync" "50-75"
#Option "CRT2VRefresh" "30-82"
#Option "MetaModes" "1024x768-1024x768"
#Option "MergedNonRectangular" "true"
#BusID "PCI:1:0:0"
EndSectionmplayer -cache 16000 abc.rmvb radeontool的PKGBUILDpkgname=radeontool
pkgver=1.5
pkgrel=2
pkgdesc=
url="http://fdd.com/software/radeon/"
license=GPL
depends=('pciutils')
makedepends=()
backup=()
source=( http://fdd.com/software/radeon/$pkgname-$pkgver.tar.gz)
md5sums=(8065eebe5a2b163e43b40461bfe49a56)

build() {
cd $startdir/src/$pkgname-$pkgver
make || return 1
mkdir -p $startdir/pkg/usr/sbin
cp $pkgname $startdir/pkg/usr/sbin
}

1. http://www.thinkwiki.org/wiki/How_to_configure_acpid<br />

2. http://www.thinkwiki.org/wiki/How_to_configure_acpid#Action_Script<br />

3. http://dri.freedesktop.org/wiki/ATIRadeon<br />

4. http://thinkwiki.org/wiki/Additional_options_for_the_radeon_driver