creare un'immagine di un'unità USB senza partizione non allocata


13

Ho un drive USB da 8 GB collegato al mio sistema che assomiglia a questo:

[root@host]# fdisk -l /dev/sdb

Disk /dev/sdb: 8462 MB, 8462008320 bytes
255 heads, 63 sectors/track, 1028 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5c0894d9

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1           9       72261    e  W95 FAT16 (LBA)
/dev/sdb2              10         103      755055   83  Linux
[root@host]# 

Quindi sostanzialmente la mia partizione FAT è di circa 70 MB, la partizione ext2 è di circa 740 MB e il resto dello spazio (~ 7 GB) non è allocato. Ora, quando ho registrato il mio disco rigido USB tramite:

dd if=/dev/sdb of=myimage.img bs=1M

il file di output (myimage.img) è di circa 8 GB, che è il normale funzionamento di dd.

Domanda: Quello che sto cercando è un modo per clonare direttamente il mio disco rigido USB senza lo spazio non allocato in modo che il mio file dei risultati sia circa 1 GB non compresso anziché 8 GB. Il motivo che sto chiedendo è perché il file di output (myimage.img) viene utilizzato da un programma di simulazione per avviare l'immagine. Il simulatore può gestire file da 8 GB ma non voglio sprecare il mio spazio su disco.


1
Questo è un problema un po 'simile con una soluzione interessante: serverfault.com/q/281628/141604
settimana

Risposte:


15

Se ho capito bene, vuoi creare un'immagine dall'inizio del disco alla fine dell'ultima partizione.

Il parametro per ddfarlo è count=. L'ultima partizione termina con 103 e il conteggio dovrà essere 1 in più (104) e la dimensione dell'unità è 8225280 byte (in base fdisk -lall'output). Quindi potresti semplicemente modificare il tuo comando in questo modo:

dd if=/dev/sdb of=myimage.img bs=8225280 count=104

Tuttavia, suggerirei di correre fdisk -u -l /dev/sdbinvece. I cilindri non sono più rilevanti in questa epoca, quindi è meglio se vedi il settore contare per evitare errori di arrotondamento. Quindi dovrai eseguire:

dd if=/dev/sdb of=myimage.img count=...

dove count verrà impostato sul numero ottenuto fdisk -u -lalla fine dell'ultima partizione più uno , invece di quello che era 104. La dimensione del blocco predefinita per ddè 512 byte, che è anche l'unità che fdisk -u -lutilizzerà nell'output.

La tabella delle partizioni di backup di una partizione GPT è archiviata alla fine del disco, ma poiché non si utilizza GPT andrà bene.


2

Devi solo dire a dd di leggere solo la parte del disco che ti interessa. Il parametro che stai cercando è count.

Quindi prendi la dimensione del tuo cilindro di 8.225.280 e moltiplica per il numero di cilindri in uso di 103 e otterrai 847.203.840 byte. Dato che stai usando una dimensione di blocco di un megabyte, converti quei byte in megabyte che sono 808.

Quindi il tuo comando è dd if=... of=... bs=1M count=808

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.