Festplattenschutz
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Seit 2003 verfügen viele ThinkPad-Modelle auf der Hauptplatine über einen Bewegungs-Sensor, ein sogenanntes Accelerometer, das vor allem dazu dienen soll, den Lesearm der Festplatte im Falle eines Sturzes innerhalb von Millisekunden zu "parken", damit die Festplatte nicht beschädigt wird. Einen ähnlichen Sensor haben u.a. Notebooks von Acer ("GraviSense") und Apple ("Sudden Motion Sensor").
Dieser Artikel beschreibt den Softwareteil des aktiven Festplattenschutzes für IBM/Lenovo ThinkPads unter Linux, den IBM Active Protection System Linux Driver (HDAPS) 🇬🇧. Trotz eines vorhandenen Sensors unterstützt HDAPS jedoch nicht ThinkPads der Baureihen SL, L, Edge sowie das X100e, da hier eine andere Hardware eingesetzt wird, für die kein Treiber existiert. Aus dem gleichen Grund funktioniert HDAPS auch nicht mit Notebooks anderer Hersteller sowie mit Nicht-ThinkPad-Baureihen von Lenovo.
In jüngerer Zeit werden bestimmte Festplatten-Modelle für Notebooks mit einem integrierten Sensor ausgestattet, meist als "Free Fall Sensor" bezeichnet. Dieser Festplattentyp sorgt ohne Softwareunterstützung eigenständig für den Parkvorgang. Die Sensordaten jedoch sind nicht für die unten beschriebenen weiteren Anwendungen zugänglich.
Installation¶
Vorbemerkung: es ist von Vorteil die im folgenden angegebenen Pakete für Kernelmodul und Überwachungsdämon einzeln nacheinander zu installieren. Tut man es stattdessen in einem Schritt, so zieht der Überwachungsdämon zunächst ein veraltetes Kernelmodul an, was einen Neustart erforderlich macht.
Kernelmodul hdaps installieren (alle Ubuntu-Versionen)¶
Der in den offiziellen Kerneln enthaltene Treiber hdaps.ko ist für den Festplattenschutz nicht geeignet, deshalb wird hier eine gepatchte Version aus dem Projekt tp-smapi 🇬🇧 verwendet.
Das zu installierende Paket ist abhängig von der eingesetzten Ubuntu-Version:
Versionen ab Ubuntu 10.04¶
tp-smapi-dkms
Befehl zum Installieren der Pakete:
sudo apt-get install tp-smapi-dkms
Oder mit apturl installieren, Link: apt://tp-smapi-dkms
Versionen bis Ubuntu 9.10¶
tp-smapi-source
Befehl zum Installieren der Pakete:
sudo apt-get install tp-smapi-source
Oder mit apturl installieren, Link: apt://tp-smapi-source
Überwachungsdämon hdapsd installieren (alle Ubuntu-Versionen)¶
Für den Dämon ist das Paket
hdapsd
Befehl zum Installieren der Pakete:
sudo apt-get install hdapsd
Oder mit apturl installieren, Link: apt://hdapsd
zu installieren.
Ab Ubuntu 10.04 Lucid Lynx ist die Installation hiermit abgeschlossen und es kann direkt mit dem Kapitel Konfiguration weitergehen.
Nacharbeiten für Ubuntu 9.10¶
Als Voraussetzung sind die Pakete
module-assistant
build-essential
Befehl zum Installieren der Pakete:
sudo apt-get install module-assistant build-essential
Oder mit apturl installieren, Link: apt://module-assistant,build-essential
zu installieren [1].
Modul kompilieren und installieren¶
Nach der Installation des Pakets tp-smapi-source muss das Kernelmodul noch mit dem Module-Assistant kompiliert und installiert werden (zuvor sollte man evtl. geöffnete Paketverwaltungswerkzeuge schließen, sie könnten die Installation des erzeugten Kernelmodul-Pakets blockieren):
sudo m-a a-i tp-smapi
Anschließend ist ein Neustart erforderlich.
Hinweis:
Der vorstehende Schritt sudo m-a a-i tp-smapi
ist nach jedem Update des Kernels auf eine höhere Version zu wiederholen.
Nacharbeiten für Ubuntu 8.04¶
Der in Ubuntu 8.04 Hardy Heron verwendete Kernel verfügt zwar von Haus aus bereits über den Treiber hdaps.ko, der die Daten des Sensors auslesen kann. Um jedoch das Schutzsystem zu aktivieren, sind Anpassungen an anderen Stellen der Kernels notwendig, für die man einen gepatchten Kernel bauen muss.
Kernel patchen und kompilieren¶
Zunächst werden wie in Kernel/Kompilierung (Abschnitt „Kernel-Quell-Code-herunterladen“) beschrieben die Kernelquellen heruntergeladen und entpackt. Danach ist von thinkwiki.org 🇬🇧 die zu den Kernelquellen passende Version des Patches herunterzuladen.
Nun kann der Patch im Verzeichnis, in das die Kernel-Quellen entpackt worden sind, mit folgendem Befehl eingespielt werden:
patch -p1 -l < /WEG/ZUM/PATCH/hdaps_protect-<VERSION>.patch
Dabei dürfen nur "succeeded"-Meldungen erscheinen, andernfalls ist eine falsche Patch-Version benutzt worden.
Danach ist der Kernel zu konfigurieren und zu kompilieren [2]. Wer am bestehenden Ubuntu-Kernel nichts weiter verändern will als den HDAPS-Patch, übernimmt am einfachsten die alte config-Datei aus /boot/config-<VERSION>.
Kernel installieren¶
Von den .deb-Paketen, die sich nach der Kompilierung im Quellenverzeichnis befinden, müssen die beiden folgenden installiert werden [3]:
linux-image-<NEUEVERSION>
linux-headers-<NEUEVERSION>
Der gepatchte Kernel ist nun installiert und kann durch einen Neustart aktiviert werden.
Achtung!
Es ist dringend darauf zu achten, dass neben dem neu erstellten noch mindestens ein alternativer, funktionierender Kernel zum Booten zur Verfügung steht!
Modulaufruf konfigurieren¶
Mit einem Editor mit Root-Rechten[4] wird die Konfigurationsdatei /etc/modprobe.d/hdaps.conf mit folgendem Inhalt erstellt:
install hdaps /sbin/modprobe hdaps_ec
Konfiguration¶
Die Konfiguration des Überwachungsdämons wird in der Datei /etc/default/hdapsd vorgenommen, die mit Root-Rechten editiert werden muss [4].
START=yes # falls hdaps beim Systemstart mitgestartet werden soll DISK=sda # oder sdb, hda, hdb; je nach Festplatte bzw. Kernel; entspricht Option -d SENSITIVITY=15 # höhere Werte bedeuten geringere Empfindlichkeit und umgekehrt; entspricht Option -s FORCEENABLE="no" # hdaps für die Platte erzwingen mit "yes"; entspricht Option -f OPTIONS="" # weitere Optionen
Für Ubuntu 8.04 ist die Vorbelegung DISK=hda
in DISK=sda
zu ändern.
Der Punkt SENSITIVITY
stellt die Empfindlichkeit ein (höhere Werte bedeuten eine geringere Empfindlichkeit).
Hinweis:
Einige Benutzer berichten, daß mit dem Vorgabewert 15 der Schutz zu empfindlich eingestellt ist. Es empfiehlt sich daher, stets einen Funktionstest zu machen.
Die Option -a
kann hinzugefügt werden, um bei Benutzung der internen Tastatur die Empfindlichkeit automatisch zu senken. Bei einigen Festplatten wird die HDAPS-Fähigkeit fälschlicherweise nicht erkannt; dann probehalber FORCEENABLE="yes"
setzen.
Nach einer Anpassung der Konfiguration ist stets der Dämon mit
sudo /etc/init.d/hdapsd restart
neu zu starten.
Funktionstest¶
Für den Test ist zunächst der bei der Installation automatisch im Hintergrund gestartete Dämon anzuhalten [5]
sudo /etc/init.d/hdapsd stop
und im Vordergrund wieder zu starten mit
sudo hdapsd -d sda -s 15
Beim Funktionstest wird /etc/default/hdapsd nicht gelesen, da der Dämon direkt gestartet wird. Deshalb ist die Empfindlichkeit (und ggf. andere Optionen) wie gezeigt in der Kommandozeile anzugeben.
Nun den Laptop sanft "schütteln"; es sollten Ausgaben ähnlich dieser erscheinen:
Sun Oct 25 22:17:34 2009: Starting hdapsd Sun Oct 25 22:17:34 2009: WARNING: You did not supply any devices to protect, trying autodetection. Sun Oct 25 22:17:34 2009: Adding autodetected device: sda Sun Oct 25 22:17:34 2009: Selected interface: HDAPS Sun Oct 25 22:17:35 2009: Selected HDAPS input device: /dev/input/event21 Sun Oct 25 22:17:36 2009: parking Sun Oct 25 22:17:37 2009: un-parking Sun Oct 25 22:17:40 2009: parking Sun Oct 25 22:17:41 2009: un-parking
Nach dem Test den Dämon mit Strg + C beenden und wieder im Hintergrund starten mit
sudo /etc/init.d/hdapsd start
Problembehebung¶
Fehlermeldung "Error! Not parked ..."¶
Erscheint beim Funktionstest die Meldung
Error! Not parked when we thought we were... (paged out and timer expired?)
so gibt es zwei mögliche Ursachen:
Es laufen mehrere Instanzen des Dämons, die sich gegenseitig in die Quere kommen
Die Festplatte ist nicht HDAPS-fähig (gilt insbesondere, wenn schon
FORCEENABLE="yes"
gesetzt ist)
Den ersten Fall kann man überprüfen mit
ps -ef | grep hdapsd | grep -v grep
Wenn keine Ausgabe erfolgt, ist kein Dämon gestartet. Andernfalls stoppt man alle Instanzen mit
sudo killall hdapsd
und prüft erneut wie oben gezeigt.
Schlägt danach der Funktionstest erneut mit derselben Meldung fehl, so trifft die zweite Möglichkeit zu. In diesem Fall könnte ein Firmware-Update der Festplatte Abhilfe schaffen. Auf dieser Seite 🇬🇧 sind bekannte, nicht funktionierende Festplatten bzw. Firmware-Versionen mit "not parked" gekennzeichnet.
Fehlermeldung "WARNING: Could not find hdaps input device ..."¶
Die Ausgaben
WARNING: Could not find hdaps input device (No such file or directory). You may be using an incompatible version of the hdaps module. Falling back to reading the position from sysfs (uses more power). Use '-y' to silence this warning. Could not open /sys/devices/platform/hdaps/sampling_rate: No such file or directory. Do you have the hdaps module loaded?
weisen darauf hin, daß das Kompilieren bzw. Installieren des Kernelmoduls fehlgeschlagen ist. Dadurch wird das Modul hdaps aus dem Standard-Kernel verwendet. Dies kann man zusätzlich mit dem folgendem Befehl prüfen
modinfo hdaps
Das falsche Modul aus dem Standard-Kernel liefert
filename: /lib/modules/KERNEL-VERSION/drivers/hwmon/hdaps.ko ...
Das richtige Modul aus tp-smapi-source liefert
filename: /lib/modules/KERNEL-VERSION/updates/hdaps.ko ...
Fehlermeldung "Could not find a suitable interface"¶
Die Ausgabe
Could not find a suitable interface
weist darauf hin, dass das Modul hdaps
nicht geladen werden konnte. Eine mögliche Ursache ist, dass irrtümlich der nur für Ubuntu 8.04 gedachte Abschnitt Modulaufruf konfigurieren für eine neuere Ubuntu-Version ausgeführt wurde. Zur Behebung ist die Datei /etc/modprobe.d/hdaps.conf wieder zu entfernen. Weitere Informationen zur Ursache liefert der Befehl
sudo modprobe -v hdaps
Sollte dort die Ausgabe
WARNING: Error inserting thinkpad_ec (/lib/modules/.../thinkpad_ec.ko): No such device or address
erscheinen, so kommen zwei Möglichkeiten in Betracht:
Es handelt sich um ein inkompatibles ThinkPad (betroffene Modelle werden in der Einleitung dieses Artikels genannt)
Die Hardware wurde nicht richtig erkannt
Im zweiten Fall hilft ein Kaltstart, d.h. Herunterfahren/Ausschalten und wieder Einschalten des Notebooks. Wird auch nach einem Kaltstart die Hardware nicht korrekt erkannt, sollte man ein BIOS-Update und danach ein Zurücksetzen der BIOS-Einstellungen auf Default versuchen.
Fehlermeldung "Could not read from /sys/block/sda/device/unload_heads ..."¶
Ursache der Meldungen
Could not read from /sys/block/sda/device/unload_heads: Operation not supported Could not detect any devices.
ist, dass die Festplatte nicht HDAPS-fähig ist bzw. die Fähigkeit nicht erkannt wird. Letzteres ist bei älteren IDE-Festplatten nach dem ATA-Standard < 7 der Fall. Solche Festplatten erkennt man an der Ausgabe des Befehls
sudo hdparm -I /dev/sda
Standards: Used: ATA/ATAPI-6 T13 1410D revision 3a Supported: 6 5 4
Zur Behebung kann man versuchsweise hdapsd
mit der Option -f
(und Angabe des Geräts) aufrufen:
sudo hdapsd -d sda -s 15 -f
War der Test mit -f
erfolgreich, kann man die Einstellung in /etc/default/hdaps übernehmen:
FORCEENABLE="yes"
Hinweis:
Um in diesem Fall sicherzustellen, daß die Köpfe tatsächlich geparkt werden, sollte man auf das beim Parken entstehende leise Klickgeräusch achten!
Erscheint hingegen mit -f
die Fehlermeldung "Error! Not parked ...", so ist höchstwahrscheinlich die Festplatte nicht HDAPS-fähig. Weitere Hinweise dazu im betreffenden Abschnitt.
Optionale Anwendungen¶
Um den aktuellen Zustand der Festplatte dauernd im Blick zu haben, existieren einige Panel-Applets und Visualisierungsprogramme, welche die Daten des Sensors und das Verhalten des HDAPS-Dämons überwachen und darstellen. Inzwischen sind aber auch eine Reihe eher spielerischer Anwendungen entstanden, welche auf die Ablesungen insbesondere des Sensors zurückgreifen, um durch Klopfzeichen oder Schwenken des Laptops Prozesse auszulösen und Programme zu steuern. Einige Beispiele hierzu sind am Ende dieses Artikels zusammengetragen.
Panel-Anzeige des Festplattenschutzes¶
Für den Avant Window Navigator gibt es das ThinkHDAPS Applet.
Unter Gnome¶
Gnome-Benutzern stehen das gnome-hdaps-applet und das HDAPSicon 🇬🇧 zur Verfügung.
Das gnome-hdaps-applet muss aus dem Quellcode kompiliert werden, dazu wird folgendes Paket benötigt [1]:
libpanel-applet2-dev
Befehl zum Installieren der Pakete:
sudo apt-get install libpanel-applet2-dev
Oder mit apturl installieren, Link: apt://libpanel-applet2-dev
Der Quellcode des Applet kann zen.co.uk 🇬🇧 heruntergeladen werden, nach dem Entpacken [6] ist es mit folgendem Befehl zu kompilieren [7]:
gcc $(pkg-config --cflags --libs libpanelapplet-2.0) -o gnome-hdaps-applet gnome-hdaps-applet.c
Das Programm ist nun nach /usr/bin/ zu kopieren; zudem ist in /usr/share/pixmaps/ ein Unterordner gnome-hdaps-applet zu erstellen, in welchen die png-Dateien aus dem Archiv zu kopieren sind:
sudo cp gnome-hdaps-applet /usr/bin/ # Programm nach /usr/bin/ kopieren sudo mkdir /usr/share/pixmaps/gnome-hdaps-applet/ # Unterordner gnome-hdaps-applet erstellen sudo cp *.png /usr/share/pixmaps/gnome-hdaps-applet/ # png-Dateien kopieren sudo cp GNOME_HDAPS_StatusApplet.server /usr/lib/bonobo/servers/ # kopiert GNOME_HDAPS.. nach /usr/lib/bonobo/servers/
Nach erfolgter Installation kann das Applet auf dem üblichen Weg [8] zum Panel hinzugefügt werden.
Unter KDE¶
Installation aus dem Quellcode¶
Auch für KDE-Benutzer steht mit khdapsmonitor 🇬🇧 ein Panel-Applet zur Verfügung. Zum Kompilieren werden folgende Pakete benötigt:
kdelibs4-dev
libqt4-dev
automake
Befehl zum Installieren der Pakete:
sudo apt-get install kdelibs4-dev libqt4-dev automake
Oder mit apturl installieren, Link: apt://kdelibs4-dev,libqt4-dev,automake
Nach dem Herunterladen und Entpacken des Quellcode-Archivs ist es mit dem Linux-üblichen Dreischritt zu kompilieren und zu installieren:
./configure --without-arts make sudo make install
Hinweis:
Ab Ubuntu 8.10 bzw. Kernel 2.6.27 ist es erforderlich, zuvor den Quellcode mit diesem Patch ⮷ zu versehen.
Nach erfolgter Installation kann unter "Menü → Rechner → Systemeinstellungen → Erweitert → Autostart" das Programm "System → KHDAPSMonitor" zum Autostart hinzugefügt werden [9].
Installation aus einem PPA¶
Für Ubuntu Lucid Lynx 10.04 existiert ein PPA, aus dem das Programm installiert werden kann.
Adresszeile zum Hinzufügen des PPAs:
ppa:dominik-stadler/dsta-lucid-ppa
Hinweis!
Zusätzliche Fremdquellen können das System gefährden.
Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der PPA-Beschreibung des Eigentümers/Teams dominik-stadler zu entnehmen.
Anschließend kann man das notwendige Paket
khdapsmonitor (ppa)
Befehl zum Installieren der Pakete:
sudo apt-get install khdapsmonitor
Oder mit apturl installieren, Link: apt://khdapsmonitor
installieren.
Nach erfolgreicher Installation ist nur noch das Icon in den Systemabschnitt der Kontrollleiste zu bringen.
Dazu muss man im Programm "Systemeinstellungen → Erweitert → Autostart" ein neues Programm hinzufügen. Dazu klickt man auf den Knopf "Programm hinzufügen..." um ein Programm hinzuzufügen. In diesen Fall gibt man dann einfach "khdapsmonitor" ein, bestätigt und wählt dann das richtige Icon aus. Nach einer Neuanmeldung ist das Icon im Systemabschnitt der Kontrollleiste zu finden.
Unter Xfce¶
Seit Ubuntu 9.10 gibt es auch für Xfce ein Plugin zum Visualisieren des HDAPS-Status. Dazu installiert man das Paket
xfce4-hdaps
Befehl zum Installieren der Pakete:
sudo apt-get install xfce4-hdaps
Oder mit apturl installieren, Link: apt://xfce4-hdaps
und fügt danach das Applet dem Panel hinzu [10].
Visualisierungen der Raumlage¶
Es bestehen verschiedene kleine Anwendungen, die die aktuelle Raumlage des Laptops anzeigen können. Empfohlen sei hier hdaps-gl 🇬🇧.
Für Ubuntu 8.04 ist das Programm über die offiziellen Ubuntu-Quellen erhältlich. Folgendes Paket muss dazu installiert werden:
hdaps-utils
Befehl zum Installieren der Pakete:
sudo apt-get install hdaps-utils
Oder mit apturl installieren, Link: apt://hdaps-utils
Ab Ubuntu 9.10 ist das Paket nicht mehr über die offiziellen Ubuntu-Quellen erhältlich. Man kann es jedoch hier direkt aus den Quellen von Ubuntu 9.04 herunterladen und installieren [3].
Die Echtzeit-Visualisierung kann danach mit folgendem Befehl aufgerufen werden [5]:
hdaps-gl
Beim Neigen des Notebooks bleibt die Raumlage des von hdaps-gl angezeigten Notebooks stabil. Neigt es sich in die falsche Richtung, so ist die Orientierung der Raumachsen zu korrigieren.
Ähnliche Funktionen bieten das hdapsgl-applet 🇬🇧 und wmhdaps 🇬🇧.
Mit hdaps-utils wird auch ein Programm namens hdaps-pivot
installiert, das Lageveränderungen numerisch an die Konsole ausgibt. Es wird mit folgendem Befehl gestartet:
hdaps-pivot
Dieselben Funktionen bieten als Panel-Applet auch gnome-tilt 🇬🇧 und die GKrellM-Erweiterung gkhdaps 🇬🇧 .
Eine spielerische Visualisierung der Laptop-Raumlage bietet Gyroscope 🇬🇧, das die Bildschirmausgabe auch bei schief stehendem Laptop horizontal belässt.
Orientierung der Raumachsen korrigieren¶
Hinweis:
Die hier beschriebene Konfiguration ist für eine korrekte Funktion nur des Festplattenschutzes nicht notwendig!
Das Kernelmodul hdaps enthält eine Tabelle mit den richtigen Voreinstellungen für die Orientierung der Raumachsen vieler ThinkPad-Modelle. Für eine Änderung dieser Voreinstellungen (auch im Fall unbekannter Modelle) ist entweder beim Laden des Kernelmoduls hdaps der Modul-Parameter invert
oder zur Laufzeit das Sysfs-Attribut /sys/devices/platform/hdaps/invert einzustellen.
Parameter invert | ||
Wert | R | P |
0 | X | Y |
1 | -X | -Y |
2 | -X | Y |
3 | X | -Y |
4 | Y | X |
5 | -Y | -X |
6 | -Y | X |
7 | Y | -X |
Der Parameter invert
kann die Werte 0 bis 7 annehmen. In der nebenstehenden Tabelle geben X und Y die Ausgänge des Sensors, R ein seitliches Neigen des Notebooks und P ein Neigen nach vorne oder hinten an.
Am einfachsten ermittelt man die richtige Einstellung durch Ausprobieren:
sudo sh -c "echo W > /sys/devices/platform/hdaps/invert" hdaps-gl
wobei W
durch den gewünschten Wert zu ersetzen ist. Nach jeder Änderung des Parameters muß hdaps-gl neu gestartet werden.
Soll die so ermittelte Einstellung dauerhaft eingerichtet werden, ist mit einem Editor mit Root-Rechten[4] die Konfigurationsdatei /etc/modprobe.d/hdaps.conf mit folgendem Inhalt zu erstellen:
options hdaps invert=W
Für Ubuntu 8.04 ergänzt man die oben erstellte Datei mit folgender Zeile:
options hdaps_ec invert=W
Links¶
Allgemeine Informationen¶
Die Einträge im ThinkWiki zu APS, HDAPS und tp-smapi (alle 🇬🇧 )
Technische Daten zum Sensor http://www.analog.com/en/prod/0,2877,ADXL320,00.html 🇬🇧
Weitere HDAPS-basierte Anwendungen¶
Kommandos auslösen über den HDAPS-Sensor¶
Arbeitsfläche wechseln durch Antippen des Laptops: SmackPad 🇬🇧 bzw. gtollina 🇪🇸 und rotate.py 🇸🇰 für Compiz-Benutzer.
Beliebige Befehle auslösen, Programme starten, Passworteingaben ersetzen durch Klopfzeichen an den Bildschirmrand 🇬🇧 oder durch Schwenken des ganzen Laptops 🇬🇧
Programme und Programmsteuerungen¶
Spiele wie Planet Penguin Racer 🇬🇧 und Neverball 🇬🇧 über Laptop-Schwenkungen steuern: Accelerometer Game Control 🇬🇧
Einen Diebstahl-Alarm einbauen: http://www.thinkwiki.org/wiki/Script_for_theft_alarm_using_HDAPS 🇬🇧 und http://old.lukytux.net/hdaps.php 🇩🇪