Folgende Warnungen sind aufgetreten:
Warning [2] Undefined variable $unreadreports - Line: 34 - File: global.php(961) : eval()'d code PHP 8.2.2 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(961) : eval()'d code 34 errorHandler->error_callback
/global.php 961 eval
/showthread.php 28 require_once
Warning [2] Undefined property: MyLanguage::$thread_modes - Line: 43 - File: showthread.php(1621) : eval()'d code PHP 8.2.2 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php(1621) : eval()'d code 43 errorHandler->error_callback
/showthread.php 1621 eval




Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Hilfe! Großes Problem mit der Boot-SD
#1
   

So, jetzt brauche ich echt Hilfe.
Meine MicroSD mit dem gesamten eingerichteten CarPC, wo monatelange Arbeit drin steckt, ist scheinbar defekt.

Die lange Geschichte: wie ich ja schon öfter geschrieben habe, habe ich immer brav nach jeder Änderung am CarPi-System Sicherungen der SD angelegt.
Gemacht habe ich das mit dem Win32DiskImager, der mir eine IMG-Datei der SD anlegt. Diese IMG habe ich dann noch auf eine zweite SD geschrieben, um immer eine "frische" Karte in Reserve zu haben, falls bei einer Änderung am CarPi was schief geht.
Soweit, so gut.

Nun wollte ich vor ein paar Tagen dieses Image auf eine neue SD schreiben, gleiche Größe und Fabrikat wie die alte.
Da bekomme ich von Win32DiskImager beim Schreibversuch auf die Karte eine Fehlermeldung, sinngemäß: die Karte hat zu wenig Sektoren zum Schreiben des Image. Confused

Ich habe dann natürlich eine weitere SD-Karte probiert: gleicher Fehler.

Na gut, also noch einmal vom Original eine IMG angelegt. Schreiben auf die SD: wieder der Fehler: Karte ist "zu klein" (zu wenig Sektoren).

Teufel nochmal, was ist da los?
Also habe ich meine finale SD kontrolliert: tatsächlich, die Datenträgerverwaltung zeigt, dass die Karte ein paar GB größer ist, als alle anderen 32 GB Karten in meiner Sammlung. Vor - und hinter den genutzten Partitionen (Boot + Daten) liegen freie, unpartitionierte Bereiche von etlichen MB, die es auf den anderen SD nicht gibt.
Beim schreiben der IMG-Datei wurden diese Bereiche aber berücksichtigt, so dass meine Sicherungs-IMG zu groß ist.

Nun kann ich die Sicherung nicht mehr auf andere Karten schreiben, und kann keine funktionierende Sicherung anlegen.

Wenn nun diese einzige SD kaputt geht, ist mein CarPi tot.

Wie repariere ich die SD ohne Datenverluste?
Zitieren
#2
Ja, das kann vorkommen wenn es blöd läuft. Es sind oft nur ein paar Bytes die darüber entscheiden ob das Image auf die zweite Karte passt oder nicht. Mit der Anzahl der Partitionen hat das nichts zu tun. Entscheidend ist hier nur die Gesamtkapazität der Karte. Und die ist halt nicht auf allen Karten identisch.

Aber es ist nichts verloren! Du kannst mit PiShrink dein Backup-Image verkleinern, so dass es danach u.U. sogar auf eine 8GB oder 16GB-Karte passt. Es wird dabei der ungenutzte Speicher gelöscht und nur der wirklich auf der Karte belegte Teil wird behalten.  Das hat nebenbei noch den positiven Effekt, dass die Backups wenige Speicher belegen.
Zitieren
#3
Mit PiShrink stehe ich gerade auf dem Schlauch.
Ich habe es heruntergeladen und die *.sh nach ~/bin entpackt.
Soweit so klar.

Aber PiShrink erstellt keine eigenen img-Dateien, es verkleinert sie lediglich.
Das Problem, meine Image-Dateien habe ich auf dem PC mit dem Win32DiskImager erstellt und diese liegen auf einer sehr großen USB-Festplatte.

Kann PiShrink auch diese img-Dateien verkleinern?
Ich kann die Festplatte aber nicht an den pi anschließen, sie wird nicht erkannt.
Wie soll ich vorgehen?
Zitieren
#4
Naja, du brauchst natürlich eine HD oder einen Stick, der genügend Speicherplatz bietet und am Pi gemountet werden kann. Ich habe für diesen Zweck eine kleine externe HD in EXT4 formatiert und mache es damit. Die zu bearbeitende Image-Datei übertrage ich dann entweder per SSH auf die externe Platte oder ich mache das über ein Debian, das auf meinem Hauptrechner in einer VM läuft.

Du könntest es aber auch versuchen, die Treiber für das Dateisystem (ich nehme an NTFS?) zu installieren. Das könnte auch funktionieren.

Ich würde sowieso empfehlen, für so eine Anwendung nicht die CarPC-Installation zu verwenden sondern auf eine eigene SD-Karte ein Raspbian Stretch zu installieren und das dann für diesen Zweck zu verwenden.
Zitieren
#5
Ok, verstanden.
Was ich nicht verstehe: das Script verkleinert das Image auf die geringster Größe, freie Bereiche werden abgeschnitten.
Was hat es damit auf sich, dass das Image sich danach auf die Gesamtgröße der SD anpasst?
Ich schreibe das IMG auf die SD wie gehabt, die Partition 2 ist dann kleiner als die beschriebene SD. Dann expandiert die Partition "automatisch" auf die volle Größe? Wie? Wodurch? Kapiere ich nicht...
Zitieren
#6
Das heißt dass sich das Image, das sagen wir mal auf 8GB geschrumpft ist, nach dem Aufspielen auf eine SD-Karte beim ersten Start selbsttätig expandiert, so dass der volle Speicherplatz der Karte zur Verfügung steht. Also das selbe was man sonst nachträglich über die raspi-config mit "Expand Filesystem" macht. Nur dass es hier eben automatisch passiert.
Zitieren
#7
Blöde frage.... Wie hast du die SD Karte formatiert? Benutzt du das Programm "Sd Cardformater"?
Wenn nein, probiere es mal mit dem.


Gesendet von meinem D6603 mit Tapatalk
Zitieren
#8
Eine Formatierung ist hier unnötig. Die wird beim Schreiben des Images sowieso wieder überschrieben. Außerdem würde eine Formatierung auch nichts an der Tatsache ändern, dass die Karte zu klein ist. Eine mit dd oder dem Win32DiskImager oder anderem Tool erstellte Kopie ist immer ein 1:1 Abbild der Karte bis hin zur letzten Zelle, auch wenn diese nicht beschrieben ist. Und die volle Kapazität der Karten kann halt leicht um einige Bytes differieren. Selbst Karten des selben Herstellers können sich da von Charge zu Charge unterscheiden. Das ist lästig aber ist nun mal so.
Zitieren
#9
Ich habe mich mittlerweile eingelesen, es ist in der Tat so, dass die SD-Karten sich alle trotz gleicher nomineller Größe um einige Blöcke unterscheiden.
Dem Imagewriter ist es egal, der kopiert von Block1 bis Block Ende, und wenn die neue Karte nur einen Block zu klein ist, passt das Image da nicht drauf. Basta.

Jetzt habe ich vier SD-Karten von 32Gb rumliegen, davon zwei vom selben Hersteller, die ich letztendlich verwenden wollte (Transcend High Endurance), und ausgerechnet die verwendete ist so "gross", dass eine Kopie davon auf keine andere Karte passt.

Gibt es denn keine Möglichkeit, ein Image unter Windows zu "shrinken"? Unter Raspberry mit eingebautem Gerät im Auto ist dass eh total unkomfortabel...
Zitieren
#10
Du könntest ein Linux unter einer Virtualisierungssoftware auf deinem Windowsrechner installieren oder viel einfacher eine Linux Live-CD verwenden.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
RasPiCarProjekt