GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine SD-Karte replizieren?

HINTERGRUND

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

UPDATE:Angenommen:

  • Die Replikation wird auf einem Laptop durchgeführt, der mit einem UNIX-ähnlichen
    Betriebssystem
  • konfiguriert ist
  • Die Replikation darf nicht vom rPi ausgeführt werden
  • Die Ziel-SD-Karte ist vom selben Hersteller/Modell
  • Die Quell-SD-Karte ist mit verschiedenen Dateisystemen partitioniert:

Fragen

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

Macht es einen Unterschied, ob die USB-SD-Karten-RW das Lese- oder Schreibgerät ist?

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

Lösungsbeobachtungen

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

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

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

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

gTeilanalyse der geflashten SD-Karte zeigt identische Partitionierung:

Akzeptierte Antwort:

Unix-Systeme stellen Speichergeräte über eine Gerätedatei zur Verfügung. Gerätedateien verhalten sich in vielerlei Hinsicht wie gewöhnliche Dateien. Um insbesondere eine exakte Kopie des Speichergeräts zu erstellen, kopieren Sie einfach den Inhalt des Quellgeräts auf das Zielgerät.

Zuerst müssen Sie die Quellgerätedatei und die Zielgerätedatei bestimmen. Der Name hängt von Ihrer Unix-Variante und ihrer Konfiguration ab, aber in der Praxis befinden sich Gerätedateien immer unter /dev Verzeichnis. Wenn Sie die SD-Karte gemountet haben, können Sie mit

herausfinden, was die Gerätedatei ist
df /media/sdcard1/some/file/on/the/sdcard

Die Gerätedatei befindet sich in der ersten Spalte. Andere Tools können die gleichen Informationen liefern, zum Beispiel Kernel-Log-Meldungen beim Einlegen der SD-Karte oder lsblk Befehl unter Linux.

Es können Partitionen auf der Karte vorhanden sein. Kopieren Sie in diesem Fall die gesamte Karte, auch wenn nur eine Partition vorhanden ist, da sich möglicherweise Informationen zur Bootzeit außerhalb der Partition befinden. Wenn beispielsweise df zeigt /dev/sdb1 Kopieren Sie unter Linux /dev/sdb und nicht nur /dev/sdb1 .

Wenn Sie die SD-Karte herausziehen und wieder einsetzen, hat sie normalerweise den gleichen Gerätedateinamen wie zuvor, aber dies kann nicht garantiert werden.

Stellen Sie vor dem Kopieren Folgendes sicher:

  • Das Quellgerät ist nicht gemountet oder nur schreibgeschützt gemountet.
  • Das Zielgerät ist überhaupt nicht gemountet.
  • Das Zielgerät ist mindestens so groß wie die Quelle. Unter Linux lsblk zeigt die Gerätegröße an.
  • Sie haben das richtige Zielgerät. Beachten Sie, dass der folgende Befehl seinen Inhalt überschreibt, ohne nach einer Bestätigung zu fragen!
Verwandte:Was bedeutet es, „sh-kompatibel“ zu sein?

Angenommen, Sie haben festgestellt, dass das Quellgerät /dev/sdb ist und 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, wird die Umleitung > muss als root geschehen, also müssen Sie so etwas wie

schreiben
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 (gatorback in meinem Beispiel) Berechtigung zum Lesen vom Quellgerät (dev/sdb in meinem Beispiel) und auf das Quellgerät zu schreiben (/dev/sdc in meinem Beispiel).
    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 wenn Sie nur einen SD-Kartenleser haben oder um das Risiko eines 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. Überprüfen Sie optional den Inhalt, indem Sie das Bild mounten, z. sudo mount -o loop -r sdcard.image /mnt .
  4. sudo sh -c 'cat sdcard.image >/dev/sdb'

Wenn Sie bequem Fortschrittsinformationen sehen möchten, verwenden Sie pv statt cat (pv wird selten standardmäßig installiert, ist aber in den meisten Distributionen als Paket verfügbar).


Linux
  1. Alsa-Standardgerät (hw:0,0) in Asoundrc konfigurieren?

  2. Verwenden Sie ein Gerät über SSH?

  3. Wie mounte ich ein Gerät unter Linux?

  4. Erstellen Sie ein Blockgerät im RAM

  5. Speicher effizient replizieren

Unter Linux ist alles eine Datei – Teil 1

Bash:Kein Platz mehr auf dem Gerät

Gerätenummer in der Ausgabe des Stat-Befehls

Kein Speicherplatz auf Gerät

Wie erstelle ich ein Dummy-Soundkartengerät auf einem Linux-Server?

Dauerschleifengerät?