'dd' non termina mai su OS X

0

Lavorando su Linux e OS X (10.10.5), sto usando lo strumento da riga di comando dd per copiare il contenuto di un'unità flash USB da e verso un archivio compresso. Per creare l'archivio, utilizzo il seguente su un'unità non montata (su Linux il formato è qualcosa come /dev/sdb ; su OS X è qualcosa come /dev/disk2 ):

sudo dd if=/dev/disk1 bs=1m | gzip -c > disk.image.gz

che copia l'intero contenuto dell'unità, lo comprime e quindi lo scrive su disk.image.gz . Per decomprimere l'immagine in una nuova unità, utilizzo:

cat disk.image.gz | gunzip -c | sudo dd of=/dev/disk1 bs=1m

che prende l'immagine del disco compresso, lo decomprime e quindi lo scrive nell'unità. (Puoi controllare l'avanzamento di entrambi i comandi eseguendo quanto segue in una finestra separata su Linux:

sudo killall -USR1 dd

o su OS X:

sudo killall -INFO dd

che in entrambi i casi segnala dd per produrre un paio di righe sulla quantità di dati trasferiti.)

Entrambi i processi funzionano bene su Linux. Tuttavia, sebbene la lettura e la compressione funzionino bene su OS X, la decompressione e la scrittura non terminano mai. dd continua a scrivere dati e più dati, anche se il file sorgente (decompresso) è terminato e l'unità disco deve essere piena. Se aspetto che più dati siano scritti rispetto a quelli che dovrebbero essere contenuti nell'unità flash e quindi ^C per terminare il comando, l'unità risultante sembra montare e funzionare correttamente. Ma mi preoccupa che il comportamento non sia quello che mi aspetto.

Qualche idea sul perché la scrittura di dd non termina mai, anche se non riceve più dati?

(BTW: se stai usando questo come istruzioni per masterizzare le tue unità disco, ASSICURATI hai gli identificatori di dispositivo giusti (ad esempio /dev/sdb o /dev/disk2 menzionato sopra). dd fa esattamente quello che dici di fare, quindi se ottieni l'identificatore sbagliato e gli dici di sovrascrivere l'unità di avvio, lo farà felicemente. Guarda altrove su come determinare il dispositivo giusto.)

    
posta Daniel Griscom 05.04.2017 - 15:16
fonte

1 risposta

1

Questo potrebbe non rispondere alla domanda, ma potrebbe fornire una soluzione.

Invece di usare dd che sembra comportarsi in modo strano per te, basta usare cat o cp . Almeno su OS X, funzionano molto bene su dispositivi a blocchi. Quindi:

sudo dd if=/dev/disk1 bs=1m | gzip -c > disk.image.gz

diventa

sudo cat /dev/disk1 | gzip -c > disk.image.gz

Se vuoi il contrario, reindirizza l'output di gunzip :
cat disk.image.gz | gunzip -c | sudo dd of=/dev/disk1 bs=1m

diventa

gunzip -c disk.image.gz | sudo tee /dev/disk1 > /dev/null

Se vuoi solo copiare un dispositivo a blocchi

sudo dd if=/dev/disk1 of=disk.image bs=1m

diventa

sudo cp /dev/disk1 disk.image

Se vuoi solo copiare un'immagine su un dispositivo a blocchi (ad esempio da Raspbian a scheda SD)

sudo dd if=disk.image of=/dev/disk1 bs=1m

diventa

sudo cp disk.image /dev/disk1

Questo impedisce anche qualsiasi problema con le dimensioni dei blocchi.

    
risposta data 05.04.2017 - 16:40
fonte

Leggi altre domande sui tag