Saya mencoba:
sudo dd bs=4k if=/dev/mmcblk0 of=/media/1BAB47551C66A42B/raspbian_migs2.gz
Ini menciptakan file .img dengan 7,6 GB (ukuran kartu, TAPI apa yang ada di kartu memiliki 700 MB).
Dan:
sudo dd bs=4k if=/dev/mmcblk0 | gzip > /media/1BAB47551C66A42B/raspbian_migs2.gz
membuat file .gz dengan 2,7 GB.
Raspbian asli ( Debian 7 (Wheezy)) dari http://www.raspberrypi.org/downloads memiliki 494,44 MiB.
Dari apa yang ada di kartu SD, bagaimana saya bisa membuat gambar dengan ukuran yang sama?
(Saya di Ubuntu.)
Jawaban:
Anda menyebutkan dalam komentar kepada RooTer bahwa A) Anda telah mengurangi ukuran partisi awal
gparted
, tetapidd
masih menyalin seluruh kartu, dan B) yang ingin Anda sertakan kedua partisi dalam gambar.Masalah "A" mudah dijelaskan: Anda masih menyalin seluruh kartu karena itu yang
/dev/mmcblk0
dimaksud. Partisi individual tentu saja/dev/mmcblk0p1
dan/dev/mmcblk0p2
. Ini adalah komplikasi dalam masalah "B", tetapi Anda tidak bisa hanyadd
setiap partisi dan menggabungkan dua file bersama-sama, karena tabel partisi di awal/dev/mmcblk0
yang mengindeks awal dan panjang masing-masing partisi. Tanpa itu, gambar tidak akan dapat digunakan.Namun, Anda bisa mendapatkan panjang masing-masing partisi
fdisk -l
, dan menggunakannya untuk menentukan beberapa parameterdd
. Sebagai contoh:Unit "Start" dan "End" adalah sektor, dan perhatikan ukuran sektor diberikan, 512 byte. Untuk
/dev/mmcblk0p2
, 26746879 (sektor terakhir) - 122880 (sektor pertama) = 26623999/2 (untuk 2 sektor per kB) / 1024 (kB per MB) / 1024 (MB per GB) = 12,69, yang saya tumbuhkan partisi menggunakan gparted hingga 12 GB, jadi ini terlihat benar (sebenarnya saya harus menggunakan 1000 dan bukan 1024 sebagai pembagi dengan penyimpanan, yang berfungsi hingga 13,31 GB, tapi saya curiga gparted dan beberapa alat lain juga menggunakan 1024).Jadi hal pertama yang ingin Anda periksa adalah bahwa partisi kedua Anda benar-benar ukuran yang lebih kecil dari yang Anda atur. Selanjutnya, cukup gunakan angka-angka itu dengan
dd
; bagi saya itu akan:Saya memiliki sektor tambahan di sana untuk menghindari segala jenis gangguan karena salah paham tentang cara
dd
kerjanya. Ada cara sederhana untuk memeriksa apakah ini berhasil:Perhatikan ada sedikit perbedaan di sini: sektor "Mulai" dan "Akhir" cocok dengan tabel partisi asli, tetapi ukuran total dalam statistik di atas hanya 102 MB! Ini karena saya benar-benar digunakan
count=200000
sebagai paramdd
karena saya tidak benar-benar ingin repot dengan salinan 12 GB (perhatikan juga "total sektor 2.000.000"). Alasan tabel di bagian bawah tidak mencerminkan hal ini adalah karena fdisk mendapatkan informasinya dari data partisi yang disalin kata demi kata di awal gambar dari awal kartu SD, yang, seperti yang saya sebutkan pada paragraf kedua, sangat penting untuk mempertahankan. Jika saya (benar) menyalin sisanya, angka-angka akan menjadi copacetic dan gambar akan layak.Cobalah. :)
sumber
fdisk -l <device>
dan itu harus mencetak tabel tanpa masuk ke mode interaktif.Saya kira masalahnya terletak pada sektor yang pernah digunakan yang masih memiliki kotoran di dalamnya. Setelah file dihapus, hanya metadata yang dihapus dari sistem file, bukan data itu sendiri, sehingga menyisakan beberapa angka nol acak alih-alih mudah dikompresi dengan blok nol saja.
Solusi mudah, tetapi membutuhkan penulisan ulang semua ruang kosong pada kartu. Ingatlah bahwa umur kartu SD terbatas oleh jumlah penulisan ulang, jadi ini bukan metode yang disukai.
Solusi yang lebih terlibat, karena Anda perlu menginstal zerofree di komputer lain yang tidak akan menggunakan kartu SD pada saat itu.
Untuk lebih lanjut baca di http://intgat.tigress.co.uk/rmy/uml/index.html
Yang harus Anda ingat adalah bahwa melakukan dd dari / dev / mmcblk0 Anda menyalin seluruh perangkat, bahkan jika partisi lebih kecil. Jika Anda menggunakan raspi-config untuk memperluas partisi utama sebelum melakukan salah satu metode di atas, Anda akan baik-baik saja.
NB. Jika Anda tidak keberatan mengubah format file gambar, Anda dapat menggunakan partimage yang untuk sistem file yang dikenal menghilangkan blok yang dibebaskan bahkan jika masih ada sedikit kotoran di dalamnya. Sekali lagi partimage paling baik digunakan ketika filesystem tidak dipasang untuk menghindari korupsi cadangan. Anda mungkin bisa lolos dengan remount hanya-baca, tapi saya akan menyerahkannya pada kebijaksanaan Anda.
sumber
dd bs=4M if=/dev/zero of=/root/junk
Jawaban singkat - gunakan kartu SD 2GB.
Jawaban panjang,
dd
tidak tahu di mana data "baik" berakhir, Anda harus mengatakannya entah bagaimana.Ada dua cara, yang paling mudah adalah menggunakan kartu SD 2GB, yang secara otomatis akan berhenti menyalin melebihi 2GB dan akan menghasilkan file terkompresi 500MB seperti yang Anda inginkan.
Cara lain, yang lebih rumit yang terlibat, adalah menghitung ukuran data yang benar dari tabel partisi Anda dan menentukan ukuran yang benar ini sebagai parameter untuk
dd
perintah. Anda dapat menggunakan parameterbs=XXX
(ukuran blok) dancount=XXX
(jumlah blok) untuk tujuan itu. Misalnya, Anda dapat menentukanbs=10M
ukuran blok 10MB (yang pasti akan membuat penyalinan jauh lebih cepat dibandingkan dengan ukuran blok 4k yang Anda gunakan dalam perintah Anda) dancount=200
untuk menyalin 10MB * 200 = 2000MB (2GB). Anda mungkin perlu menyesuaikan ukuran blok dan jumlah blok menurut skema partisi kartu SD Anda .sumber
dd
ukuran tertentu tidak akan pernah berhasil. Itu mengandaikan semua data aktual dalam sistem file disusun dengan rapi di awal perangkat, jadi jika Anda memiliki 2GB pada partisi 8 GB Anda hanya perlu menyalin 2GB pertama. Ini salah. Data 2 GB itu akan tersebar di seluruh ruang, terutama pada kartu SD modern yang tidak menggunakan kembali blok dua kali sampai semua blok yang tersedia telah digunakan setidaknya satu kali (ini disebut leveling keausan dan memperpanjang umur kartu).dd - copy and convert
bukan alat yang tepat untuk melakukan pekerjaan yang Anda minta. Ini adalah level rendah, salinan sektor per sektor (dan konversi), yang bagus untuk menyalin sektor boot, memformat perangkat, dan segala macam tugas tingkat rendah. Saat Anda menggunakan,dd
Anda menyalin sektor per sektor ke gambar, bahkan jika itu tidak termasuk dalam Struktur Sistem File.Gambar-gambar yang disediakan oleh yayasan Raspberry Pi, adalah gambar yang dikompilasi khusus dengan skrip instal, unzip binari dan pengaturan awal, setelah itu Anda harus mendapatkan pembaruan dari internet - Yang semuanya disengaja tetapi cukup tugas untuk membuatnya bekerja seperti ini.
Salah satu solusi populer untuk menghindari penyalinan sektor kosong adalah dengan menggunakan sistem penyalinan Level File - dan CloneZilla berdiri sendiri, dapat di-boot dari CD, mirip dengan
ye olde Norton Ghost
tetapi clonezilla mendukung sistem file Linux (dan banyak lagi). Jadi, itu hanya akan menyalin file yang sedang digunakan dan membuat wadah dari file-file itu saja. Mengurangi ukuran secara signifikan!sumber
Saya punya pertanyaan yang persis sama dan ingin alat yang mudah digunakan. Setelah mencari dan tidak menemukan yang saya tulis mkimg.sh . Saya menguraikan proses yang saya gunakan di: /raspberrypi//a/37899/32585
sumber