In un commento a RooTer menzioni che A) hai ridotto la dimensione iniziale della partizione gparted
, ma dd
copia comunque l'intera scheda e B) che desideri includere entrambe le partizioni nell'immagine.
Il problema "A" è facile da spiegare: stai ancora copiando l'intera carta perché è ciò che si /dev/mmcblk0
riferisce. Le singole partizioni sono ovviamente /dev/mmcblk0p1
e /dev/mmcblk0p2
. Questa è la complicazione nel problema "B", ma non è possibile semplicemente dd
ogni partizione e concatenare i due file insieme, a causa della tabella delle partizioni all'inizio della /dev/mmcblk0
quale indicizza l'inizio e la lunghezza di ciascuna partizione. Senza quello, l'immagine sarà inutilizzabile.
Tuttavia, è possibile ottenere la lunghezza di ciascuna partizione fdisk -l
e utilizzarla per determinare alcuni parametri per dd
. Per esempio:
> fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 16.1 GB, 16138633216 bytes
4 heads, 16 sectors/track, 492512 cylinders, total 31520768 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
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 26746879 13312000 83 Linux
Le unità "Start" e "End" sono settori e si noti che la dimensione del settore è data, 512 byte. Per /dev/mmcblk0p2
, 26746879 (l'ultimo settore) - 122880 (il primo settore) = 26623999/2 (per 2 settori per kB) / 1024 (kB per MB) / 1024 (MB per GB) = 12.69, che ho fatto crescere la partizione usando gparted a 12 GB, quindi questo sembra corretto (in realtà dovrei usare 1000 e non 1024 come divisore con memoria, che funziona a 13.31 GB, ma sospetto che partizionato e alcuni altri strumenti usano anche 1024).
Quindi la prima cosa che vuoi controllare è che la tua seconda partizione abbia davvero le dimensioni più piccole su cui la imposti. Quindi, basta usare quei numeri con dd
; per me sarebbe:
dd if=/dev/mmcblk0 of=rpi.img bs=512 count=26746880
Ho un settore in più lì per evitare qualsiasi tipo di off da un malinteso su come dd
funziona. C'è un modo semplice per verificare se ha funzionato:
> fdisk -l rpi.img
Disk rpi.img: 102 MB, 102400000 bytes
255 heads, 63 sectors/track, 12 cylinders, total 200000 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
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
rpi.img1 8192 122879 57344 c W95 FAT32 (LBA)
rpi.img2 122880 26746879 13312000 83 Linux
Nota che qui c'è un po 'di discrepanza: i settori "Inizio" e "Fine" corrispondono alla tabella delle partizioni originale, ma la dimensione totale nella parte superiore delle statistiche è di soli 102 MB! Questo perché in realtà l'ho usato count=200000
come parametro dd
perché non volevo davvero preoccuparmi di una copia da 12 GB (notare anche "totale 200000 settori"). Il motivo per cui la tabella in fondo non riflette questo è perché fdisk sta ottenendo le sue informazioni dai dati della partizione copiati alla lettera all'inizio dell'immagine sulla scheda SD, che, come ho già detto nel secondo paragrafo, è vitale mantenere. Se avessi (correttamente) copiato il resto, i numeri sarebbero copacetici e l'immagine sarebbe stata praticabile.
Provalo. :)