USB-Stick unter Linux
 

Dieser Beitrag ist nicht nur eine Anleitung mit dem Umgang von USB-Sticks, sondern auch ein kleiner Erfahrungsbericht, was einem so alles passieren kann, wenn man einen USB-Stick kauft. Vielleicht ergeht es ja dem Ein oder Anderem ähnlich und er kann meine Erfahrungen nutzen um die Probleme, vor die derjenige oder diejenige gestellt wird, sofort zu eleminieren.

Heutzutage gilt das Motto der Computerindustrie: verkaufen, verkaufen, verkaufen - egal ob der Anwender damit zurecht kommt oder nicht. Was man auf breiter Ebene beim Anschluß eines DSL-Routers beobachten kann, setzt sich auch beim Kauf eines USB-Sticks fort: dem ahnunglosen Kunden wird mit den Schlagworten "alles easy, plug and play" ein Gerät verkauft, welches eigentlich sofort funktionieren sollte, tut es aber oft nicht und das sogar ohne das es defekt ist. Es erfordert lediglich eine Konfiguration mit der Otto-Normalverbraucher schlichtweg überfordert ist und die Telefonische Seelsorge, genannt "PC-Hotline" mit dem 1-Euro Jobber an der anderen Seite der Leitung, auch. Wie ich selbst erst neulich feststellen mußte beim Kauf eines USB-Sticks.....

Die Marke tut hier nichts zur Sache, da ich die hier beschriebenen Probleme schon bei zwei USB-Sticks unterschiedlicher Hersteller feststellen konnte. Es kommt also nicht nur bei einer Firma vor und wer weiß, vielleicht war es ja wirklich ein versehen, wenn auch aus meiner Sicht ein mächtiges.....

Der erste Kontakt

Voller Vorfreude packte ich meinen neu erworbenen USB-Stick aus und steckte ihn umgehend in den dafür vorgesehenen USB-Port, nur um mehrere Sekunden später die Augenbrauen hochzuziehen. Er wurde nicht erkannt! Aha, okay, vielleicht hat ja Linux mit dem Ding ein Problem oder sind etwa USB-Sticks unter Linux kompliziert zu verwalten? Kein Problem, hab doch Dualboot, also flugs nochmal Windows gebootet mit demselben ernüchternden Ergebnis. Es tauchte keinerlei Fenster auf "neue Hardware gefunden". Mit Windows war ich da schon wieder am Ende, da mir eine fehlende Konsole keinerlei weitere Eingriffe bot, um das Problem zu analysieren. Also hab ich gleich wieder neu gebootet - weg mit Windows, her mit Linux. Unter Linux hab ich nach dem Einstecken sogleich mit dem Befehl
# dmesg | tail
nachgesehen, ob den Linux den Stick überhaupt erkannt hat. Und wie mir das Log verraten hat, ja, er wurde erkannt, jedoch stand da irgendwas von Fehler. Wie? Fehler? Na, dann schauen wir halt mal an, wie das Ding überhaupt formatiert und partitioniert ist.

Die ersten Probleme eleminieren

Mein bevorzugtes Partitionierungstool, cfdisk, ist gleich mal mit einer Fehlermeldung abgestürzt. Hoppla, doch so schwerwiegend. Also hab ich mein Glück mit dem normalen fdisk versucht und siehe da, ein
# fdisk -l
hat mir verraten, daß der Stick zwar partitioniert ist, aber die Partitionierung Fehler enthält. Noch dazu ist das Dateisystem auf dem Stick FAT16! Wenn ich mich recht entsinne, stammt FAT16 noch aus den DOS-Zeiten und kann nicht mal über 2 GByte verwalten, geschweige denn einen Stick mit 8 GByte. Sowas ist schon ein herber Schnitzer. Also habe ich mittels fdisk die Partitionierung gelöscht und eine neue, primäre Partition erstellt, welche ich mit
# mkfs.vfat -F 32 /dev/sde
mit FAT32 formatiert habe. Und siehe da, der Stick war sofort unter Linux, wie auch unter Windows ansprechbar. Lediglich mein Autoradio mit USB-Anschluß wollte ihn (noch) nicht, aber dazu später mehr....

Das Geschwindigkeits-Problem

Das USB-Sticks nicht die schnellsten Speicher sind, müßte sich mittlerweile rumgesprochen haben. Trotz USB 2.0 liegen die durchschnittlichen Datenraten so bei 15 MByte/sec beim lesen und 10 Mbyte/sec beim schreiben. Wie gesagt, sehr durchschnittlich. Es kann natürlich USB-Sticks geben, die sogar an die 30 Mbyte/sec schaffen, was aber eher teureren Produkten vorbehalten ist. In der Regel, je teurer, desto schneller. Was aber haltet ihr von geschätzten 500 KByte/sec, das enstpricht in etwa 0,5 MByte/sec! Ohne Witz, normalerweise dauert das kopieren eines mp3-Ordners mit ca. 10 Titel gerade mal 30 Sekunden. Ich brauchte dafür
10 Minuten! Eine Recherche im Internet ergab, daß ab Windows 2000 Standard-Treiber für USB mitgeliefert werden, welche anscheinend mit manchen USB-Sticks Probleme haben, denn ein anderer Stick von mir funktioniert einwandfrei, während der neugekaufte mit seinen 0,5 MByte/sec mehr als lahmarschig ist. Unter Linux und dem Konqueror leider dasselbe Ergebnis. Sehr oft steht da dran "verzögert" beim kopieren auf den Stick und man muß viele Minuten warten. Leider konnte ich dieses Problem unter Windows und unter Linux mit dem Konqueror bis jetzt nicht in den Griff bekommen. Die einzige Möglichkeit die bei mir funktioniert hat um die volle Geschwindigkeit des Sticks zu nutzen, ist über die Konsole. Ein kleiner Schreibtest mittels
# dd if=/dev/zero of=/Verzeichnis/zum/Stick/Testdatei bs=1M count=1024
für das schreiben und
# dd if=/Verzeichnis/zum/Stick/Testdatei of=/dev/zero
für das lesen, ermittelte Werte zwischen 12 und 15 MByte/sec. Die Testdatei, die dabei erstellt wird, ist ca. 1 Gigabyte groß. Und siehe da, ohne den Konqueror, sondern lediglich mit dem simplen Konsolen-Kopier-Befehl cp, brauchte ein Ordner tatsächlich nur noch 20-30 Sekunden! Was für ein Unterschied! Und die Konsole hilft uns gleich noch bei unserem nächsten Problem:

Das Reihenfolge-Problem

Hat man einen USB-Stick mit mehreren Ordnern drauf und benutzt diesen in seinem Autoradio, gibt es anscheinend mehrere Möglichkeiten für das Abspielgerät, in welcher Reihenfolge die Titel gespielt werden. Manche Geräte verwenden die Numerierung im Titelnamen, andere wiederum die Tracknummer in den ID3-Tags. Mein Autoradio bevorzugte die 3. Methode: In der Reihenfolge, wie die Titel auf den Stick gespeichert werden, werden sie auch abgespielt und die Numerierung -ob im Namen oder im ID3-Tag- gänzlich ignoriert. Also ist es in dem Sinne nicht unerheblich in welcher Reihenfolge die Titel gespeichert werden. Erstellt man z.B. einen Ordner mit Titeln von unterschiedlichen CD´s und möchte man eine neue Reihenfolge festlegen, empfiehlt sich die Titel in der gewünschten Reihenfolge zweistellig zu Numerieren, z.B. 01-, 02-, 03-,....usw.
Mit einer simplen Pipeline kann man nun die Titel in der gewünschten Reihenfolge auf den Stick speichern lassen. Zuerst muß man den gewünschten Ordner mittels
# mkdir /Pfad/zum/Stick/Ordner
anlegen. Dann wechselt man in den Ordner mit den Ursprungsdateien.
# cd /Pfad/zum/Ursprungs/Ordner
anschließend gibt man folgendes ein:
# ls | sort | xargs -I dummy cp -v dummy /Pfad/zum/Stick/Ordner
ls listet das Verzeichnis mit Dateinamen auf und übergibt es durch das Pipe(|)-Zeichen an sort, welches die Einträge sortiert. Wiederum durch ein Pipe, werden die nun sortierten Einträge an xargs übergeben, welches mit der Option I (groß i), die Dateinamen an cp übergeben kann. Die Option -v (verbose) sorgt dafür, daß cp auf der Konsole ausgibt, was es tut. So kann man genau nachvollziehen, ob der Befehl funktioniert und die Reihenfolge korrekt eingehalten wird.

Und zu guter letzt: Der Super(Floppy)Gau

Soweit war ja alles im Grünen. Mein Stick konnte problemlos unter Linux beschrieben werden, doch was war das? Ich steckte ihn ins Autoradio und das Autoradio erkannte ihn nicht? Häh? Aber ich hab doch einen zweiten Stick der hervorragend funktioniert (nebenbei bemerkt, das hat der Zweite schon von Anfang an, ohne daß ich ihn partitionieren und formatieren mußte). Etwa eine Hardware-Inkompatibilität? So leicht wollte ich nicht aufgeben. Also hab ich nochmal beide Sticks näher angeschaut. Partitionierung? Identisch. Ordnerstruktur? Auch genau gleich. Formatierung? Bei beiden FAT32, zumindest dem Anschein nach......
Nach wiederum ein wenig Recherche im Internet, stellte ich fest, es gibt zwei unterschiedliche FAT32 Formatierungen. Die "normale" Formatierung mit MBR wie bei einer Festplatte und das sogenannte "Superfloppy" Format. Die Lösung für das Abspielproblem war dann doch schnell gefunden: Mein Autoradio wollte dieses Superfloppy-Format, welches keine eigentliche Partitionierung beinhaltet, genauer gesagt, besteht es lediglich aus einer einzigen, primären Partition und beherrscht keine Mehrfach-Partitionierung wie eine normale Festplatte. Unter Linux kürzt sich dadurch das Device von /dev/sde1 auf /dev/sde, da es keine weiteren Partitionen gibt. Unter Windows werden USB-Sticks als Wechsel-Daten-Träger ähnlich wie Floppys angesprochen und daher von Haus aus im Superfloppy-Format formatiert. Dort gibt es gar keine andere Möglichkeit mit den Hauseigenen Windows-Bordmitteln. Lediglich mit Formatierungs-Software von Drittherstellern kann man eine Festplatten-ähnliche Formatierung erstellen. Unter Linux hat man da die Wahl und ich hatte mich leider zuerst für das falsche Entschieden. Mein erster Formatierungsbefehl
# mkfs.vfat -F 32 /dev/sde
formatierte "normal", also wie Festplatte. Was fehlte war die Option -I (großes i)
# mkfs.vfat -FI 32 /dev/sde
und schon wird im Superfloppy-Format geschrieben und der Stick funktioniert einwandfrei in meinem Autoradio.

Wie man sieht, muten die Hersteller dem Otto-Normalverbraucher ganz schönes Hintergrundwissen zu oder sind sie einfach nur scharf drauf, den Stick bald wiederzubekommen? Vermutlich hätten ihn die meisten schon nach dem ersten Einstecken zum Händler zurück gebracht, aber vielleicht hilft ja mein kleiner Beitrag solchen Ärger zu vermeiden.....