比尔盖子 博客

Thinkpad R61笔记本,Linux Ubuntu 11.04 系统下成功安装 安全气囊技术(APS)驱动和充电阀值驱动

安装APS驱动

目前,在多数IBM笔记本中,都应用了一种叫做 APS(Active Protection System,主动保护系统)的技术 ,而IBM官方有时把这种技术形象的称为 Airbag ,安全气囊

相信不少朋友已经知道这种技术的存在了。神马?你还不知道!好吧,这是一段摘录于互联网的介绍,不想看可以无视:

当笔记本电脑硬盘工作时,硬盘磁头在磁盘上方运动,进行数据读取,当撞击力在持续2毫秒内小于200G时,一般可以靠ThinkPad本本本身的外壳与防震设计来减震,避免对硬盘造成损害。而当撞击力在持续2毫秒内超过200G后,损害将会随着撞击能量的加大而加大。

硬盘处于非工作状态时,磁头处于停止区,硬盘在1毫秒内最大可以承受800G的冲击。当撞击超过800G/1毫秒后,损害将会随着撞击能量的加大 而加大(见图右边的函数图)。也就是说如果可以及时将硬盘磁头归位到停止区,则硬盘可以忍受比在工作状态下更大的冲击而不受损害。IBM APS技术就是基于上述原理,在预测到有可能发生撞击后,及时地将磁头移动到停止区以保护硬盘。

根据大量实际调查显示,笔记本电脑在工作状态下跌落的情况绝大部分是从桌面或膝盖上跌落,即从120cm以下高度跌落(通常人的膝盖高度为50cm,桌面高度为80cm),如何能在ThinkPad本本发生撞击之前就将磁头归位,成为了问题的关键所在。

1.磁头归位的时间问题

经测试,磁头的归位时间从接到控制信号到完成操作,根据磁头所处的磁道位置不同,大约为100毫秒到500毫秒。对于20cm高度内自由下落的情况,一般可以靠笔记本电脑的外壳与防震设计抵御撞击力,所以我们仅需要关注20cm以上的跌落情况。而笔记本电脑从20cm至120cm高度掉落下来的时间是202毫秒至495毫秒,再加上笔记本电脑掉落之前的短暂延迟时间,试验表明通常预计发生的时间会多于下跌时间。这就保证磁头能在笔记本电脑发生撞击之前及时归位,有效地保护磁盘。

2.冲击力问题

笔记本电脑要承受怎样的撞击,硬盘才会受到超过800G的冲击力呢?我们知道,硬盘受到的冲击力是由多项因素决定的。首先是笔记本电脑下落的相对高度与初始速率,而一般笔记本电脑在工作状态下跌落的情况绝大部分是从膝盖或桌面上跌落到地板上,相对高度不超过120cm,垂直方向的初始速率基本可以忽略不计;其次是笔记本电脑撞击的表面,硬质无弹性的表面(如水泥地板)可以造成更大的冲击力,软质有弹性的表面(如木地板或铺着地毯的地板)可以略微缓冲碰撞,从而造成较小的冲击;再次是笔记本电脑本身的外壳设计和防震设计。

为了量化在各种情况下硬盘受到的冲击力,IBM实验室特 别针对从膝盖上跌落和从桌面上跌落两种情景进行了大量的实际测试。相关实验数据显示,从膝盖高度(50cm)或从桌面高度(80cm)翻落到硬质无弹性的 水泥地板上,由于有外壳以及冲击吸收垫保护,硬盘受到的冲击力超过200G的几率约为50%,而超过800G的几率不超过2%。

3.规律性颠簸问题

APS功能一旦开启,就一直在监测ThinkPad本本的运动。但用户常常需要移动办公,如在汽车、火车或飞机等交通工具上使用笔记本电 脑,因此颠簸是在所难免的,这些震动要是常触发APS使磁头归位,则ThinkPad用户在使用本本时就会感到本本运行是断断续续的,影响了工作效率。不 过APS技术已经考虑到这个问题,它具有忽略重复震动的功能,能消除移动用户的顾虑。交通工具颠簸造成的冲击力一般并不足以损害硬盘,所以大多数的颠簸都 不会触发APS功能使磁头归位,从而有效保证了ThinkPad用户使用笔记本电脑的流畅性。

智能化的震动预测、有提前量的磁头归位操作,APS的这些重要特性都保证了ThinkPad本本的硬盘以及盘内数据不会轻易受到各种撞击的影响。

比尔盖子最近给一台Lenovo(其实就是IBM) Thinkpad R61安装了Ubuntu 11.04这个Linux发行版,却悲剧的发现APS不工作,后来经过一番疯狂的搜索,知道了以下事实:

在Linux系统中,IBM并没有提供相应的驱动程序让APS正常工作。曾经有一年,IBM宣称将把关于APS的硬件资料公布到开源社区,这听起来很不错,可实际情况是,开发者1年来都没有见到一页资料。后来,有牛人们通过逆向工程编写出了能在Linux下APS的驱动,这下众多Linux IBM笔记本使用者的硬盘才有了安全保证。

看来使用APS还是有戏的,又经过搜索,终于发现了实现方法:

第一步,打开终端,然后输入如下命令:(我是用的 sudo aptitude install,应该没有什么不同。)
sudo apt-get install tp-smapi-dkms
sudo apt-get install python python-gtk2 python-gnome2 hdapsd

第二步,在终端下输入如下命令:
sudo gedit /etc/modules
然后添加“tp_smapi “代码在最后,让它看得和下面的一样:
=====================================
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with “#” are ignored.
lp
tp_smapi
=====================================

第三步,重新启动,进行测试,看是否工作,在终端下输入如下命令
sudo find /

然后进行抖动你的笔记本,看看是否停止,如果停止了,就说明你成功了,

或者运行:

sudo hdapsd -d sda -s 15 -a -v -y

动动笔记本。看看坐标值在变化吗?

如何调整灵敏度,如下:

在终端下进行如下操作

$ sudo gedit /etc/default/hdapsd

找到如下位置:(默认安装是15, 您可按照自己要求修改,25 30….)

# sensitivity
SENSITIVITY=15

不过,我们还可以在完善APS:在Gnome2的面板上增加一个APS硬盘状态的通知图标,让我们得知硬盘目前是被APS停止还是正常运行。

wget http://www.zen24593.zen.co.uk/hdaps/gnome-hdaps-applet-20081204.tar.gz
 tar -zcvf gnome-hdaps-applet-20081204.tar.gz ./
 sudo apt-get install libpanel-applet2-dev
 cd gnome-hdaps-applet-20081204
 gcc $(pkg-config --cflags --libs libpanelapplet-2.0) -o gnome-hdaps-applet gnome-hdaps-applet.c
 sudo cp gnome-hdaps-applet /usr/bin/
 sudo mkdir /usr/share/pixmaps/gnome-hdaps-applet/
 sudo cp *.png /usr/share/pixmaps/gnome-hdaps-applet/
 sudo cp GNOME_HDAPS_StatusApplet.server /usr/lib/bonobo/servers/

然后,注销,再登录,这时右键点击Gnome面板,选择添加,你会发现多出了一个APS的插件!

这样,我们就完美的实现了APS!

设置电池充电阀值

无论你的笔记本电脑电池用去了多少电力,但连接电源适配器后总会充电至100%,即使你只是用了1%的电——这可不是什么好事!这样充电会缩短电池寿命,最好在电池电力在80%左右的时候再连接电源适配器充电。

但是,靠自己自觉做到这点,有点不靠谱吧。因此,IBM将大部分笔记本的电源管理功能中,增加了电池充电阀值这一功能,可以通过设置,在电池电力低于指定的百分比时开始充电和停止充电,但是在Linux又是没驱动,无法实现。所以我们需要自己安装。

首先,你必须依照本文的第一部分安装APS驱动,因为电池充电阀值和APS使用的是一个驱动。然后就可依照下面的命令设置了。

首先执行:

cat /sys/devices/platform/smapi/BAT0/*_charge_thresh

30 
#--> 低于30%开始充电
100 -
#--> 充电至100%后停止

查看当前的设置,你的和我的结果不一定相同哦!然后用下面的命令修改充电阀值。


sudo su
#切换到root身份
echo 80 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
#低于80%开始充电
echo 100 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
#充电至100%后停止

然后再次执行,果然成功了吧!

cat /sys/devices/platform/smapi/BAT0/*_charge_thresh

80
#--> 低于80%开始充电
100 -
#--> 充电至100%后停止

Categories: Linux

搬迁网站到VPS的过程 » « 网站基本迁移完毕

2 Comments

  1. 很好的文章,先拜读一下

发表评论

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

Copyright © 2023 比尔盖子 博客

Theme by Anders NorenUp ↑