Ist die Image-Datei für die CD in Ordnung und die Diskette noch ganz? Frau Dr. Linux hilft beim Prüfen.
Dr. Linux
Komplizierte Organismen, wie Linux-Systeme es nun einmal sind, haben so ihre ganz eigenen Wehwehchen. Dr. Linux beobachtet die Patienten in den Linux-Newsgruppen, stellt an dieser Stelle Rezepte für aktuelle Probleme aus und alternative Heilmethoden vor.
Bevor ich meine aus dem Internet heruntergeladenen ISOs auf eine CD brenne, möchte ich überprüfen, ob die Dateien fehlerfrei übertragen wurden. Welches Linux-Programm eignet sich für diesen Zweck?
Dr. Linux: Eine Möglichkeit, die Fehlerfreiheit eines ISO-Images zu prüfen, ist das Mounten dieser Datei. Funktioniert dies, so können Sie davon ausgehen, dass es richtig übertragen wurde, aber eine 100%ige Garantie auf Fehlerlosigkeit ist das nicht.
Über sogenannte Loop-Devices lassen sich Dateien vom Superuser root wie eine Festplatte oder Diskette in den Verzeichnisbaum einhängen. Diesem Zweck dient die mount-Option -o loop. Passen Sie die Syntax im folgendem Beispiel Ihren Verzeichnissen entsprechend an!
perle@linux:~/iso> su root Password: Ihr_Root_Passwort linux:/home/perle/iso # mount -o loop -t iso9660 /hier/liegt/mein.iso /mnt/
SuSE-Anwender mounten lieber nach /media oder einem seiner Unterverzeichnisse:
mount -o loop -t iso9660 /pfad/zu/meinem.iso /media/
Unterhalb des als letztes Argument angegebenen Verzeichnisses, des Mountpoints, finden Sie nun den kompletten Inhalt des ISO-Images wieder – so, wie Sie ihn später auf der gebrannten, gemounteten CD sehen werden. Nach dem Prüfen der darin befindlichen Dateien hängen Sie das Image mit umount mountpoint wieder aus dem Verzeichnisbaum aus und legen den Superuser-Status mit exit ab.
Wer ganz sicher wissen möchte, ob eine ISO-Datei fehlerfrei auf den heimischen Computer übertragen wurde, vergleicht die Checksumme des Original-Files mit der Checksumme der übertragenen Datei. Dabei handelt es sich um einen (oft auch Prüfsumme genannten) mit einem Algorithmus erzeugten Wert, der aus der Summe der Bits, die eine Datei enthält, errechnet wird.
Es gibt verschiedene Programme, die Prüfsummen erstellen, z. B. sum oder cksum. Da sie mit unterschiedlichen Algorithmen arbeiten, sind die damit erstellten Prüfsummen nicht kompatibel, das heißt, Sie müssen Ihre Prüfsumme mit dem Tool erzeugen, mit dem die Checksumme der Originaldatei berechnet wurde.
Aktuell kommt für Download-Dateien fast durchgängig der MD5-Algorithmus [1] zum Einsatz. Das entsprechende Programm md5sum gehört auf allen bekannten Linux-Distributionen zur Standardausstattung. Es erzeugt aus jeder Datei einen 128 Bit großen Wert. Typisch ist die Erscheinungsform dieser Prüfsummen, die auf FTP- oder Web-Servern meist in Dateien abgelegt werden, deren Endung .md5 oder .md5sum lautet (Abbildung 1):
ddee9456051785ebdd92f3d28a033e61 gentoo-ix86-1.2.iso
MD5-Summen-Files sind damit – im Gegensatz zu ISO-Images – nur wenige Byte groß und werden sinnvollerweise im gleichen Verzeichnis gespeichert wie die zugehörige Datei. Gelegentlich fassen Administratoren mehrere Prüfsummen in einer Datei zusammen oder fügen sie in Readme.txt– o. ä. Dateien ein.
Es ist kaum möglich, aus zwei verschiedenen Dateien mit md5sum ein und dieselbe Prüfsumme zu generieren. Geringste Veränderungen einer Datei, die zum Beispiel durch Fehler bei der Übertragung entstehen, führen sofort zu einer veränderten Prüfsumme.
Die Einmaligkeit dieser Checksummen, oft auch als Fingerabdruck (english: “fingerprint”) bezeichnet, wird von Administratoren unter anderem dazu benutzt, um Veränderungen in Systemen, zum Beispiel durch eingeschleuste oder ausgetauschte Programme, zu enttarnen.
Doch wie überprüft man die heruntergeladene Checksumme nun? Sehen wir uns den Vorgang anhand einer ISO-Datei von Gentoo Linux[2] an:
perle@linux:~/iso> ls -l insgesamt 16540 -rw-r--r-- 1 perle users 16908288 Jun 23 13:48 gentoo-ix86-1.2.iso -rw-r--r-- 1 perle users 54 Jun 23 13:49 gentoo-ix86-1.2.iso.md5
Im Arbeitsverzeichnis (hier: /iso) liegt das heruntergeladene ISO-Image samt zugehöriger MD5-Datei. Übergeben Sie dem Programm /usr/bin/md5sum nun mit der Option -c (“check”) die Prüfsummen-Datei. Wenn alles gut gegangen ist, erhalten Sie ein schlichtes ok:
perle@linux:~/iso> md5sum -c gentoo-ix86-1.2.iso.md5 gentoo-ix86-1.2.iso: Ok
Verlief der Test negativ, gibt md5sum eine Warnmeldung aus:
perle@linux:~/iso> md5sum -c gentoo-ix86-1.2.iso.md5 gentoo-ix86-1.2.iso: Fehler md5sum: Warnung: 1 von 1 berechneten Prüfsumme paßten NICHT
Wenn Sie den MD5-Wert in der Readme-Datei vorfinden und daher zum Vergleich selber eine Prüfsumme erzeugen müssen, übergeben Sie den Namen der ISO-Datei an md5sum und vergleichen das Ergebnis mit eigenen Augen:
perle@linux:~/iso> md5sum gentoo-ix86-1.2.iso ddee9456051785ebdd92f3d28a033e61 gentoo-ix86-1.2.iso
Sollte Ihnen Ihr Distributor md5sum vorenthalten, finden Sie es auf [4], wenn Sie das Suchwort md5sum eingeben. Das Programm gehört zum Paket der Text utilities. Weiterführende Informationen stellt das GNU-Projekt auf [5] bereit.
Intakt?
Ich habe einige ältere Disketten, die ich als “Ein-Disketten-Linux” oder Bootdisketten weiter einsetzen möchte. Wie kann ich sicherstellen, dass die Datenträger keine defekten Blöcke aufweisen?
Dr. Linux: Zum Testen auf sogenannte Badblocks wird häufig das gleichnamige Programm /sbin/badblocks verwendet. Es gehört zu einer Reihe von Programmen, die für die Prüfung, Pflege und Erstellung von Dateisystemen auf (fast) jedem Linux-System zum Einsatz kommen. Wartungsprogramme wie e2fsck können Ausgabedateien von badblocks weiterverarbeiten. Da man heutzutage – von absurden Ausnahmefällen mal abgesehen – sicherlich nur Disketten weiterverwenden möchte, die keine Badblocks aufweisen, brauchen wir uns an dieser Stelle nicht mit Reparaturversuchen aufhalten.
Um eine Diskette mit badblocks zu testen, darf man sie nicht in den Linux-Verzeichnisbaum einhängen. Da für den Zugriff auf das Laufwerk die Rechte des Superusers benötigt werden, stellt man dem badblocks-Aufruf den Befehl su mit der Option -c voran. Diese sorgt dafür, dass ausschließlich der nachfolgende, in Anführungszeichen gesetzte Befehl mit root-Rechten ausgeführt wird.
Mit der badblocks-Option -s (“show”, “zeigen”) lässt sich beobachten, an welchem Block das Programm gerade arbeitet; das Flag -v (“verbose”, “wortreich”) teilt Ihnen mit, was das Programm gerade tut. Aber auch ohne diese beiden Optionen sind Sie auf der sicheren Seite, denn werden Badblocks gefunden, erhalten Sie eine Ausgabe.
Nach dem Befehl mit seinen Optionen sollte laut Manpage die zu prüfende Blockzahl folgen, doch da deren Erkennung bei Floppy-Laufwerken über die Geräte-Datei erfolgt, kann man sie weglassen:
perle@linux:~> su -c "/sbin/badblocks -s -v /dev/fd0" Password:Ihr_Root_Passwort Checking for bad blocks in read-only mode >From block 0 to 1440 Checking for bad blocks (read-only test): 16/ 1440
Im Beispiel testet das Programm gerade Block 16 von 1440. Bei einem negativen Ergebnis, also keinen defekten Blöcken, meldet Ihnen das Programm (sofern mit der Option -v aufgerufen) Durchlauf abgeschlossen, 0 Badblocks gefunden, auf Englisch:
Pass completed, 0 bad blocks found.
Bei positivem Befund werden die Badblocks aufgelistet, in Listing 1 die Blöcke 12-15. Entsprechend meldet das Programm: Durchlauf abgeschlossen, 4 Badblocks gefunden.
Listing 1
1,44-MB-Diskette mit fehlerhaften Blöcken
perle@linux:~> su -c "/sbin/badblocks -s -v /dev/fd0" Password:Ihr_Root_Passwort Checking for bad blocks in read-only mode >From block 0 to 1440 Checking for bad blocks (read-only test): 12 0/ 1440 13 13/ 1440 14 15 15/ 1440 done Pass completed, 4 bad blocks found.
Disketten-Format-Odysssee
Meine Disketten haben eine ganze Menge erlebt – nehmen wir all die Versuche, die Kapazität durch verschiedene Formatierungen zu erhöhen. Danach zeigt badblocks immer eine immense Anzahl fehlerhafter Blöcke an, bei der normalen 1440-kB-Formatierung jedoch nicht.
Dr. Linux Wenn die angegebene Geräte-Datei nicht zur Low-Level-Formatierung der Diskette passt, zeigt badblocks Kauderwelsch an. Davon abgesehen gefährdet die Zuweisung einer falschen Geräte-Datei auch Ihre Hardware. Probieren Sie daher keine Device-Files aus, für die Ihre Hardware nicht geeignet ist!
Die verschiedenen Disketten-Laufwerke lassen sich über Geräte-Dateien im Verzeichnis /dev ansprechen. Sie tragen allesamt die Major-Device-Nummer 2. Die Minor-Device-Nummer steht bei diesem Hardware-Typ u. a. für ein bestimmtes Disketten-Format (vgl. Kasten 1). Wenn Sie das Verzeichnis /dev auflisten, finden Sie statt der “üblichen” Größenangabe zur jeweiligen Datei die Major- und Minor-Nummern der Geräte. Listing 2 zeigt ein Beispiel, das aber keinesfalls mit den auf Ihrem System angelegten Gerätedateien übereinstimmen muss.
Listing 2
Major- und Minor-Nummern der Floppy-Devices
perle@maxi:~> ls -al /dev | less […] brw-rw—- 1 root disk 2, 0 Jun 6 17:13 fd0 brw-rw—- 1 root disk 2, 36 Sep 24 2001 fd0CompaQ brw-r--r-- 1 root root 2, 60 Jun 28 14:28 fd0H1722 brw-rw—- 1 root disk 2, 4 Sep 24 2001 fd0d360 brw-rw—- 1 root disk 2, 8 Sep 24 2001 fd0h1200 […]
Nur mit diesen Informationen erkennt der Kernel beim Öffnen einer Floppy das richtige Format und kann es auf Anfragen von Programmen hin weitergeben.
Wie schief eine Untersuchung durch badblocks laufen kann, wenn bei der Angabe der Geräte-Datei ein Fehler gemacht wird, lässt sich am Beispiel leicht verfolgen: Eine Diskette bekommt mit dem Programm fdformat eine Low-Level-Formatierung mit einer Kapazität von 1722 kb verpasst:
perle@linux:~> su -c "fdformat /dev/fd0H1722" Password:Ihr_Root_Passwort Doppelseitig, 82 Spuren, 21 Sektoren/Spur, Totale Kapazität: 1722kB. Formatieren … Beendet Überprüfen … Beendet
Man entfernt die Floppy aus dem Laufwerk und schiebt sie erneut ein, damit der Kernel den Eindruck bekommt, er habe es mit einem anderen Datenträger zu tun. Bei der Prüfung durch badblocks spricht man das Gerät falsch als /dev/fd0 an, die Anzahl der zu bearbeitenden Blöcke wird aber richtig angegeben.
Das Ergebnis: 282 Badblocks kommen zum Vorschein, und zwar die Blöcke 1440 bis 1721. Jene also, die die Kapazität von /dev/fd0 (1440 Blöcke bei High-Density-Disketten) überschreiten (Listing 3).
Listing 3
Scheinbare Badblocks bei falschem Floppy-Device
perle@linux:~> su -c "/sbin/badblocks -s -v /dev/fd0 1722" Password: Ihr_Root_Passwort Checking for bad blocks in read-only mode >From block 0 to 1722 Checking for bad blocks (read-only test): 1440 1408/ 1722 1441 1442 […] 1720 1721 done Pass completed, 282 bad blocks found.
Bei der Wahl der richtigen Geräte-Datei besteht die Diskette die Prüfung hingegen erwartungsgemäß, wie Listing 4 zeigt.
Listing 4
Badblocks-Prüfung einer 1722-kB-Diskette
perle@linux:~> su -c "/sbin/badblocks -v /dev/fd0H1722" Password:Ihr_Root_Passwort Checking for bad blocks in read-only mode >From block 0 to 1722 Pass completed, 0 bad blocks found.
Kasten 1: Welche Disketten-Devices gibt es?
Die Manpage zu den fd-(“Floppy Disk”-)Devices erklärt über 30 verschiedene Geräte-Dateien, über die Disketten-Laufwerke angesprochen werden können, darunter auch exotische 5,25-Zoll-Laufwerke. Aus der Vielfalt der Geräte-Dateien geben wir an dieser Stelle nur einen kleinen Ausschnitt der Möglichkeiten wieder:
[…] Im Folgenden steht n für die Laufwerksnummer: 0 für das erste Laufwerk, 1 für das zweite usw. […] 3.5-Zoll-High-Density-Devices: Name Kapaz. Zyl. Sekt. Köpfe Minor-Basis # ———————————————————– fdnH360 360K 40 9 2 12 fdnH720 720K 80 9 2 16 fdnH820 820K 82 10 2 52 fdnH830 830K 83 10 2 68 fdnH1440 1440K 80 18 2 28 fdnH1600 1600K 80 20 2 124 fdnH1680 1680K 80 21 2 44 fdnH1722 1722K 82 21 2 60 fdnH1743 1743K 83 21 2 76 fdnH1760 1760K 80 22 2 96 fdnH1840 1840K 80 23 2 116 fdnH1920 1920K 80 24 2 100 […]
Glossar
-
ISOs
-
Populäre Ausdrucksweise für Dateien, die ein Dateisystem entsprechend dem System-unabhängigen ISO-9660-Standard enthalten, mit dem CD-ROMs beschrieben werden.
-
Mounten
-
Das Einbinden von Datenträgern in den Linux-Dateibaum geschieht mit dem root vorbehaltenen mount-Befehl. Ehe man eine gemountete CD oder Diskette wieder aus dem Laufwerk entnehmen kann, ist ein umount-Befehl zwingend nötig. Auch Festplattenpartitionen lassen sich so dem Zugriff unter Linux wieder entziehen. In der Datei /etc/fstab kann der System-Verwalter jedoch auch festlegen, dass unprivilegierte Benutzer bestimmte Datenträger wie CD-ROMs ebenfalls ein- und aushängen dürfen.
-
su
-
Mit dem Befehl “su Benutzer-Name” nehmen Sie auf einer Shell die Identität und die Rechte des gewählten Anwenders an. Nach Eingabe des richtigen Passworts finden Sie sich zum Beispiel als Superuser im aktuellen Verzeichnis wieder und können mit root-Rechten weiterarbeiten.
-
e2fsck
-
Dieses Kommandozeilen-Tool prüft und repariert bei Bedarf Extended-2-Dateisysteme (sofern dies noch möglich ist). Dieser Filesystem-Typ kam bislang standardmäßig auf Linux-Festplattenpartitionen zum Einsatz, inzwischen setzen viele Distributoren auf modernere Dateisysteme wie den Nachfolger Ext3 oder ReiserFS.
-
Low-Level-Formatierung
-
Dabei wird auf der Diskette kein Dateisystem (minix, msdos) eingerichtet, sondern nur die Spuren und Sektoren angelegt. Solche “roh” formatierten Disketten können von tar oder dd beschrieben werden.
-
Device-Nummer
-
Greift ein Programm auf eine Geräte-Datei zu, wird dem Kernel diese Anforderung in Form zweier Gerätenummern übergeben. Der Major-Wert bezieht sich im Allgemeinen auf einen bestimmten Kernel-Treiber, der Minor-Wert auf das Gerät, auf das jener zugreifen soll. Deshalb haben zum Beispiel alle Geräte-Dateien für die serielle Schnittstelle den gleichen Major-Wert, aber unterschiedliche Minor-Nummern. Kurz gefasst benutzt der Kernel die Major-Nummer, um die Anforderung dem zuständigen Treiber zu übergeben, dieser wiederum braucht die Minor-Nummer, um festzustellen, welches Gerät er benutzen soll. Es gibt ein paar Ausnahmen, aber über die stolpert ein normalsterblicher Linux-Nutzer im Allgemeinen nicht.
Infos
[1] RFC 1321: http://www.fourmilab.ch/md5/rfc1321.html
[2] Gentoo Linux: http://gentoo.org/
[3] Knoppix-Download: http://download.linuxtag.org/knoppix/
[4] GNU-Software: http://www.gnu.org/directory/
[5] Text-Utilities: http://www.gnu.org/software/textutils/textutils.html
![Abbildung 1: Knoppix-ISO-Dateien [3] und ihre md5sum-Dateien](https://www.linux-community.de/wp-content/uploads/2010/10/Abbildung-1-413-300x300.jpg)




