Archlinux on ThinkPad L430
计算机 arch linux systemd XFCE 优化 笔记本 软件 电源管理
甲、前言 出于特殊需求,花将近3000买了这个 ThinkPad L430。 一、配置 CPU:Intel Pentium B980 @ 2.40GHz #Sandy Bridge 的,主频还可以 显卡:HD 3000 核显 + Quadro NVS 5400M 独显 #奇葩的型号,好像是啥绘图卡,感觉和610M水准差不多 内存:2GB #跑Win7HB和Linux足矣 硬盘:320GB HDD 14吋屏幕、DVD刻录机、有摄像头、没指纹识别、预装Win7HB 二、吐槽 指纹识别呢?我一直觉得 ThinkPad 这个很厉害,结果发现便宜货上没有…… 第一天就发现光驱是坏的,送回去修了,略郁闷。 Win7 预装了一坨联想的东西,还有啥QQ电脑管家,去死吧…… 乙、正文 一、安装 没啥特别的,按照 Archwiki 走即可。无线有线都能用。 注意要是之前在 Windows 用 Fn+F5 关闭了无线,必须在 Windows 打开才能用。后面还会提到这个问题。 二、硬件驱动 显卡 还是用 bumblebee + bbswitch 处理 NVIDIA + Intel 的双显卡问题,资料自己看 wiki 吧。 至于双显示器,我测试了是没问题的。禁用N卡的情况下无法用 nvidia-xconfig 配置 TwinView,而Xfce自带那个又特别简陋。推荐使用 arandr 配置,挺好使的: 触摸板 很普通的型号,安装 xf86-input-synaptics 即可。 键盘 音量调节、静音在 Xfce 下工作正常。 Fn+F3 大概是锁屏,我没用过,Xfce 貌似没锁屏的工具。 Fn+F4 是休眠键,Xfce 下无需配置即可使用。可在电源管理器中配置具体行为。 Fn+F5 是无线开关,可以用于软件禁用无线。相关的一个 bug 见上文。 Fn+F6/7 是屏幕亮度调节,Xfce 下无需配置即可正常使用。 Fn+F8 是显示器切换,Xfce 下使用会弹出一个简单的显示设置,正常。 大写锁定没有屏显,不过自己配置一下应该也不难。 剩下的Fn组合,我准备随便绑定些特殊功能 指点杆(小红点) 参考:http://crunchbang.org/forums/viewtopic.php?pid=284647#p284647 指点杆有点小问题,不配置的话用不了。 创建 /etc/modprobe.d/trackpoint-elantech.conf,内容: options psmouse proto=bare 重新载入 psmouse 模块或重启即可。 无线网卡 开箱即用,Fn+F5 可以软件关闭 wifi。 但有个bug:Windows 下禁用 wifi 后, Linux 下无法唤醒,rfkill 显示已通过硬件开关禁用。目前没找到解决方案,所以轻易不要卸载预装的 Windows。 我在英文论坛发了个帖子,至今无回复,求挽尊…… 以太网卡 型号是 Realtek RTL8111/8168B。内核里有兼容的 r8169 的驱动。但 wiki 建议用Realtek官方提供的 r8168 驱动,仓库里有。 摄像头 开箱即用,可以安装 cheese 自己试试,打开 cheese 后摄像头旁就会有个灯亮,表示正常工作。 三、电源管理 Linux 下电源管理工具繁多,功能多有重叠。而 Arch 刚全面切换 systemd,很多文档跟不上,只能摸索着走,让人头大。 ACPI 事件处理 概览 所谓 ACPI 事件,就是使用电源键、开合笔记本盖、切换AC电源等和电源有关的事件。 systemd 能处理部分 ACPI 事件,包括按下开机键、使用睡眠/待机键、开合笔记本盖等。但不能处理电池、电源事件。 acpid 能处理各种 ACPI 事件,以前 sysvinit 时代几乎是必装的。 主流桌面环境(Gnome/KDE/Xfce等)有自己的电源管理,能处理各种 ACPI 事件、监视电池状态等。 软件选择 systemd 的处理机制对于 tty 用户一般足用,反正命令行下貌似也不用考虑屏幕亮度。电池/电源切换时,使用其他工具改变性能策略即可,详见后文。 acpid 删除了貌似也没啥事儿,而且说是会和 systemd 啥的冲突,就别装了。 我是“普通用户”,没理由不选择桌面环境自带的 GUI 的电源管理器。据 Archwiki,GNOME、KDE 的电源管理会在运行时自动取代 systemd 的,不会 冲突。但我用的是 Xfce,需要考虑冲突问题。 解决 Xfce 电源管理和 systemd 的冲突 参考:ArchWiki 用 /etc/systemd/logind.conf 配置 systemd 的 ACPI 事件处理方式: #HandlePowerKey=poweroff #按下开机键或等价的组合键——关机 #HandleSuspendKey=suspend #按下待机键或等价的组合键——待机 #HandleHibernateKey=hibernate #按下休眠键或等价的组合键——休眠 #HandleLidSwitch=suspend #合上笔记本盖——待机 #PowerKeyIgnoreInhibited=no #最后四行:“放权”后是否仍处理该事件 #SuspendKeyIgnoreInhibited=no #HibernateKeyIgnoreInhibited=no #LidSwitchIgnoreInhibited=yes 把四种事件的处理方式都设置为 ignore,这样 systemd 就不会处理相关事件了,也就不会与桌面环境自带的电源管理器冲突。 但我采取了另一种方法。Archwiki 上提到 GNOME、KDE 会通过发送 inhibited 指令暂时关闭 systemd 的处理机制,我就 man 了一把,发现了 systemd-inhibit 这个命令,可以让 systemd 在运行某个程序时不处理 ACPI 事件。 在 Xfce 启动项中创建新启动项,命令为: systemd-inhibit xfce4-power-manager --no-daemon 禁用自带“电源管理器”启动项即可。(简单起见,也可以在 .xinitrc 直接用 exec systemd-inhibit xfce4-session 启动 Xfce。) 性能策略 概览 所谓“性能策略”,就是在切换电池/电源时,自动切换低功耗/高性能模式。具体调节内容包括:CPU频率、硬盘转速、屏幕亮度等等。处理的工具也有很多,且功能多有重叠。 首先,内核自身就能完成一部分。最新内核的默认CPU性能策略是 ondmand,即根据CPU使用率动态降频。另外还有 laptop mode 的设置,可以减少系统的硬盘操作。 Arch 源里提供了 Laptop Mode Tools 这个工具。可以在开机或电源切换时自动完成CPU、硬盘、光驱、网卡等设备的性能策略的切换。是个大综合工具。 AUR 里的 TLP 和 Laptop Mode Tools 功能差不多,安装一个即可。 桌面环境的电源管理也能处理一部分,包括空闲时降低屏幕亮度、关闭显示屏等。 解决方案 Laptop Mode Tools 配置好麻烦,而且还依赖 acpid,所以弃了改用 TLP。TLP 的配置文件(/etc/default/tlp)各项都挺好懂的,绝大多数配置用默认的即可。如果想设置无线设备节能策略,还需要安装 tlp-rdw,这样配置文件最后一部分就能起效了。具体参见 Archwiki。 CPU性能策略让 TLP 切换即可,然后留一个 cpupower,方便手动调节。 显示器嘛,让桌面环境处理挺好的。唯一的瑕疵是Xfce没锁屏工具。 解决方案 —— 小心硬盘 硬盘有个大坑,就是传说中的 Load_Cycle_Count 问题。据说到了几十万硬盘就会挂。我观察了一下,果然默认设置下 Linux 下这玩意儿增长的很快。 物理特征是:过一段时间机器会变得好像一点声音都没有(其实是硬盘停转了),然后突然发出细微的“吱~”音,此时 Load_Cycle_Count 增长1下。 虽然我觉得没声音的那会儿感觉特棒,但为了硬盘寿命还是悠着点儿吧。解决方法是调节硬盘 APM 级别,这个也可以由 TLP 完成。经我的实验,我把 TLP 配置里的硬盘 APM 级别配置为: DISK_APM_LEVEL_ON_AC="230" DISK_APM_LEVEL_ON_BAT="115" 其中,数值 1~127 会触发硬盘自动停转,127 以上则不会(但貌似 Load_Cycle_Count 还是会增长)。电池供电时用 115 其实还是增长得比较快,但考虑到一般还是用 AC,所以不会有太大风险吧,算是节能与寿命的折中。 BTW,知道 Windows 下为何没这个 Load_Cycle_Count 的问题吗?因为 Windows 貌似会一直读硬盘,根本不会触发节能…… 待机与休眠 待机/休眠应该算是开箱即用的了,Network Manager 会自动断线和重连。待机问题不大,但休眠还是有不少问题,我遇到的有: 睡不过去,只能强关 —— 偶尔 醒不过来,那就扔了副本直接启动吧 —— 偶尔 醒过来了是黑屏,必须切 tty 再切回来才行 —— 每次都是 醒来后 TLP 状态不对 —— 每次都是 算的上解决的只有最后一个。方法是,建立一个睡眠唤醒时执行的重置TLP的脚本,放到 /lib/systemd/system-sleep/tlp.sh ,内容为: #!/bin/sh case $1 in post) /usr/sbin/tlp start ;; esac exit 0 = = 唉,头两个问题摸不着规律,管不了。第三个不知从何下手。 丙、后记 诶,过完春节才想起来我还有个 Blog…… 本文补完。 现在发觉2G内存确实有点小,虽然一般看个网页用不完,但要同时打 Minecraft 同时看网页教程…… 目前这个本本运行得还是不错滴。如果成功无故障运行三个月,我就去亚马逊给评一下。
Page created on 2013-01-29