Portál AbcLinuxu, 2. května 2025 16:32
Pokud jste majiteli nějakého notebooku Lenovo nebo IBM, jistě vám neušlo, že tyto stroje jsou vybaveny otřesovým čidlem. Jsou proto schopny detekovat pád (i jiný pohyb) a v důsledku toho zaparkovat diskové hlavičky. Bohužel tato funkčnost potřebuje interakci ze strany operačního systému a ve výchozím stavu v Linuxu parkování hlaviček nefunguje.
Nejprve pár pojmů:
IBM uvolnila specifikaci k HDAPS a postupem času se našli programátoři, kteří vše překódovali, a tak bych vám v tomto článku chtěl ukázat "Jak na to". Pokud máte už nějaké zkušenosti s kompilací jádra, bude to jistě hračka. Pokud nemáte přiliš zkušeností, zkuste si spolu s tímto článek přečíst Kompilovanie jadra.
V linuxovém jádře je sice modul HDAPS, který dokáže detekovat pohyb notebooku (pouze u některých typů notebooků), ale už neexistuje cesta, jak přinutit disk, aby zaparkoval hlavičky. Kvůli tomuto omezení sáhneme po HDAPS patchi (který umožní výše zmíněné parkování hlaviček) a v druhé fázi po modulu tp_smapi - který podporuje více typů notebooků (na rozdíl od jaderného modulu hdaps).
Vyhledání patche pro vaši verzi jádra by neměl být problém, tedy pokud nepoužíváte nejnovější GIT verzi.
Většinu dění okolo HDAPS patchů a tp_smapi najdete na adrese news.gmane.org/gmane.linux.drivers.hdaps.devel.
Pro Linux 2.6.24 vám bude stačit patch z adresy article.gmane.org/gmane.linux.drivers.hdaps.devel/1094.
Pokud máte starší verzi jádra a nechcete ji měnit, porozhlédněte se na adrese whoopie.gmxhome.de/linux/patches/ (klíčová slova hdaps, disk, protect).
Pro potřeby tohoto článku budu pracovat s jádrem verze 2.6.24-r3, ale v případě dalších (především novějších) verzí by se postup neměl přiliš lišit.
Nejlepší je pro kompilaci a instalaci nového jádra používat postup vhodný pro vaši distribuci, který vám umožní vše provést elegantně a ve většině případů i automatizovaně, tj. s pomocí balíčkovacího systému. Pokud z nějakého důvodu chcete kompilovat a instalovat jádro ručně, budete nejspíš muset provést následující kroky:
Návod ke kompilaci jádra a dalším zmíněným krokům najdete například v následujících článcích:
Pokud bude vše OK (jádro nabootuje), pak je první část hotova a můžete přejít k fázi druhé, tzn. instalaci modulu tp_smapi (spolu s modulem hdaps).
Modul tp_smapi není (snad jen prozatím) přímo v jádře (vývojáři k němu mají určité výhrady). Můžete jej tedy stáhnout ve formě zdrojových kódů, ze sourceforge.net.
Pokud něco kompilujete proti linuxovému jádru, je většinou potřeba mít zdrojové kódy jádra nalinkované do /usr/src/linux, což učiníme asi takto:
ln -s /usr/src/<prislusna_verze_jadra> /usr/src/linux
Rozbalíme zdrojové kódy do adresáře /usr/src (ale výběr adresáře je na vás):
cd /usr/src
gunzip -c /home/<vase_prihlasovaci_jmeno>/tp_smapi-0.36.tgz | \
tar -xvf -
cd tp_smapi-0.36
Poznámka: Pokud jste updatovali BIOS a EC (embedded microcontroller) na verzi vyšší než 2.0 (včetně), musíte provést jednu nepříliš čistou úpravu v kódu (ve verzi 0.37 by to mělo být snad opraveno). V souboru hdaps.c je potřeba zakomentovat řádek 362 s return -EIO (nezapomeňte, že v C jsou komentáře označeny pomocí // na začátku řádku).
Nyní zkompilujeme a nainstalujeme modul s podporou HDAPS:
make install HDAPS=1
Pokud vše proběhlo bez chyb, načtěte ho:
modprobe hdaps
Pokud chcete modul natahovat automaticky při startu, přidejte jej do souboru /etc/modules.autoload.d/kernel-2.6 (nebo podobného, který slouží stejné funkci ve vaší distribuci).
Tímto není vše hotovo, zbývá si zkompilovat démona, který bude číhat na pohyb čidla, a ve chvíli, kdy se to stane, bleskurychle zaparkuje hlavičky disku. Pár příkladů:
Taky je tu možnost si hdapsd zkompilovat ze zdrojových kódů. hdapsd je potřeba spustit při každém startu, a tudíž je dobré mít rovnou i skripty v /etc/init.d/ nebo /etc/rc.d/, jejichž vytvoření je však daleko nad rámec tohoto článku.
Po nainstalování můžete v konfiguračním souboru někde v /etc/ (můžete najít příkazem find /etc | grep hdaps).
V konfiguraci jsou volby:
Po nakonfigurování nastavte ve vaší distribuci spouštění démona hdapsd při startu systému.
Démon sice nejde ovládat nějakým grafickým prográmkem, ale alespoň můžete vidět stav zařízení.
Pokud vše funguje, už chybí jen zvolat "A je to!", ale nezapomínejte na to, že ani taková ochrana není blbuvzdorná a absolutně spolehlivá, a proto bude lepší, když svůj notebook odložíte před návštěvou horské dráhy. Pokud byste nějaké části článku udělali jinak, ozvěte se v komentářích (budu rád za vaše reakce).
emerge tp_smapi hdapsd
.
Take by stalo za to zminit, ze hdapsd pomerne zere baterku, a ze mnohem lepsi reseni je disk, ktery je sam vybaveny cidlem a parkuje se bez interakce s OS.
hdapsd pomerne zere baterkuto nie je pravda
Take by stalo za to zminit, ze hdapsd pomerne zere baterku, a ze mnohem lepsi reseni je disk, ktery je sam vybaveny cidlem a parkuje se bez interakce s OS.Jo, čidlo přímo v disku by bylo lepší... A jestli myslíte problémy častých přerušení v powertop, tak existuje verze, která je optimalizovaná.
# modprobe hdaps
FATAL: Error inserting hdaps (/lib/modules/2.6.24.4-64.fc8/kernel/drivers/hwmon/hdaps.ko): No such device
modprobe tp_smapi insmod /lib/modules/<verze jádra>/extra/hdaps.ko
tp_smapi
tuhle tendenci nemá, takže jej používám k udržování baterie mezi 30-80% (tedy myslím, notebook už jsem dlouho neviděl).airodump-ng
mi bez channel hopu přidal (asi před půl rokem) "jen" +- 20 interruptů... oproti X+fluxbox (+50) to ještě docela jde... iwlwifi
je v jádře až od 2.6.24 (zdroj), to asi nebude vanilkové jádro, ne?
(x,y) position: (2,2) keyboard=0 mouse=0 (x,y) position: (2,1) keyboard=0 mouse=0 (x,y) position: (1,1) keyboard=0 mouse=0A hdaps-gl zobrazuje jen naklonění doleva/doprava a dopředu/dozadu. Nahoru dolů nereaguje. Navíc se ten hdaps ovladač chová jako dvouosý joystick.
we use our current 2D sensor is that it is more accurate than most commonly used 3D sensors at protecting the hard drive. This is because it detects smaller accelerations than the 3D sensors. Ideally you want a sensor that is more sensitive to small changes than to big changes. This way it can react to smaller drops and bumps (accelerations).
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.