ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

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.

Wiki/Icons/hd.png Seit 2003 verfügen viele ThinkPad-Modelle ü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. Dieser aktive Festplattenschutz, das Harddrive Active Protection System (HDAPS) 🇬🇧 , lässt sich auch unter Linux aktivieren. Einen ähnlichen Sensor haben Notebooks von Acer ("GraviSense") und Apple ("Sudden Motion Sensor"), HDAPS funktioniert aber nur mit ThinkPads von IBM/Lenovo (nicht jedoch mit der SL-Baureihe).

Installation

Als Voraussetzung sind für alle Ubuntu-Versionen die Pakete

  • module-assistant

  • build-essential

zu installieren [1].

Die restlichen Installationsschritte sind:

  • Gepatchten Kernel bauen (nur Ubuntu 8.04, 8.10)

  • Kernelmodul hdaps installieren (alle Ubuntu-Versionen)

  • Überwachungsdämon hdapsd installieren (alle Ubuntu-Versionen)

Hinweis:

Es ist von Vorteil die Installations- und Konfigurationsschritte genau in der beschriebenen Reihenfolge durchzuführen. Installiert man z.B. alle in diesem Artikel angegebenen Pakete in einem Schritt, so zieht der hdapsd zunächst ein veraltetes Kernelmodul hdaps an.

Gepatchten Kernel bauen (nur Ubuntu 8.04, 8.10)

Die bis einschließlich Ubuntu 8.10 Intrepid Ibex verwendeten Kernel verfügen 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.

Hinweis:

Ab Ubuntu 9.04 Jaunty Jackalope ist es nicht mehr nötig, einen gepatchten Kernel zu bauen, da ab Kernelversion 2.6.28 der benötigte Patch bereits integriert ist.

Kernel patchen und kompilieren

Zunächst werden wie in Kernel (Abschnitt „Kernelquellen-herunterladen“) beschrieben die Kernelquellen heruntergeladen und entpackt. Danach ist von hier 🇬🇧 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!

Kernelmodul hdaps installieren (alle Ubuntu-Versionen)

Der in den offiziellen Kerneln enthaltene Treiber hdaps.ko ist nicht allzu stabil, weshalb selbst die Entwickler dieses Treibers empfehlen, eine gepatchte Version aus dem Projekt tp-smapi 🇬🇧 zu verwenden.

Auswahl des passenden Pakets

Benötigt wird das Paket

  • tp-smapi-source

Eine für den Festplattenschutz taugliche Fassung des Pakets findet sich für

  • Ubuntu 9.10

  • Ubuntu 8.04

in den offiziellen Ubuntu-Quellen.

Die in den offiziellen Quellen von

  • Ubuntu 9.04

  • Ubuntu 8.10

enthaltenen Pakete funktionieren entweder gar nicht (9.04) oder führen zu einem hohen Stromverbrauch (8.10). Aus diesem Grund empfiehlt sich die Verwendung der Version aus Ubuntu 9.10. Zur Vereinfachung dieser Anleitung wurden passende Backport-Pakete im PPA 🇬🇧 des Entwicklers bereitgestellt, das als Fremdquelle einzubinden ist.

Um aus der Fremdquelle zu installieren, muss man unabhängig von der Ubuntu-Version die folgende Paketquelle freischalten:

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.

deb http://ppa.launchpad.net/sargentd/thinkpad-backports/ubuntu jaunty intrepid main

Um die Fremdquelle zu authentifizieren, muss man den Signierungsschlüssel mit folgendem Befehl importieren:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1E5F9737  

Modul kompilieren und installieren

Nach der Installation des Pakets 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 

Hinweis:

Der vorstehende Schritt sudo m-a a-i tp-smapi ist nach jedem Update des Kernels auf eine höhere Version zu wiederholen.

Modulaufruf konfigurieren (nur Ubuntu 8.04)

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

Überwachungsdämon hdapsd installieren (alle Ubuntu-Versionen)

Für den Dämon ist das Paket

  • hdapsd

zu installieren. Um eine zum Kernelmodul passende Version zu erhalten, sind jeweils die selben wie beim Kernelmodul genannten Paketquellen zu verwenden.

Konfiguration

Die Konfiguration für den Dämon befindet sich in der Datei /etc/default/hdapsd, 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
SENSITIVITY=15    # höhere Werte bedeuten geringere Empfindlichkeit und umgekehrt
FORCEENABLE="no"  # hdaps für die Platte erzwingen mit "yes"
OPTIONS=""        # weitere Optionen

Hinweis:

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). 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  

bzw. für Ubuntu 8.04 mit

sudo hdapsd -d sda -s 15 

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:

  1. Es laufen mehrere Instanzen des Dämons, die sich gegenseitig in die Quere kommen

  2. 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 -9 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, daß das Modul hdaps nicht geladen werden konnte. Eine mögliche Ursache ist, daß irrtümlich der Abschnitt Modulaufruf konfigurieren (nur 8.04) 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 (die SL-Reihe wird nicht unterstützt)

  • Die Hardware wurde nicht richtig erkannt

Im zweiten Fall hilft ein Kaltstart, d.h. Herunterfahren/Ausschalten und wieder Einschalten des Notebooks.

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, daß 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

Unter Gnome

Gnome-Benutzern steht das gnome-hdaps-applet zur Verfügung. Es muß aus dem Quellcode kompiliert werden, dazu wird folgendes Paket benötigt [1]:

  • libpanel-applet2-dev

Der Quellcode des Applet kann hier 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

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

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].

Unter Xfce

Seit Ubuntu 9.10 gibt es auch für Xfce ein Plugin zum Visualisieren des HDAPS-Status. Dazu installiert man einfach das Paket

  • xfce4-hdaps

und fügt danach das Applet dem Panel hinzu.

Visualisierungen der Raumlage

hdaps-gl.png Es bestehen verschiedene kleine Anwendungen, die die aktuelle Raumlage des Laptops anzeigen können. Empfohlen sei hier hdaps-gl 🇬🇧.

Bis Ubuntu 9.04 ist das Programm über die offiziellen Ubuntu-Quellen erhältlich. Folgendes Paket muss dazu installiert werden:

  • 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 (beide 🇬🇧). 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

Allgemeine Informationen

Weitere HDAPS-basierte Anwendungen

Kommandos auslösen über den HDAPS-Sensor

Programme und Programmsteuerungen


Diese Revision wurde am 28. März 2010 05:44 von linrunner erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Hardware, System, Notebook, Festplatte