Hard Drive Active Protection System (简体中文)
HDAPS意为"硬盘主动防护系统",它在硬盘受到突然冲击时(比如你的笔记本掉落或撞击到桌子上时)保护硬盘,其工作原理是在发生意外冲击时停放磁头,这样磁头就不会撞击到盘片上,也许这会避免一个灾难性的硬盘损伤.
震动检测
硬件需要支持震动检测。一般来说,实现此功能的是笔记本主板上的一个加速度计。除了硬件,还需要有驱动程序将硬件检测到的内容告诉操作系统。这个部分描述实现此功能的驱动程序。
tp_smapi
tp_smapi 是一套适用于ThinkPad的驱动程序集。如果你有一台支持此功能的ThinkPad,就算你没打算使用HDAPS也强烈推荐使用tp_smapi。除了很多有用的功能外,tp_smapi还会把加速计输出为操纵杆设备/dev/input/js#
(注意! 这可能会干扰到系统的其他操纵杆设备).
从community库中安装tp_smapi.重启后会启动大部分的驱动,设备信息位于/sys/devices/platform/smapi
.
内核有自己的 HDAPS 驱动,之前需要手动装载模块 tp_smapi 模块,现在tp_smapi 软件包会将hdaps.ko
安装到 /lib/modules/$(uname -r)/updates,替换掉内置模块。这样只需加入hdaps
模块就好了。
模块参数invert
某些ThinkPads需要添加invert模块参数来正确处理X和Y旋转轴. 如果需要的话,在/etc/modprobe.d/modprobe.conf
中添加:
options hdaps invert=1
例如 ThinkPad T410,可以添加invert=1
.invert可以取如下值:
- invert=1 反转X和Y轴;
- invert=2 反转X轴 (如果已经倒置两轴则此参数值无效)
- invert=4 交换X和Y (在反转之前)
参数值可以相加. 例如, invert=5 交换两轴后反转两轴. 最大的参数值是7.如果你不清楚该怎么办的话,可以使用hdaps-gl或者其它图形界面工具 (见下). 另外, 你可以从 这张表里的"HDAPS axis orientation"项中得出你需要的参数值.
除了修改后重新载入 hdaps
模块之外, 还可以通过直接写 /sys/devices/platform/hdaps/invert
来修改 invert
值。
保护
现在,你的硬件已经能将受到冲击的信息报告给操作系统,我们需要让操作系统在收到此信息后保护硬盘.这个部分描述的是在收到信息后保护硬盘的软件.
hdapsd
hdapsd可以接收HDAPS传感器的信息并判断是否受到冲击,如果是的话通知内核停放磁头.
设置hdaps时你应该检查硬盘的SMART信息中的"Load cycle count". 如果检测太过于敏感的话,磁头将会不停地进行停放操作,load cycle count将会上升很快.
安装hdapsd后,通过 [email protected]
来启动 hdapsd 守护进程,但是不需要设置为开机启动。
软件包会安装 udev 规则, udev 会对每个机械磁盘启用 hdapsd 实例。
更多信息请参考 hdapsd github 页面。
你可以在hdaps的unit file里调整参数(详见systemd的文章). 比如以下面的文件覆盖默认的service文件将调整hdaps的灵敏度与记录:
/etc/systemd/system/hdapsd.service.d/sensitivity.conf
[Service] ExecStart= ExecStart=/usr/bin/hdapsd --sensitivity=40 -blp
然后重载配置.
图形界面工具
这里有一些显示hdapsd状态的软件,通过它们你很容易知道发生了些什么.你可以选择不安装它们.
xfce4-hdaps — Xfce4面板小程序.
HDAPSicon — (之前的thinkhdaps)是一个独立的GTK小程序.运行时会在通知区显示图标.
hdaps-gl — 一个简单的OpenGL程序 ,它以3D动画的形式显示您的ThinkPad的状态,和联想的Windows下的软件很像.