Kloning kartu SD menggunakan perintah dd

49

Saya mencoba mengkloning kartu SD yang mungkin berisi sejumlah partisi, beberapa di antaranya tidak dapat dikenali Ubuntu. Secara umum, saya ingin mengkloning seluruh volume, tidak hanya beberapa partisi. Jadi, saya memasang kartu SD dan melihat sesuatu seperti ini di penampil Log:

kernel: [  262.025221]  sdc: sdc1 sdc2

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

Karena saya ingin menyalin seluruh disk, saya menjalankan:

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

File sdimage.img, 7,9 GB (7,944,011,776 bytes) dibuat (kartu SD 8 GB). Sekarang saya memasang kartu SD lain dan menjalankan:

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

Masalahnya adalah bahwa perintah dd kedua tergantung pada beberapa tahap, dan tidak pernah berhasil. Setelah ini, saya tidak bisa mem-boot ulang atau mematikan komputer, dan saya hanya perlu mematikan komputer.

Apakah ini pendekatan yang benar? Mungkin ada cara lain untuk mengkloning kartu SD?

OS: Ubuntu 12.04 (Precise Pangolin), 32 bit.

Alex F
sumber
Bisakah Anda me-mount file img yang dibuat dan melihat apakah itu dibuat dengan benar?
Milan Todorovic
@MilanTodorovic - bagaimana saya bisa melakukan ini?
Alex F
Jika saya ingat dengan benar: mount -o loop sdimage.img / path / ke / mount. Kemudian periksa untuk melihat apakah Anda dapat menelusuri file img dengan benar.
Milan Todorovic
@MilanTodorovic: Saya mencoba sudo mount -o sdimage.img / dev / mydisk dan mendapat: mount: tidak dapat menemukan / dev / mydisk di / etc / fstab atau / etc / mtab Mungkin saya harus membuat entri dev sebelumnya. Bisakah Anda memposting ini sebagai jawaban dengan beberapa detail? Terima kasih.
Alex F
1
Anda seharusnya tidak menggunakan dd pada perangkat yang terpasang. unmount semua partisi terlebih dahulu, maka perintah Anda akan berfungsi.
ubfan1

Jawaban:

30

Anda seharusnya tidak menggunakan dd pada perangkat yang terpasang. unmount semua partisi terlebih dahulu, maka perintah Anda akan berfungsi.

ubfan1
sumber
2
mengapa sebaliknya bagi saya? Saya sudah Ubuntu 12.10 dan perintahnya hanya berfungsi dengan partisi yang dimainkan ...
Luca Davanzo
1
@Velthune Anda yakin tentang itu? Jika demikian, saya sarankan buat pertanyaan Anda sendiri.
Vreality
26

Masukkan kartu SD asli dan periksa nama perangkat (biasanya mmcblkXatau sdcX):

sudo fdisk -l

Anda mungkin melihat:

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

Dalam kasus saya kartu SD adalah /dev/mmcblk0( *p1dan *p2adalah partisi).

Sekarang Anda harus melepas perangkat:

sudo umount /dev/mmcblk0

Sekarang untuk membuat gambar perangkat:

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

Ini akan memakan waktu cukup lama.

Setelah selesai, masukkan kartu SD kosong. Jika perangkat berbeda (USB atau jenis pembaca kartu SD lainnya) verifikasi namanya dan pastikan untuk melepasnya:

sudo fdisk -l
sudo umount /dev/mmcblk0

Tulis gambar ke perangkat:

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

Operasi penulisan jauh lebih lambat dari sebelumnya.

Alon Fleider
sumber
4
saat menyalin data dalam jumlah besar, Anda harus menetapkan bloksize lebih besar dari standar, jika tidak, Anda mungkin harus menunggu sangat lama. sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img bs=4M
xaedes
13

Saya menggunakan alat dd untuk mengkloning stik usb dengan beberapa partisi, ini perintah saya:

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

notrunc - jangan memotong
noerror file output - lanjutkan setelah kesalahan baca

tommyk
sumber
Bukankah ini membutuhkan dua pembaca kartu SD?
Peter Mortensen
1
@PeterMortensen ya, banyak dari kita menggunakan adaptor tipe 4-in-1 ini.
Teque5
9

dd baik-baik saja, tapi saya lebih suka cat /dev/sdc/ > ~/backup.iso Jika Anda ingin meletakkannya di kartu SD lagi, jalankan sajacat ~/backup.iso > /dev/sdc

Vreality
sumber
Keduanya SD berukuran 8 GB. cat dapat digunakan untuk membuat gambar SD, tetapi untuk membuat SD lain saya harus menggunakan dd, kan?
Alex F
0

Berikut adalah langkah-langkah yang berhasil bagi saya di Ubuntu untuk mengembalikan file gambar ( ~/raspberrypi2.imgdalam kasus saya) kembali ke kartu SD baru (sangat terinspirasi oleh balasan Alon di atas):

  1. Masukkan kartu micro SD melalui pembaca kartu.
  2. Buka aplikasi Disk.
  3. Format cepat seluruh kartu (bukan partisi tertentu).
  4. Tutup Disk.
  5. Buka terminal dan jalankan:

    sudo fdisk -l
    

Output yang relevan (yang menunjukkan tidak ada partisi karena format cepat dari seluruh kartu):

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

Langkah ini membutuhkan beberapa menit yang baik (bahkan pada USB3). Pastikan untuk tidak menghentikannya dengan operasi apa pun yang akan meminta pemasangan (membuka aplikasi File atau Disk).

Terima kasih atas jawaban semua orang.

BoazC
sumber