Eine Tour durch die Debugging- und Rettungs-Tools in Knoppix

Zu Hilfe!

Geht bei einem System-Crash das Dateisystem kaputt, ist guter Rat teuer. Zumindest, wenn man Recovery-Experten zurate zieht. Der erfahrene Admin weiß sich selbst zu helfen, zum Beispiel mit den Tools auf einer Knoppix-DVD.
Strom sparender Computereinsatz hilft nicht zuletzt auch Kosten zu senken. ADMIN 02/2011 geht der Frage nach, was Administratoren tun können, damit ihre ... (mehr)

Viele der angeblich automatisch funktionierenden Reparatur-Tools richten mehr Schaden an, indem sie krampfhaft versuchen, teilweise zerstörte Daten wiederherzustellen. Weil solche Programme nichts darüber wissen, wie es zum ursprünglichen Problem gekommen ist, gehen sie leicht von falschen Voraussetzungen aus, wenn sie an die Arbeit gehen.

Deshalb ziehen erfahrene Administratoren es vor, zur Datenrettung einfachere Tools zu verwenden, deren Auswirkungen sie besser überblicken können. Auf jeder Knoppix-DVD befinden sich eine ganze Reihe solcher Programme, die Admins in ihrer täglichen Arbeit verwenden können, um Probleme zu diagnostizieren und Daten zu retten. Weil es sich bei Knoppix um eine Live-DVD handelt, erfüllt es bereits mehrere wesentliche Voraussetzungen für ein Rettungssystem.

Zum einen erlaubt es überhaupt ein System zu booten, selbst wenn die Boot-Festplatte es nicht mehr tut. Zum anderen verhindert der Einsatz von Knoppix als laufendes Betriebssystem, dass weitere Daten auf eine beschädigte Festplatte geschrieben werden, womit das Rettungsvorhaben sehr schnell zum Scheitern verurteilt wäre. Weil Knoppix auch das Windows-Dateisystem NTFS unterstützt, eignet es sich gleichermaßen zur Rettung von Windows- wie Linux-Systemen.

Das virtuelle Procfs-Dateisystem, das normalerweise unter »/proc« gemountet ist, enthält nicht nur Informationen über alle laufenden Prozesse (daher sein Name), sondern auch über Kernel-Subsysteme, Netzwerke und Dateisysteme. Schon mit den einfachsten Unix-Tools wie »cat« und »echo« lassen sich Werte auslesen und setzen. Tabelle 1 zeigt einige Beispiele für im Procfs enthaltene Informationen. Listing 1 zeigt, wie man die Interrupts eines Systems ausliest.

Listing 1

cat /proc/interrupts

 

Auch das Sysfs, das üblicherweise unter »/sys« gemountet ist, führt Laufzeitinformationen des Kernels, in diesem Fall der Hardware-Konfiguration eines Systems. Der folgende Befehl liest aus dem Sysfs die eingebauten Block-Devices (Festplatten) aus:

cd /sys/block; for i in sd*; do echo -n "$i: "; cat $i/device/model; done

Über das Sysfs lässt sich beispielsweise die LED ausschalten, die anzeigt, ob das Touchpad aktiv ist:

echo 0 > /sys/devices/platform/eeepc/leds/eeepc::touchpad/brightness

Das Sysfs kann genauso durchsucht werden wie ein konventionelles Dateisystem. Wer nach einem spezifischen Feature suchen möchte, dessen Namen bekannt ist, kann dazu einfach den Find-Befehl verwenden, zum Beispiel für den Schalter »rfkill« , der die Wireless-Antenne abschaltet:

find /sys -iname \*rfkill\*

Einige – aber nicht alle – WLAN-Chipsets lassen sich aktivieren, indem man den Wert 1 in die entsprechende Rfkill-Datei schreibt. Umgekehrt schaltet eine 0 sie aus. Das kann sich als praktisch erweisen, wenn die dazu gehörige Funktionstaste nicht mehr funktioniert.

Geladene Module und ihre Parameter finden sich in »/sys/module/modulename« , wo Sie gegebenenfalls die Parameter überprüfen können, die beim automatischen Laden eines Moduls verwendet wurden.

Aus dem Procs und dem Sysfs zu lesen erfordert normalerweise keine Root-Rechte (außer es geht um sensible Daten wie Krypto-Schlüssel und Ähnliches), zum Schreiben sind sie allerdings nötig. Ein Befehl wie »sudo echo -n 1 > /sys/devices/platform/eeepc/cardr« (der den internen Card-Reader aktiviert) wird wegen der Umleitung durch »>« nicht funktionieren. Verwenden Sie stattdessen besser »echo -n 1 | sudo tee /sys/devices/platform/eeepc/cardr« , was die Ausgabe des Echo-Befehls dem Tee-Kommando übergibt, das mit Root-Rechten läuft.

Die beiden bekannten Befehle »ps« und »lspci« stellen bequeme textuelle Benutzer-Interfaces zur Verfügung, um die Informationen aus Procfs und Sysfs anzuzeigen. So zeigt

lspci -v -k

die vorhandene Hardware und die dazu gehörigen Kernel-Module an.

Der Befehl »dmesg« verrät die Reihenfolge, in der die Hardware vom Kernel erkannt und initialisiert wurde.

Die Ausgabe enthält möglicherweise auch Fehlermeldungen, die ansonsten einfach untergehen. So sind manche Festplatten-Fehler zuerst mit Dmesg zu erkennen, wie das Beispiel in Listing 2 zeigt. Der Lesefehler bei der Datei »test.data« entpuppt sich bei »dmesg« als physischer Lesefehler der Festplatte.

Listing 2

Lesefehler in dmesg

 

Synchron

Das Rsync-Kommando ist eine gute Wahl, wenn es darum geht Backups anzulegen, komplexe Verzeichnisbäume zu kopieren und dabei noch übers Netzwerk sichere SSH-Verbindungen zu verwenden. Der Befehl

rsync -HavP 
<!-- START: including template: design/standard/templates/content/datatype/view/ezxmltags/emphasize.tpl (design:content/datatype/view/ezxmltags/emphasize.tpl) -->
Original Kopie
<!-- STOP: including template: design/standard/templates/content/datatype/view/ezxmltags/emphasize.tpl (design:content/datatype/view/ezxmltags/emphasize.tpl) -->

legt eine identische Kopie einer Datei oder eines Verzeichnisses an und schließt dabei dank »-a« Dateitypen, Änderungsdatum und Zugriffsrechte ein.

Die Option »-H« sorgt dafür, dass Hard-Links beim Kopieren erhalten bleiben, »-v« und »-P« zeigen den Fortschritt an. Bricht der Vorgang ab, macht Rsync beim nächsten Aufruf an der richtigen Stelle weiter und verarbeitet nur die bisher nicht kopierten Daten. Mit einem Aufruf der Art » Benutzer @ Rechner : Verzeichnis « für Quelle oder Ziel verwendet Rsync automatisch SSH zur Übertragung.

Blockweise

Sowohl »dd« (das Standard-Unix-Kommando) wie auch »dd_rescue« (ein spezialisiertes Derivat des Ahnen) kopieren Daten blockweise. Der Hauptunterschied liegt, abgesehen von der unterschiedlichen Aufrufsyntax, darin, dass »dd_rescue« auftretende Lesefehler überspringen kann und die nicht lesbaren Daten mit Nullen ersetzt, sodass die Länge kaputter Dateien erhalten bleibt. Um eine fehlerfreie Festplatte in eine Image-Datei zu kopieren, verwenden Sie den Befehl:

dd if=/dev/sda of=sda.img bs=1M

Normalerweise beendet sich »dd« bei Fehlern oder nimmt jedenfalls mit »conf=noerror« Änderungen an den Daten vor. Besser geht das deshalb mit »dd_rescue« , wie Listing 3 zeigt.

Listing 3

Kopieren einer fehlerhaften Festplatte

 

Die resultierende Image-Datei »sdb.img« enthält alle von »/dev/sdb« noch lesbaren Informationen. Die fehlerhaften Bytes ersetzt das Tool durch Nullen, die Image-Datei behält so die Originalgröße bei und lässt sich im besten Fall auch per Loopback mounten.

In manchen Fällen empfiehlt sich die Option »-r« , die »dd_rescue« anweist, die Festplatten von hinten zu lesen, also mit dem letzten Block zu beginnen. Wenn die Partitionstabelle noch in Ordnung ist und die vorhandenen Dateisysteme richtig beschreibt, können Sie auch statt der kompletten Disk auch einfach eine Partition kopieren. Dazu ersetzen Sie im Aufruf von Listing 3 »/dev/sdb« beispielsweise durch »/dev/sdb3« . Wollen Sie der ohnehin schon kaputten Platte überflüssige Bewegungen ersparen, können Sie mit »-s Startposition« das Tool anweisen, an einer bestimmten Position zu beginnen.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023