HINTERGRUND

HINTERGRUND

HINTERGRUND

Eine SD-Karte wurde für einen Raspberry Pi konfiguriert. Ziel ist es, die SD-Karte exakt zu replizieren (Betriebssystem, Apps, Daten), sodass die Replik in einem rPi genau wie die Original-/Master-SD-Karte funktioniert.

UPDATE: Angenommen:

  • Die Replikation erfolgt auf einem Laptop, der mit einem UNIX-ähnlichen Betriebssystem konfiguriert ist
  • Die Replikation darf nicht vom rPi aus durchgeführt werden.
  • die Ziel-SD-Karte ist von derselben Marke/vom selben Modell
  • Die Quell-SD-Karte ist mit verschiedenen Dateisystemen partitioniert:

Bildbeschreibung hier eingeben

Fragen

Welche UNIX-Klonoptionen sind für ein Ubuntu-HP-Laptop mit SD-Kartensteckplatz und USB-SD-Kartenleser/-schreiber verfügbar?

Macht es einen Unterschied, ob die USB-SD-Karte RW als Lese- oder Schreibgerät dient?

Ein Ziel (eine Einschränkung) besteht darin, den Kauf zusätzlicher Hardware zu vermeiden.

Lösungsbeobachtungen

date; sudo sh -c 'cat sdcard.image >/dev/mmcblk0'; date

Montag, 3. Juni 2019, 17:53:18 EDT [sudo] Passwort für Benutzer: Montag, 3. Juni 2019, 23:42:17 EDT

date; sudo sh -c 'pv sdcard.image >/dev/mmcblk0'; date

Di 4. Juni 00:33:50 EDT 2019 [sudo] Passwort für Benutzer: 119GiB 6:06:12 [5.56MiB/s] [===================================>] 100%
Di 4. Juni 06:43:05 EDT 2019

Die gParted-Analyse der geflashten SD-Karte zeigt eine identische Partitionierung:

Bildbeschreibung hier eingeben

MacOS \ OSX

So finden Sie den Speicherort der SD-Karte:

diskutil list

Denken Sie daran, die SD-Karte auszuhängen, wenn Sie darauf schreiben:

sudo diskutil unmount /dev/disk#

wobei # 1,2,3 ist...

Antwort1

Wenn Sie nur eine SD-Karte exakt von einer auf eine andere kopieren möchten, können Sie dies mitddin der Befehlszeile.

Sie sollten dies NICHT von Ihrem Raspberry Pi aus über dessen eigenes Betriebssystem tun. Dies liegt daran, dass das Betriebssystem beim Kopieren möglicherweise auf die SD-Karte schreibt und die Kopie beschädigt.

Um eine SD-Karte zu kopieren, stecken Sie beide in Ihre beiden Lesegeräte (es spielt keine Rolle, ob es sich um USB-Geräte handelt oder nicht). Überprüfen Sie dann den Inhalt von /dev. Die Karten sollten als angezeigt werden /dev/sd*. Z. B. /dev/sdb. Seien Sie vorsichtig, denn Ihre interne Festplatte könnte bereits eingeschaltet sein /dev/sda.

Stellen Sie sicher, dass keine der SD-Karten gemountet ist, und lesen Sie die Ausgabe, die Sie erhalten, wenn Sie Folgendes in die Eingabeaufforderung eingeben:

mount | grep /dev/sd

Prüfen Sie auch die Ausgabe von, damit Sie wissen, welche Karte welchen Dateinamen hat (als Root):

sudo blkid

Zum tatsächlichen Kopieren (z. B. von /dev/sdb nach /dev/sdc) geben Sie (als Root) Folgendes ein:

dd if=/dev/sdb of=/dev/sdc bs=4096 status=progress

Antwort2

Unix-Systeme stellen Speichergeräte über eineGerätedatei. Gerätedateien verhalten sich in vielerlei Hinsicht wie normale Dateien. Um eine exakte Kopie eines Speichergeräts zu erstellen, kopieren Sie einfach den Inhalt des Quellgeräts auf das Zielgerät.

Zuerst müssen Sie die Quell- und die Ziel-Gerätedatei bestimmen. Der Name hängt von Ihrer Unix-Variante und deren Konfiguration ab, aber in der Praxis befinden sich Gerätedateien immer im /devVerzeichnis. Wenn Sie die SD-Karte eingebunden haben, können Sie herausfinden, was die Gerätedatei ist mit

df /media/sdcard1/some/file/on/the/sdcard

In der ersten Spalte steht die Gerätedatei. Andere Tools können die gleichen Informationen liefern, beispielsweise Kernel-Logmeldungen beim Einstecken der SD-Karte oder der lsblkBefehl unter Linux.

Auf der Karte können sich Partitionen befinden. Wenn ja, kopieren Sie die gesamte Karte, auch wenn es sich nur um eine einzige Partition handelt, da sich einige Informationen zum Startzeitpunkt möglicherweise außerhalb der Partition befinden. Wenn beispielsweise unter Linux dfangezeigt wird , kopieren Sie und nicht nur ./dev/sdb1/dev/sdb/dev/sdb1

Wenn Sie die SD-Karte herausziehen und erneut einstecken, hat sie normalerweise den gleichen Gerätedateinamen wie vorher, dies kann jedoch nicht garantiert werden.

Stellen Sie vor dem Kopieren Folgendes sicher:

  • Das Quellgerät ist nicht oder nur schreibgeschützt gemountet.
  • Das Zielgerät ist überhaupt nicht gemountet.
  • Das Zielgerät ist mindestens so groß wie die Quelle. Unter Linux lsblkwird die Gerätegröße angezeigt.
  • Sie haben das richtige Zielgerät. Beachten Sie, dass der folgende Befehl dessen Inhalt überschreibt, ohne nach einer Bestätigung zu fragen!

Angenommen, Sie haben festgestellt, dass das Quellgerät /dev/sdbund das Zielgerät ist /dev/sdc. Um den Inhalt zu kopieren, führen Sie den folgenden Befehl als Root aus:

cat /dev/sdb >/dev/sdc

Wenn Sie sudo verwenden, muss die Umleitung >als Root erfolgen. Sie müssen also etwas wie

sudo sh -c 'cat /dev/sdb >/dev/sdc'

Um sicherzustellen, dass Sie nicht versehentlich das falsche Gerät überschreiben, können Sie alternativ in zwei Schritten vorgehen:

  1. Geben Sie dem Benutzer ( gatorbackin meinem Beispiel) die Berechtigung, vom Quellgerät ( dev/sdbin meinem Beispiel) zu lesen und auf das Quellgerät ( /dev/sdcin meinem Beispiel) zu schreiben.
    sudo setfacl -m user:gatorback:r /dev/sdb
    sudo setfacl -m user:gatorback:w /dev/sdc
    
  2. Führen Sie den Kopiervorgang ohne sudo durch.
    cat /dev/sdb >/dev/sdc
    

Sie können das Disk-Image in eine Datei kopieren und dann die Image-Datei auf das Zielgerät kopieren. Dies ist nützlich, wenn Sie mehrere Kopien erstellen müssen oder nur einen SD-Kartenleser haben oder um das Risiko des Kopierens in die falsche Richtung zu verringern.

  1. sudo cat /dev/sdb >sdcard.image
  2. Ziehen Sie die Quellkarte heraus und stecken Sie die Zielkarte ein.
  3. Optional können Sie den Inhalt überprüfen, indem SieMontieren des Bildes, z.B sudo mount -o loop -r sdcard.image /mnt.
  4. sudo sh -c 'cat sdcard.image >/dev/sdb'

Wenn Sie Fortschrittsinformationen bequem einsehen möchten, verwenden Siepvanstelle von cat( pvwird selten standardmäßig installiert, ist aber auf den meisten Distributionen als Paket verfügbar).

verwandte Informationen