Klonowanie karty SD za pomocą polecenia dd


48

Próbuję sklonować kartę SD, która może zawierać wiele partycji, z których część nie może rozpoznać Ubuntu. Zasadniczo chcę sklonować cały wolumin, a nie tylko partycję. Dlatego podłączam kartę SD i widzę coś takiego w przeglądarce dziennika:

kernel: [  262.025221]  sdc: sdc1 sdc2

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

Ponieważ chcę skopiować cały dysk, wykonuję:

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

Plik sdimage.img, 7,9 GB (7,944,011,776 bajtów) jest tworzony (karta SD to 8 GB). Teraz podłączam inną kartę SD i wykonuję:

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

Problem polega na tym, że drugie polecenie dd zawiesza się na pewnym etapie i nigdy się nie udaje. Po tym nie mogę ponownie uruchomić lub wyłączyć komputera i muszę tylko wyłączyć zasilanie.

Czy to jest właściwe podejście? Może istnieje inny sposób klonowania karty SD?

System operacyjny: Ubuntu 12.04 (Precise Pangolin), 32-bit.


Czy możesz zamontować utworzony plik IMG i sprawdzić, czy został poprawnie utworzony?
Milan Todorovic,

@MilanTodorovic - jak mogę to zrobić?
Alex F

Jeśli dobrze pamiętam: mount -o loop sdimage.img / path / to / mount. Następnie sprawdź, czy możesz poprawnie przeglądać plik IMG.
Milan Todorovic,

@MilanTodorovic: Próbowałem sudo mount -o sdimage.img / dev / mydisk i dostałem: mount: nie mogę znaleźć / dev / mydisk w / etc / fstab lub / etc / mtab Możliwe, że muszę wcześniej utworzyć wpis dev. Czy możesz to opublikować jako odpowiedź z pewnymi szczegółami? Dzięki.
Alex F,

1
nie powinieneś używać dd na zamontowanych urządzeniach. najpierw odłącz wszystkie partycje, a następnie twoje polecenie powinno działać.
ubfan1,

Odpowiedzi:


29

Nie powinieneś używać dd na zamontowanych urządzeniach. najpierw odłącz wszystkie partycje, a następnie twoje polecenie powinno działać.


2
dlaczego jest dla mnie odwrotnie? Mam Ubuntu 12.10, a polecenie działa tylko z
zamontowanymi

1
@Velthune Czy jesteś tego pewien? Jeśli tak, proponuję zadać własne pytanie.
Vreality

25

Włóż oryginalną kartę SD i sprawdź nazwę urządzenia (zwykle mmcblkXlub sdcX):

sudo fdisk -l

Możesz zobaczyć:

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

W moim przypadku karta SD to /dev/mmcblk0( *p1i *p2są partycjami).

Teraz musisz odmontować urządzenie:

sudo umount /dev/mmcblk0

Teraz, aby utworzyć obraz urządzenia:

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

To chwilę potrwa.

Po zakończeniu włóż pustą kartę SD. Jeśli urządzenie jest inne (USB lub inny typ czytnika kart SD), sprawdź jego nazwę i pamiętaj o odmontowaniu:

sudo fdisk -l
sudo umount /dev/mmcblk0

Zapisz obraz na urządzeniu:

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

Operacja zapisu jest znacznie wolniejsza niż wcześniej.


4
podczas kopiowania dużych ilości danych należy ustawić większy niż domyślny rozmiar bloku, w przeciwnym razie może być konieczne bardzo długie oczekiwanie. sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img bs=4M
xaedes

13

Używam narzędzia dd do klonowania pamięci USB z wieloma partycjami, oto moje polecenie:

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

notrunc - nie
obcinaj pliku wyjściowego noerror - kontynuuj po błędach odczytu


Czy to nie wymaga dwóch czytników kart SD?
Peter Mortensen

1
@PeterMortensen tak, tak, wielu z nas korzysta z adapterów typu 4 w 1.
Teque5,

9

dd jest w porządku, ale wolę cat /dev/sdc/ > ~/backup.iso Jeśli chcesz ponownie umieścić go na karcie SD, po prostu uruchomcat ~/backup.iso > /dev/sdc


Oba SD mają 8 GB. cat może być użyty do zrobienia obrazu SD, ale aby zrobić kolejne SD, powinienem użyć dd, prawda?
Alex F

0

Oto kroki, które działały dla mnie w systemie Ubuntu, aby przywrócić plik obrazu ( ~/raspberrypi2.imgw moim przypadku) z powrotem na nową kartę SD (zainspirowany w dużej mierze odpowiedzią Alona powyżej):

  1. Włóż kartę micro SD przez czytnik kart.
  2. Otwórz aplikację Dyski.
  3. Szybkie formatowanie całej karty (nie określonej partycji).
  4. Zamknij dyski.
  5. Otwórz terminal i wykonaj:

    sudo fdisk -l
    

Odpowiednie wyjście (które pokazało, że nie było partycji ze względu na szybki format całej karty):

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

Ten krok zajmuje kilka dobrych minut (nawet na USB3). Pamiętaj, aby nie przerywać jej żadną operacją, która wywoła montowanie (otwieranie aplikacji Pliki lub Dyski).

Dzięki za odpowiedzi wszystkich.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.