Ant-Veil

Caspar Blog

重新装回 Gentoo

| Comments

最近到手 T410,先是折腾了几天把里面的正版 Win7 Pro 通过无损分区移到角落里,然后是装了个 RHEL6.0 用来做测试,最后重新开始折腾 Gentoo。

这次没有纠结于选择哪个桌面环境上,我一点也不嫌弃 GNOME 的臃肿,于是装了个 gnome-light。USE Flag 把以前用过的拿过来修改了一下,顺便提一句,在我不用 Gentoo 的这段时间听说 hal 被干掉了,所以我也追风把 hal 标记给去掉了。

启动的时候使用 grub2,本来打了 915resolution 补丁来使 grub 宽屏显示,但是打的补丁和 grub-1.98 似乎不是特别搭配,导致启动 grub 前后各有 5 秒停滞时间,加上 grub 启动过后仍然会有一个分辨率只有 640x480 的屏幕,我干脆就不用 915resolution 补丁了。使用 grub2,配上 ext4 分区,就可以不使用 initramfs 了,关键在两点,一是内核中 ACHI 选项要编译进内核,二是 kernel 行参数中不要使用 UUID。

说一下一些 Thinkpad 相关的配置:

一是声卡驱动。Thinkpad T410 的声卡应该是 CONEXANT 的,但是选择这个驱动后内核还是不认我的声卡。最后只好选择了通用驱动。

二是 hdaps,所谓的硬盘防震保护系统。portage 里面相关的三个包,一个是 hdaps 模块,一个是 GNOME 的 Applet,还有一个是 OpenGL 绘制的小程序,用来展示你的笔记本目前的水平状态。

三是 Thinkpad 相关的快捷键。目前键盘上展示的快捷键基本上都能用,除了 Fn+F6 的“摄像头、耳机”、Fn+F8 的“触摸板、小红点切换”还有麦克风静音三个按钮不能工作。根据 Thinkwiki 的这里说,Fn+F8 可以通过 thinkpad-acpi 或者 tps 使之工作,其他两个目前还没办法。不过我连 Fn+F8 都没搞定,只是自己写了个脚本,用来切换触摸板的开关(用小红点的时候肯定很讨厌触摸板开着):

#!/bin/bash

status=`synclient -l | grep TouchpadOff | awk '{print $3}'`
if [ $status -eq 0 ]
then
synclient TouchpadOff=1
notify-send "Touchpad is disabled!"
elif [ $status -eq 1 ]
then
synclient TouchpadOff=0
notify-send "Touchpad is enabled"
fi 把它保存为脚本,加上 x 权限,通过 GNOME 的键盘快捷键来控制,比如 Win+Space。

另外我给蓝牙设置了一个快捷键。笔记本上那个蓝色的 ThinkVantage 按钮没用到,就把它绑定了一个 ACPI 事件,设置为给蓝牙控制开关。事件代码如下:

event=ibm/hotkey HKEY 00000080 00001018
action=/home/caspar/.local/bin/bluetooth.sh

上述代码保存为 ACPI 事件文件,如/etc/acpi/events/bluetooth。快捷键对应的 KEY CODE 可以到 Thinkwiki 上面去找,也可以看内核的:Documentation/laptop/thinkpad-acpi.txt 文档。至于用于控制的 bluetooth.sh 脚本,则如下(代码来源仍旧是 ThinkWiki,看这里):

#!/bin/bash

NAME="tpacpi_bluetooth_sw"

find_by_name() {
    NAME="$1"
    test -z "${NAME}" && return 1
    SYSFS_NAME=$(find -P /sys -name name -path "*/rfkill/*" -exec grep -l "${NAME}" \{\} + | head -n 1)
    if [[ ! -z "${SYSFS_NAME}" && -r "${SYSFS_NAME/%name/state}" ]]; then
        RESULT=${SYSFS_NAME%%/name}
        echo $RESULT
        return 0
    fi
    return 1
}

SYSFS="$(find_by_name "${NAME}")"

if [[ ! -z "${SYSFS}" && -r "${SYSFS}/state" ]]; then
    case "$(cat "${SYSFS}/state")" in
        0)
            echo 1 > "${SYSFS}/state"
            ;;
        1)
            echo 0 > "${SYSFS}/state"
            ;;
    esac
fi

重启 ACPI 服务就可以看到蓝牙可以被 ThinkVantage 按钮控制了。

目前还不能工作的设备有:指纹识别器,从 lshw 中看到似乎还有 HECI 控制器(Intel 似乎不想管这个咚咚了?)、温度检测设备(Thermal Subsystem)和一个 Ricoh 的外围设备。

最后向使用 Thinkpad 的同学严重推荐ThinkWiki

P.S. 设置充电阈值:据说如果电池不怎么经常使用的话,充电不充满有利于延长电池寿命(Win7 下的配套软件是这么说的),所以可以设置一个充电阈值,把下面命令放到/etc/conf.d/local.start 去:

echo 95 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh

Comments