Jak używać Cygwin do kopiowania obrazu z karty pamięci SD

30

Krótko mówiąc, pracuję na komputerze z systemem Windows 7 i chciałbym usunąć obraz z karty SD (tworzenie kopii zapasowej karty z Raspberry Pi ). Próbuję użyć Cygwina , ale nie odnoszę większego sukcesu.

Przeglądając /devkatalog, wygląda na to, że moja karta SD pokazuje się jako sddi sdd1. Jednak po uruchomieniu następującego polecenia:

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

Dostaję następujące:

dd: otwieranie „/ dev / sdd”: Odmowa zezwolenia

Użyłem dd na Macu i pod Linuksem bez problemu, używając podobnej składni. Czego mi brakuje w Cygwin?

GrandAdmiral
źródło
Próbowałeś dd if=/dev/sdd1 of RPi.img?
Kruug,
Jeśli to zrobię, otrzymam tylko ~ 59 MB pliku z karty pamięci SD 4 GB. Zasadniczo otrzymuję tylko część karty, którą Windows „widzi” po włożeniu karty do czytnika. To nie jest pełny obraz.
GrandAdmiral
Czy możesz użyć komputera z systemem Linux lub Linux LiveCD zamiast próbować w systemie Windows?
Kruug
Wirtualne maszyny Linux nie wydają się widzieć karty pamięci SD (wypróbowałem VMware Player i VirtualBox), ponieważ używam wewnętrznego czytnika na laptopie. I na koniec ... Nie mam też nagrywarki CD w laptopie. :) Mam w domu komputer Mac, z którego mogę korzystać, po prostu próbowałem znaleźć coś, co zadziałałoby w mojej obecnej sytuacji ... i zastanowiłem się, czy to w ogóle możliwe. Wydawało się, że cygwin powinien był działać.
GrandAdmiral
4
Odkryłem, że mogę również użyć „cat / proc / partitions”, aby uzyskać nazwę dołączonej karty pamięci SD.
GrandAdmiral

Odpowiedzi:

27

Pojawia się Permission deniedbłąd, ponieważ go nie ma root. To brzmi dziwnie w kontekście Cygwina, ale uderza w dom.

Gdy zapytasz o swój status ( id) w normalnie uruchomionej powłoce Cygwin, otrzymasz coś takiego:

$ 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

W systemie Windows 7 sztuczką, aby zostać rootw Cygwin, jest rozpoczęcie sesji z podwyższonym poziomem uprawnień , to znaczy kliknij prawym przyciskiem myszy ikonę Cygwin i wybierz Uruchom jako administrator . Teraz nadal nie jesteś rootsobą, ale przynajmniej w rootgrupie:

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

A teraz dddziała tak, jak przywykłeś do tego z 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
mpy
źródło
Bardzo interesujące i to działa. Dzięki! Chociaż zarówno ta metoda, jak i narzędzie USB Image Tool stanowią rozwiązanie, zaakceptuję tę odpowiedź, ponieważ jest ona bardziej bezpośrednio związana z moim początkowym pytaniem.
GrandAdmiral
Nie jestem członkiem root w ten sposób. Czy coś się zmieniło?
Pysis
1
@Pysis: Nadal jestem w stanie zrootować się w ten sposób dzięki obecnej wersji cygwin ( CYGWIN_NT-6.1-WOW 2.7.0 (0.306 / 5/3) 2017-02-12 13:13 i686 Cygwin ) od dzisiejszej aktualizacji. Może stackoverflow.com/q/4090301 na SO może ci pomóc ?!
mpy
Wygląda na to, że mam wersję 2.6.1 z pliku cygwin1.dll ( cygcheck). Nie dostaję „0 (root)”, ale dostaję „114 (konto lokalne i członek grupy administratorów”), „544 (administratorzy)” i „405504 (wysoki poziom obowiązkowy)” zamiast „401408 ( Medium Mandatory Level) ”w moim systemie Windows 10 Pro x64-bit. Kontekst polega na tym, że chciałem uruchomić fdisk, ale nadal wydaje się to nie pomagać, chociaż mogłem być w stanie uruchomić inne narzędzia z uprzywilejowanym dostępem w porządku, na przykład w ddpliku strumienia urządzenia blokowego, tylko tutaj ciekawe.
Pysis
@Pysis: Czy może to mieć związek z W10 ?! - Niestety mogę tylko spekulować, ponieważ używam tylko W7.
mpy
11

Niedawno musiałem sklonować jeden dysk USB na inny w systemie Windows. Mój dysk jest multiboot z dodatkowym oprogramowaniem, więc nie chciałem po prostu kopiować wszystkich plików na FS. DD był oczywistym wyborem, ale nie byłem na Linuksie, więc musiałem zrobić kilka rzeczy, aby go uruchomić.

Zainstalowałem cygwin i wykonałem następujące czynności.

najpierw musiałem dowiedzieć się, jakie urządzenie / dev / sdX było moim wolumenem f:. Aby to zrobić, uruchom to polecenie w cygwin. (WSKAZÓWKA: Upewnij się, że zaczynasz cygwin z adminami prywatnymi. * Kliknij prawym przyciskiem myszy cygwin i „Uruchom jako administrator”)

    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:\

itd ... Tutaj możesz wyraźnie sklonować mój dysk F: na mój dysk E: Wydam następujące polecenie.

Jest jeszcze jeden krok, musisz znaleźć katalog główny urządzenia. Poszukaj SD * o rozmiarze twojego urządzenia. Może to być łatwe, ponieważ rozmiar powinien być dobrze znany, taki jak 8 GB, 16 GB, 32 GB rozszerzony jako bajty, jak pokazano powyżej.

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

Mój obraz miał 32 GB i nie chciałem po prostu siedzieć i czekać z migającym kursorem. Chciałem zobaczyć postęp, więc zainstalowałem „pv” w cygwinie.

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

Teraz, jeśli chcesz skopiować thumbdrive do obrazu, wykonaj następujące czynności.

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

Mam nadzieję że to pomoże

Jaime
źródło
2

Czy zrobi coś takiego jak narzędzie USB Image Tool ?
Czy nalegasz na korzystanie z Cygwin? ...

nik
źródło
Brak nacisków na korzystanie z Cygwin. To narzędzie było trochę dziwne podczas wyświetlania karty pamięci SD (czasami informacje znikały, ale może to był Windows, który coś robił), ale wydawało się, że działa i było NAPRAWDĘ SZYBKO. Mam na swoim komputerze plik 4 GB o rozmiarze, którego się spodziewałem. Myślę, że różnicuję to wersją z rzeczywistego polecenia „dd”, żeby się upewnić. JEŚLI to wygląda dobrze, zaakceptuję twoją odpowiedź. Dzięki!
GrandAdmiral
Pliki się nie zgadzały, ale to może być moja wina. Myślę, że uruchomiłem RPi po złapaniu pierwszego obrazu, nie myśląc o tym. Cóż, przynajmniej mam kopię zapasową, którą chciałem teraz, i mam narzędzie do eksperymentowania w dół, które działa pod Windows. W najgorszym przypadku po prostu jeżdżę do domu i używam rozsądnego komputera / systemu operacyjnego. :)
GrandAdmiral
2

Miałem sukces z dd dla Windows , który moim zdaniem jest przepisem, a nie portem. Jest open source i nie opiera się na Cygwin.

Szczególnie podobało mi się to dd --listpolecenie, które zawierało listę wszystkich urządzeń dyskowych wraz z wystarczającą ilością informacji, aby zidentyfikować to, którego chciałem.

RomanSt
źródło
1

Narzędzie HDD Raw Copy Tool może wykonywać kopie kart SD. Jeśli wybierzesz „Surowy obraz (obraz dd)” w oknie dialogowym zapisu, będzie on identyczny z obrazem wykonanym za pomocą dd. Możesz także przywracać obrazy.

Wiem, że nie odbywa się to za pośrednictwem cygwina, ale osobiście nie ufałbym temu w dostępie do surowych urządzeń.

yuikonnu
źródło
Skąd masz opcję zapisania surowego obrazu? Widziałem, gdzie można wybrać źródło (karta pamięci SD) i miejsce docelowe (HDD), ale potem był tylko przycisk Start. Ponieważ nie było jasne, co będzie dalej, wyszedłem z programu.
GrandAdmiral
Najpierw dwukrotnie kliknij dysk, a następnie na następnym ekranie kliknij dwukrotnie opcję „Plik”, w której możesz wybrać miejsce zapisania obrazu.
yuikonnu
0

Widzę, że RaspberryPi.org zaleca teraz Win32 Disk Imager do zapisywania obrazów na kartach pamięci SD. Odczyta również obrazy z karty, więc próbuję teraz.

GrandAdmiral
źródło
Nie chcę tego dotykać, ponieważ pojawiają się doniesienia o tym, że niszczy on dysk systemowy. Rzadko, ale zależy to od sprzętu i nie zamierzam ryzykować.
tjmoore,