Come utilizzare Cygwin per copiare un'immagine da una scheda di memoria SD


30

Per farla breve, sto lavorando su una macchina Windows 7 e vorrei rimuovere l'immagine da una scheda SD (backup della scheda da un Raspberry Pi ). Sto cercando di usare Cygwin , ma non sto riscuotendo molto successo.

Esaminando la /devdirectory, sembra che la mia scheda SD sia visualizzata come sdde sdd1. Tuttavia, quando eseguo il comando seguente:

dd if=/dev/sdd of=RPi.img

Ottengo quanto segue:

dd: apertura '/ dev / sdd': autorizzazione negata

Ho usato dd su Mac e Linux senza alcun problema, usando una sintassi simile. Cosa mi manca con Cygwin?


Ci hai provato dd if=/dev/sdd1 of RPi.img?
Kruug,

Se lo faccio, ottengo solo un file di ~ 59 MB dalla scheda di memoria SD da 4 GB. Fondamentalmente sto ricevendo solo la parte della scheda che "vede" Windows quando si inserisce la scheda nel lettore. Non è l'immagine completa.
Grandammiraglio

Potresti usare una macchina Linux o Linux LiveCD invece di provare in Windows?
Kruug,

Le macchine virtuali Linux non sembrano vedere la scheda di memoria SD (provato VMware Player e VirtualBox) perché sto usando il lettore interno sul laptop. Quindi per finire .... Non ho nemmeno un masterizzatore CD nel laptop. :) Ho un Mac a casa che posso usare, stavo solo cercando di trovare qualcosa che potesse funzionare con la mia situazione attuale ... e capire se fosse possibile. Sembrava che Cygwin avrebbe dovuto funzionare.
Grandammiraglio

4
Ho scoperto che posso anche usare 'cat / proc / partitions' per ottenere il nome della scheda di memoria SD allegata.
Grandammiraglio,

Risposte:


27

Ottieni l' Permission deniederrore, perché non lo sei root. Sembra strano nel contesto di Cygwin, ma colpisce a casa.

Quando richiedi il tuo stato ( id) in una shell Cygwin normalmente avviata, otterrai qualcosa del genere:

$ id
uid=1001(user) gid=545(Users) groups=545(Users),555(Remote Desktop Users),513(None)
$ dd if=/dev/sda bs=1000 count=1 | wc -c
dd: opening `/dev/sda': Permission denied
0

In Windows 7 il trucco per entrare rootin Cygwin è avviare la sessione elevata , ovvero fare clic con il tasto destro sull'icona di Cygwin e scegliere Esegui come amministratore . Ora non sei ancora se rootstesso, ma almeno nel rootgruppo:

$ id
uid=1001(user) gid=545(Users) groups=545(Users),0(root),544(Administrators),555(Remote Desktop Users),513(None)

E ora ddfunziona come sei abituato da Un * x:

$ dd if=/dev/sda bs=1000 count=1 | wc -c
1+0 records in
1+0 records out
1000 bytes (1.0 kB) copied, 0.00104424 s, 958 kB/s
1000

Molto interessante e funziona. Grazie! Mentre sia questo metodo che USB Image Tool forniscono una soluzione, accetterò questa risposta perché è più direttamente correlata alla mia domanda iniziale.
Grandammiraglio

Non sono un membro di root in questo modo. È cambiato qualcosa?
Pysis,

1
@Pysis: Sono ancora in grado di diventare root in questo modo con l'attuale versione di Cygwin ( CYGWIN_NT-6.1-WOW 2.7.0 (0.306 / 5/3) 2017-02-12 13:13 i686 Cygwin ) a partire dall'aggiornamento di oggi. Forse stackoverflow.com/q/4090301 su SO potrebbe esserti di aiuto ?!
mpy

Sembra che abbia 2.6.1 da cygwin1.dll ( cygcheck). Non ottengo "0 (root)", ma ottengo "114 (account locale e membro del gruppo di amministratori"), "544 (amministratori)" e "405504 (livello obbligatorio superiore)" anziché "401408 ( Livello obbligatorio medio) "sul mio sistema Windows 10 Pro x64-bit. Il contesto è che volevo eseguire fdisk, ma questo sembra ancora non aiutare, anche se potrei essere stato in grado di eseguire altri strumenti con accesso privilegiato bene, come ddsu un file di flusso del dispositivo a blocchi, solo curioso qui.
Pysis,

@Pysis: questo può avere a che fare con W10 ?! - Sfortunatamente posso solo speculare mentre uso solo W7.
mpy,

11

Di recente ho dovuto clonare un'unità USB su un'altra su Windows. La mia unità è un multiboot con software aggiuntivo, quindi non volevo solo copiare tutti i file su FS. DD è stata una scelta chiara, ma non ero su Linux, quindi c'erano alcune cose che dovevo fare per farlo funzionare.

Ho installato Cygwin e ho fatto quanto segue.

prima ho dovuto capire quale dispositivo / dev / sdX era il mio volume f :. Per fare ciò, eseguire questo comando in cygwin. (SUGGERIMENTO: assicurarsi di avviare Cygwin con i privilegi di amministratore. * Fare clic con il tasto destro su Cygwin e "Esegui come amministratore")

    cat /proc/partitions
which should output:
   8 0 3813383838 sda
   8 1       4031 sda3 C:\
   8 15  30588303 sdb 
   8 15  30588303 sdb1 E:\
   8 21  30530020 sdc
   8 22  30530020 sdc1 F:\

ecc ... Qui puoi vedere chiaramente per me clonare la mia F: guidare sulla mia E: guidare Emetterei il seguente comando.

C'è un altro passaggio in realtà, devi trovare la radice del tuo dispositivo. Cerca un SD * che abbia una dimensione del tuo dispositivo. Questo dovrebbe essere facile in quanto le dimensioni dovrebbero essere ben note come 8 GB, 16 GB, 32 GB espansi come byte come mostrato sopra.

dd if=/dev/sdc of=/dev/sdb bs=8M

La mia immagine era di 32 GB .. e non volevo solo sedermi e aspettare con un cursore lampeggiante .. Volevo vedere i progressi, quindi ho installato "PV" in Cygwin.

dd if=/dev/sdc | pv | dd of=/dev/sdb bs=8M

Ora se vuoi copiare la levetta su un'immagine, procedi come segue.

dd if=/dev/sdX | pv | dd of=/cygdrive/c/Users/Myname/Desktop/mythumbdrive.img bs=8M

Spero che sia di aiuto


2

Qualcosa come USB Image Tool farà?
Oppure, insisti sull'uso di Cygwin? ...


Nessuna insistenza sull'uso di Cygwin. Quello strumento era un po 'strano quando si visualizzava la scheda di memoria SD (a volte le informazioni scomparivano, ma forse era Windows che faceva qualcosa) ma sembrava funzionare ed era DAVVERO VELOCE. Ho un file da 4 GB sul mio computer delle dimensioni che mi aspettavo. Penso che lo diffonderò con una versione dall'attuale comando 'dd' solo per essere sicuro. Se questo sembra buono, accetterò la tua risposta. Grazie!
Grandammiraglio

Bene, i file non corrispondono, ma potrebbe essere colpa mia. Penso di aver avviato il RPi dopo aver preso la prima immagine, senza pensarci. Bene, almeno ho il backup che volevo ora e ho uno strumento per sperimentare lungo la strada che funziona sotto Windows. Nel peggiore dei casi guiderò a casa e userò un computer / sistema operativo sano. :)
GrandAdmiral

2

Ho avuto successo con dd per Windows , che credo sia una riscrittura piuttosto che una porta. È open-source e non si basa su Cygwin.

Mi è particolarmente piaciuto il dd --listcomando, che elencava tutti i dispositivi del disco con abbastanza informazioni per identificare quello che volevo.


1

HDD Raw Copy Tool può eseguire copie di una scheda SD. Se selezioni "Immagine non elaborata (immagine dd)" nella finestra di dialogo di salvataggio, sarà identica a quella creata con dd. Puoi anche ripristinare le immagini.

So che non viene eseguito tramite Cygwin, ma personalmente non mi fiderei di aver accesso ai dispositivi grezzi.


Dove ottieni l'opzione per salvare un'immagine non elaborata? Ho visto dove è possibile selezionare la sorgente (scheda di memoria SD) e la destinazione (HDD), ma poi c'era solo un pulsante Start. Dato che non era chiaro cosa sarebbe successo dopo, sono uscito dal programma.
Grandammiraglio

Prima fai doppio clic sull'unità, quindi nella schermata successiva fai doppio clic sull'opzione "File" in cui puoi scegliere dove salvare l'immagine.
yuikonnu,

0

Vedo che RaspberryPi.org ora consiglia Win32 Disk Imager per la scrittura di immagini su schede di memoria SD. Leggerà anche le immagini dalla scheda, quindi lo sto provando ora.


Mi rifiuto di toccarlo in quanto vi sono segnalazioni di cestinazione del disco di sistema. Raro, ma dipende dall'hardware e non ho intenzione di rischiare.
tjmoore,
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.