關於我自己

我的相片
Taiwan
別拿我跟一般人比,我是有人生終極目標的!(看不順眼我說的話嗎?那你可以滾了!)

2009年5月28日 星期四

X200下的HDAPS妖魔鬼怪

ThinkPad系列的其中一項安全功能,HDAPS,用來在硬碟在劇烈晃動的時候park讀取裝置,可以降低壞軌的機會。在Ubuntu 9.04下,其實該功能在kernel是有內建支援,不過據我了解在我的x200不太能用。Google了半天,嘗試了千百種方式,卻最後是給T400用的方式成功(雖然晶片應該都是同一種)。

今天拎背背痛,不能去夜店,就花點時間寫下來拎背安裝的步驟,讓你們這些笨蛋參考。

拎背ㄟ uname -a … 2.6.28-11-generic … x86_64 GNU/Linux (也就是說,這是我的環境。不過,就算環境跟我一樣,以下步驟造成出事,自己負責。)

以下是 機勒 的中譯內容與整理出來的一些其他內容綜合。
下載下面三個套件 (最好是進入頁面,尋找最新版本)
第一個是tp_smapi,基本功能是用來控制電池的充電與提供更多的電池資訊,也額外包括了HDAPS的driver在裡面。
第二個hdapsd,顧名思義,就是控制hdaps的妖魔(daemon)了。
第三個,在gnome桌面下可以顯示hdaps狀態的applet,就是跟windows右下常駐的那個一樣。(平常是play符號,硬碟搖動會變成pause符號。)用KDE的傢伙們,呃,拎背不知道,自己去找。
然後每一個都用 tar xvfz 解開。

再來,刪除或更名原有的三個modules:($KVER是使用kernel版本)
  • /lib/modules/$KVER/kernel/ubuntu/misc/thinkpad_ec.ko
  • /lib/modules/$KVER/kernel/ubuntu/misc/tp_smapi.ko
  • /lib/modules/$KVER/kernel/drivers/hwmon/hdaps.ko
先進入tp_smapi資料夾,嘗試輸入:
$> make load HDAPS=1 FORCE_IO=1 (前面可以加sudo)
看看有沒有出現「drivers successfully loaded」,任何步驟有錯誤出現的話,就跳過這一篇,請google其他方式。
再來,
$> make install HDAPS=1 FORCE_IO=1 (前面也可以加sudo)
安裝好driver。
打開 /etc/modules 這個檔案加入下面三行,來指定開機要load的modules(應該是吧)
thinkpad_ec
tp_smapi
hdaps
打開 /etc/modprobe.d/local.conf 這個檔案 (我的情況下是沒有,所以我就新增檔案。)
加入下面內容:
# enable thinkpad_ec
options thinkpad_ec force_io=1

# option to correctly set tilting through hdaps sensor
options hdaps invert=1
(雖然我不知道為什麼要給他invert?我在hdaps-gl顯示的轉動方下xy軸就變反的,不過我還是加了。)

$>lsmod | grep hdaps
hdaps 20612 0
thinkpad_ec 15896 2 hdaps,tp_smapi
出現類似以上,確定成功載入modules。
如果沒有,
$> sudo modprobe thinkpad_ec tp_smapi hdaps (手動載入,不然要重開機也行。如果重開機還沒有,那就放棄這篇。undo上面步驟。)

$> sudo apt-get install hdaps-utils hdapsd (安裝hdaps相關功能)
之後,你可以輸入
$> hdaps-gl
會出現3d的thinkpad,這時候你可以反轉你的電腦,來測試hdaps有沒有安裝成功。(像這樣)

還沒完!hdaps妖魔還沒真的有用。

進入 hdapsd-20090401/(或更新版本)目錄,安裝他。如:
$> cd Desktop/hdapsd-20090401/
$> ./configure --prefix=/usr/
$> make
$> sudo make install
然後,
$> sudo hdapsd -d sda -s 15 -a -v -y
會跑出一堆內容,這時候如果你晃動你的電腦,上面一直跑出來的數字會有改變,那就是安裝ok。

不過還沒完!!!

(這邊我就不太懂為什麼)
以下要重新下載另一個hdapsd,並安裝。
$> wget http://www.unet.univie.ac.at/~a0604095/hdapsd
$> sudo chmod 733 hdapsd
$> sudo cp hdapsd /etc/init.d/
下載的hdapsd,owner跟group可能會是你自己的帳號,雖然我不知道會不會有影響,所以我還是改成root
$> chown root hdapsd
$> chgrp root hdapsd

最後,
$> sudo /etc/init.d/hdapsd start
啟動hdapsd。

安裝最後一個套件,進入gnome-hdaps-applet目錄,
$> sudo apt-get install libpanel-applet2-dev (安裝一堆有的沒的)
$> 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/
重開機後(或登出登入),就可以加入hdaps applet在面板上。然後來搖晃你的電腦,看看有沒有用。

如果想改變hdapsd的設定檔,編輯 /etc/default/hdapsd。我自己認為,敏感度15太敏感了,所以調成25。

來確認是否真的hdaps真的有鎖定讀取頭:(沒有smartctl,自己sudo apt-get install)
$> sudo smartctl -a /dev/sda | grep Load_Cycle
會出現類似:
193 Load_Cycle_Count 0x001a 099 099 000 Old_age Always -
3488
這個3488就是你讀取頭鎖定的次數。再來,搖晃你的電腦,再重新檢查一次,看鎖定次數有沒有增加,有知道有沒有成功。

基本上,一個硬碟的讀取頭鎖定(park)次數大概在60萬次左右,之後壽命就差不多了,每次關機會增加一次。用電池的時候,會常常鎖定來減省電力,幾小時可能到上百次,來保護磁頭。所以你不希望沒事就狂搖晃你的電腦,除非你有錢到用SSD。這時候你就可以嘗試拿hdaps來玩電動

沒有留言: