SD-Card-Probleme am Raspberry Pi
Seit einiger Zeit habe ich das Problem, dass beim Pi meine mmc-Block-Devices (also sowohl /boot-, /- als auch swap-Partition) plötzlich verschwinden. Manchmal schon während des Bootens, manchmal erst nach ein paar Minuten. Als Quick Fix habe ich Root und Swap auf einen USB-Stick gelegt. Den bräuchte ich nur eigentlich mal für was anderes, schließlich ist der eigentlich zum Datentransport gedacht. Außerdem blockiert der einen USB-Port, der eigentlich für Maus/Tastatur vorgesehen ist. (Am zweiten Port hängt eine externe Platte. Ja, ich könnte die Root-Partition auch da hin legen, aber eigentlich ist die Platte nur für Daten gedacht, soll also bei Nicht-Gebrauch auch mal schlafen gehen; außerdem ist das Ganze ja auch nur ein Provisorium, bis die SD-Karte wieder geht.) Das größte Problem an diesem Setup ist, dass - wenn /boot nicht sauber geunmountet wurde - der Pi den Boot-Vorgang verweigert und einfach gar nichts tut.
Heute mal einige Zeit mit Debugging verbracht: Eine andere, ältere SD-Karte funktioniert problemlos, hat aber leider nur 2GB, also ein klein bisschen wenig für meine Zwecke. Aber der Card-Reader am Pi funktioniert offenbar grundsätzlich. Außerdem funktioniert die 8GB-Karte, die ich eigentlich verwende, im Notebook und in der Kamera ebenfalls ganz hervorragend und einwandfrei, auch über längere Zeit hinweg und wenn ich kräftig drauf hin und her kopiere.
Also mal ins Log geschaut. Natürlich kann er kein Log mehr nach /var/log schreiben, wenn die Root-Partition plötzlich verschwindet, und die ganze Zeit drauf gucken und warten, dass was passiert, das ist auch ein wenig Zeitverschwendung. Also wieder vom USB-Stick gestartet und mal ein wenig Karte ein- und ausgesteckt. Dabei kamen dann hauptsächliche solche Meldungen rum:
Und dann fiel es mir wie Schuppen aus den Augen: Es handelt sich um eine "kleine" micro-SD-Karte, die in einem Adapter steckt. Und diese billigen Plastik-Adapter sind eine unmessbar kleine Winzigkeit dünner als eine "echte" SD-Karte, was ich bereits bei meinem neuen Card-Reader festgestellt hatte, den ich mir wegen der micro-SDXC-Karte in der neuen Kamera angeschafft hatte. Auch da hatte ich das Problem, dass die Sache etwas wackelig ist, und mit der Zeit, je öfter man die Karte ein und aus steckt, wird das immer schlimmer, weil der Einschub, der ja auch nur aus Plastik ist, nicht genug Gegendruck aufbaut, um die Kontakte von Karte und Slot aneinander zu drücken. Klassischer Fall von Wackelkontakt mit schwer reproduzierbaren Fehlern!
Also ein Blatt Papier genommen, ein paar mal gefaltet und doppelt gelegt und mit in den Card-Slot eingefädelt: Et voila, et lüppt. Also, zumindest für die letzte Stunde oder so. So viel zum Thema "Provisorium". Mal sehen, wie ich diese Erkenntnis jetzt in etwas umsetzte, was etwas weniger nach mit-heißer-Nadel-gestrickt aussieht.
Heute mal einige Zeit mit Debugging verbracht: Eine andere, ältere SD-Karte funktioniert problemlos, hat aber leider nur 2GB, also ein klein bisschen wenig für meine Zwecke. Aber der Card-Reader am Pi funktioniert offenbar grundsätzlich. Außerdem funktioniert die 8GB-Karte, die ich eigentlich verwende, im Notebook und in der Kamera ebenfalls ganz hervorragend und einwandfrei, auch über längere Zeit hinweg und wenn ich kräftig drauf hin und her kopiere.
Also mal ins Log geschaut. Natürlich kann er kein Log mehr nach /var/log schreiben, wenn die Root-Partition plötzlich verschwindet, und die ganze Zeit drauf gucken und warten, dass was passiert, das ist auch ein wenig Zeitverschwendung. Also wieder vom USB-Stick gestartet und mal ein wenig Karte ein- und ausgesteckt. Dabei kamen dann hauptsächliche solche Meldungen rum:
cat /var/log/messages | grep mmc
[..]
Oct 3 18:25:49 sauserver kernel: [2773226.039252] mmc0: new high speed SDHC card at address 0001
Oct 3 18:25:49 sauserver kernel: [2773226.047415] mmcblk0: mmc0:0001 00000 7.60 GiB
Oct 3 18:25:49 sauserver kernel: [2773226.050292] mmcblk0: p1 p2 p3
Oct 3 18:25:49 sauserver kernel: [2773226.174037] mmc0: Controller never released inhibit bit(s).
Oct 3 18:25:49 sauserver kernel: [2773226.183387] mmcblk0: error -110 sending status command, retrying
Oct 3 18:25:49 sauserver kernel: [2773226.183519] mmcblk0: error -110 sending status command, retrying
Oct 3 18:25:49 sauserver kernel: [2773226.184603] mmcblk0: error -110 sending status command, aborting
Oct 3 18:25:49 sauserver kernel: [2773226.195729] mmc0: card 0001 removed
[..]
Und dann fiel es mir wie Schuppen aus den Augen: Es handelt sich um eine "kleine" micro-SD-Karte, die in einem Adapter steckt. Und diese billigen Plastik-Adapter sind eine unmessbar kleine Winzigkeit dünner als eine "echte" SD-Karte, was ich bereits bei meinem neuen Card-Reader festgestellt hatte, den ich mir wegen der micro-SDXC-Karte in der neuen Kamera angeschafft hatte. Auch da hatte ich das Problem, dass die Sache etwas wackelig ist, und mit der Zeit, je öfter man die Karte ein und aus steckt, wird das immer schlimmer, weil der Einschub, der ja auch nur aus Plastik ist, nicht genug Gegendruck aufbaut, um die Kontakte von Karte und Slot aneinander zu drücken. Klassischer Fall von Wackelkontakt mit schwer reproduzierbaren Fehlern!
Also ein Blatt Papier genommen, ein paar mal gefaltet und doppelt gelegt und mit in den Card-Slot eingefädelt: Et voila, et lüppt. Also, zumindest für die letzte Stunde oder so. So viel zum Thema "Provisorium". Mal sehen, wie ich diese Erkenntnis jetzt in etwas umsetzte, was etwas weniger nach mit-heißer-Nadel-gestrickt aussieht.