Clonazione della scheda SD mediante il comando dd


49

Sto cercando di clonare una scheda SD che può contenere un numero di partizioni, alcune delle quali Ubuntu non è in grado di riconoscere. In genere, voglio clonare l'intero volume, non solo una partizione. Quindi, monto la scheda SD e vedo qualcosa di simile nel Visualizzatore registro:

kernel: [  262.025221]  sdc: sdc1 sdc2

alex@u120432:~$ ls /dev/sdc*
/dev/sdc  /dev/sdc1  /dev/sdc2

Dal momento che voglio copiare l'intero disco, eseguo:

dd if=/dev/sdc of=sdimage.img bs=4M

Viene creato il file sdimage.img, 7,9 GB (7.944.011.776 byte) (la scheda SD è 8 GB). Ora monto un'altra scheda SD ed eseguo:

dd if=sdimage.img of=/dev/sdc bs=4M

Il problema è che il secondo comando dd si blocca su un livello e non ha mai successo. Dopo questo, non riesco a riavviare o spegnere il computer e ho solo bisogno di spegnere.

È questo l'approccio corretto? Forse c'è un altro modo per clonare una scheda SD?

Sistema operativo: Ubuntu 12.04 (Precise Pangolin), 32 bit.


Puoi montare il file img creato e vedere se è stato creato correttamente?
Milan Todorovic,

@MilanTodorovic - come posso farlo?
Alex F,

Se ricordo bene: mount -o loop sdimage.img / path / to / mount. Quindi controlla se riesci a sfogliare il file img correttamente.
Milan Todorovic,

@MilanTodorovic: ho provato sudo mount -o sdimage.img / dev / mydisk e ho ottenuto: mount: non riesco a trovare / dev / mydisk in / etc / fstab o / etc / mtab Forse prima devo creare una voce dev. Puoi pubblicare questo come risposta con alcuni dettagli? Grazie.
Alex F,

1
non dovresti usare dd su dispositivi montati. smonta prima tutte le partizioni, quindi il tuo comando dovrebbe funzionare.
ubfan1,

Risposte:


30

Non dovresti usare dd su dispositivi montati. smonta prima tutte le partizioni, quindi il tuo comando dovrebbe funzionare.


2
perché è il contrario per me? Ho Ubuntu 12.10 e il comando ha funzionato solo con partizioni montate ...
Luca Davanzo,

1
@Velthune Ne sei sicuro? Se è così, suggerirei di fare la tua domanda.
Vreality,

26

Inserisci la scheda SD originale e controlla il nome del dispositivo (di solito mmcblkXo sdcX):

sudo fdisk -l

Potresti vedere:

Device         Boot   Start      End  Sectors  Size Id Type
/dev/mmcblk0p1 *       2048  2099199  2097152    1G  c W95 FAT32 (LBA)
/dev/mmcblk0p2      2099200 31116287 29017088 13.9G 83 Linux

Nel mio caso la scheda SD è /dev/mmcblk0(le *p1e *p2sono le partizioni).

Ora devi smontare il dispositivo:

sudo umount /dev/mmcblk0

Ora per creare un'immagine del dispositivo:

sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img

Questo richiederà del tempo.

Al termine, inserire la scheda SD vuota. Se il dispositivo è diverso (USB o altro tipo di lettore di schede SD) verificane il nome e assicurati di smontarlo:

sudo fdisk -l
sudo umount /dev/mmcblk0

Scrivi l'immagine sul dispositivo:

sudo dd if=~/sd-card-copy.img of=/dev/mmcblk0

L'operazione di scrittura è molto più lenta di prima.


4
quando si copiano grandi quantità di dati, è necessario impostare una dimensione del blocco maggiore rispetto a quella predefinita, altrimenti potrebbe essere necessario attendere molto a lungo. sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img bs=4M
xaedes,

13

Sto usando lo strumento dd per clonare chiavette USB con più partizioni, ecco il mio comando:

sudo dd if=/dev/sdb of=/dev/sdc bs=4096 conv=notrunc,noerror

notrunc - non tronca il
noerror del file di output - continua dopo errori di lettura


Questo non richiede due lettori di schede SD?
Peter Mortensen,

1
@PeterMortensen sì, molti di noi usano quegli adattatori di tipo 4 in 1.
Teque5

9

dd va bene, ma preferisco cat /dev/sdc/ > ~/backup.iso se vuoi metterlo di nuovo su una scheda SD, corricat ~/backup.iso > /dev/sdc


Entrambe le SD sono 8 GB. cat può essere usato per creare immagini SD, ma per creare un'altra SD dovrei usare dd, giusto?
Alex F,

0

Ecco i passaggi che hanno funzionato per me su Ubuntu per ripristinare il file di immagine ( ~/raspberrypi2.imgnel mio caso) su una nuova scheda SD (fortemente ispirata dalla risposta di Alon sopra):

  1. Inserire la scheda micro SD tramite il lettore di schede.
  2. Apri l'app Dischi.
  3. Formatta rapidamente l'intera scheda (non una partizione specifica).
  4. Chiudi dischi.
  5. Apri il terminale ed esegui:

    sudo fdisk -l
    

Output pertinente (che ha mostrato che non c'erano partizioni a causa del formato rapido dell'intera scheda):

Disk /dev/sdb: 7.4 GiB, 7948206080 bytes, 15523840 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disklabel type: dos 
Disk identifier: 0x6957f2f2

sudo dd if=~/raspberrypi2.img of=/dev/sdb

Questo passaggio richiede alcuni buoni minuti (anche su USB3). Assicurati di non interromperlo con qualsiasi operazione che invochi il montaggio (aprendo le app File o Dischi).

Grazie per le risposte di tutti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.