GNU/Linux >> Linux Esercitazione >  >> Linux

Replicare una scheda SD?

SFONDO

Una scheda SD è stata configurata per un Raspberry pi. L'obiettivo è replicare esattamente la scheda SD (sistema operativo, app, dati) in modo che la replica funzioni in un rPi esattamente come la scheda SD principale originale.

AGGIORNAMENTO:Supponiamo:

  • La replica verrà eseguita su un laptop configurato con un sistema operativo simile a UNIX
  • La replica non deve essere eseguita da rPi
  • la scheda SD di destinazione è della stessa marca/modello
  • la scheda SD di origine è partizionata con diversi file system:

Domande

Quali opzioni di clonazione UNIX sono disponibili per un laptop Ubuntu HP con uno slot per schede SD e un lettore/scrittore di schede SD USB.

Fa differenza se la scheda SD USB RW è il lettore o lo scrittore?

Un obiettivo (vincolo) è evitare di acquistare hardware aggiuntivo.

Osservazioni sulla soluzione

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

Mon Jun 3 17:53:18 EDT 2019
[sudo] password per utente:
Mon Jun 3 23:42:17 EDT 2019

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

mar 4 giu 00:33:50 EDT 2019
[sudo] password per utente:
119GiB 6:06:12 [5.56MiB/s] [================================>] 100%
mar 4 giu 06:43:05 EDT 2019

L'analisi parziale della scheda SD flash mostra un partizionamento identico:

Risposta accettata:

I sistemi Unix rendono disponibili i dispositivi di archiviazione tramite un file di dispositivo. I file del dispositivo si comportano come file ordinari in molti modi. In particolare, per eseguire una copia esatta del dispositivo di archiviazione, è sufficiente copiare il contenuto del dispositivo di origine nel dispositivo di destinazione.

Innanzitutto è necessario determinare il file del dispositivo di origine e il file del dispositivo di destinazione. Il nome dipende dalla tua variante Unix e da come è configurato, ma in pratica i file del dispositivo sono sempre sotto /dev directory. Se hai la scheda SD montata, puoi trovare con cosa si trova il file del dispositivo

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

Il file del dispositivo si trova nella prima colonna. Altri strumenti possono fornire le stesse informazioni, ad esempio i messaggi di registro del kernel quando si inserisce la scheda SD o il lsblk comando su Linux.

Potrebbero esserci partizioni sulla scheda. In tal caso, copia l'intera scheda, anche se è presente una singola partizione, poiché alcune informazioni sull'avvio potrebbero trovarsi al di fuori della partizione. Ad esempio, se df mostra /dev/sdb1 su Linux, copia /dev/sdb e non solo /dev/sdb1 .

Se estrai la scheda SD e la reinserisci, di solito avrà lo stesso nome file del dispositivo di prima, ma questo non è garantito.

Prima di copiare, assicurati che:

  • Il dispositivo sorgente non è montato o è montato solo in sola lettura.
  • Il dispositivo di destinazione non è affatto montato.
  • Il dispositivo di destinazione è grande almeno quanto l'origine. Su Linux, lsblk visualizza le dimensioni del dispositivo.
  • Hai il dispositivo di destinazione corretto. Nota che il comando seguente sovrascriverà il suo contenuto senza chiedere conferma!
Correlati:cosa significa essere "compatibili con sh"?

Supponi di aver identificato che il dispositivo di origine è /dev/sdb e il dispositivo di destinazione è /dev/sdc . Per copiare il contenuto, esegui il seguente comando come root:

cat /dev/sdb >/dev/sdc

Se usi sudo, il reindirizzamento > deve essere eseguito come root, quindi devi scrivere qualcosa come

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

In alternativa, per essere sicuro di non sovrascrivere accidentalmente il dispositivo sbagliato, puoi procedere in due passaggi:

  1. Dare all'utente (gatorback nel mio esempio) il permesso di leggere dal dispositivo sorgente (dev/sdb nel mio esempio) e per scrivere sul dispositivo sorgente (/dev/sdc nel mio esempio).
    sudo setfacl -m user:gatorback:r /dev/sdb
    sudo setfacl -m user:gatorback:w /dev/sdc
    
  2. Esegui la copia senza sudo.
    cat /dev/sdb >/dev/sdc
    

È possibile copiare l'immagine del disco su un file, quindi copiare il file immagine sul dispositivo di destinazione. Questo è utile se devi fare più copie, o se hai un solo lettore di schede SD, o per ridurre il rischio di copiare nella direzione sbagliata.

  1. sudo cat /dev/sdb >sdcard.image
  2. Estrarre la scheda di origine e inserire la scheda di destinazione.
  3. Facoltativamente, verifica il contenuto montando l'immagine, ad es. sudo mount -o loop -r sdcard.image /mnt .
  4. sudo sh -c 'cat sdcard.image >/dev/sdb'

Se vuoi vedere comodamente le informazioni sui progressi, usa pv invece di cat (pv è raramente installato per impostazione predefinita, ma è disponibile come pacchetto sulla maggior parte delle distribuzioni).


Linux
  1. Pci-stub Vs Vfio-pci?

  2. Configurazione del dispositivo Alsa predefinito (hw:0,0) in Asoundrc?

  3. uflash:comando non trovato

  4. Bash:Nessuno spazio rimasto sul dispositivo

  5. Come creare un dispositivo di scheda audio fittizio nel server Linux?

Tutto è file in Linux – Parte 1

comando setpci:configura il dispositivo PCI

Numero del dispositivo nell'output del comando stat

Spazio esaurito sul dispositivo

Utilizzare un dispositivo su SSH?

Replica efficiente dello storage