Как использовать Cygwin для копирования изображения с карты памяти SD

30

Короче говоря, я работаю на компьютере с Windows 7, и я хотел бы удалить изображение с SD-карты (резервное копирование карты с Raspberry Pi ). Я пытаюсь использовать Cygwin , но без особого успеха.

Изучив /devкаталог, похоже, что моя SD-карта отображается как sddи sdd1. Тем не менее, когда я запускаю следующую команду:

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

Я получаю следующее:

дд: открытие '/ dev / sdd': в доступе отказано

Я использовал dd на Mac и под Linux без проблем, используя похожий синтаксис. Чего мне не хватает в Cygwin?

GrandAdmiral
источник
Ты пробовал dd if=/dev/sdd1 of RPi.img?
Крууг
Если я это сделаю, я получу файл размером ~ 59 МБ только с 4 ГБ карты памяти SD. По сути, я получаю только ту часть карты, которую Windows «видит», когда вы вставляете карту в ридер. Это не полное изображение.
Гранд-адмирал
Можете ли вы использовать Linux-машину или Linux LiveCD вместо попытки в Windows?
Крууг
Виртуальные машины Linux, кажется, не видят карту памяти SD (пробовал VMware Player и VirtualBox), потому что я использую встроенный считыватель на ноутбуке. Тогда, чтобы завершить это .... У меня также нет записывающего устройства CD в ноутбуке. :) У меня дома есть Mac, который я могу использовать, я просто пытался найти что-то, что будет соответствовать моей нынешней ситуации .... и выясню, возможно ли это. Похоже, Cygwin должен был работать.
Гранд-адмирал
4
Я обнаружил, что могу также использовать «cat / proc / partitions», чтобы получить имя подключенной карты памяти SD.
Гранд-адмирал

Ответы:

27

Вы получаете Permission deniedошибку, потому что это не так root. Это звучит странно в контексте Cygwin, но это ударяет домой.

Когда вы запрашиваете ваш статус ( id) в нормально запущенной оболочке Cygwin, вы получите что-то вроде этого:

$ 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

Под Windows 7 уловка, чтобы стать rootв Cygwin, состоит в том, чтобы начать сеанс с повышенными правами, то есть, щелкните правой кнопкой мыши на значке Cygwin и выберите « Запуск от имени администратора» . Теперь вы все еще не в rootсебе, а хотя бы в rootроссийской группе:

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

И теперь ddработает так, как вы к нему привыкли из 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
МРУ
источник
Очень интересно, и это работает. Благодарность! Хотя и этот метод, и USB Image Tool обеспечивают решение, я приму этот ответ, потому что он напрямую связан с моим первоначальным вопросом.
Гранд-адмирал
Я не член root таким образом. Что-нибудь изменилось?
Пизис
1
@Pysis: я все еще могу получить root права на текущую версию Cygwin ( CYGWIN_NT-6.1-WOW 2.7.0 (0.306 / 5/3) 2017-02-12 13:13 i686 Cygwin ) с сегодняшнего обновления. Может быть, stackoverflow.com/q/4090301 на SO может быть полезным для вас ?!
mpy
Кажется, у меня 2.6.1 от cygwin1.dll ( cygcheck). Я не получаю «0 (root)», но я получаю «114 (локальная учетная запись и член группы администраторов»), «544 (администраторы)» и «405504 (высокий обязательный уровень)» вместо «401408 ( Средний обязательный уровень) на моей 64-битной системе Windows 10 Pro. Ситуация в том, что я хотел запустить fdisk, но это все равно, кажется, не помогает, хотя я, возможно, смог запустить другие инструменты с привилегированным доступом просто отлично, например, в ddфайле потока блочных устройств, только здесь любопытно.
Пизис
@Pysis: может это связано с W10 ?! - К сожалению, я могу только строить догадки, поскольку я использую только W7.
mpy
11

Мне недавно пришлось клонировать один USB-накопитель на другой в Windows. Мой диск мультизагрузочный с дополнительным программным обеспечением, поэтому я не хотел просто копировать все файлы на ФС. DD был очевидным выбором, но я не был на linux, поэтому я должен был сделать несколько вещей, чтобы он заработал.

Я установил Cygwin и сделал следующее.

Сначала я должен был выяснить, каким устройством / dev / sdX был мой f: volume. Для этого запустите эту команду в Cygwin. (СОВЕТ: Убедитесь, что вы запускаете cygwin с правами администратора. * Щелкните правой кнопкой мыши на cygwin и выберите «Запуск от имени администратора»).

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

и т.д ... Здесь вы можете ясно увидеть, как я клонирую свой диск F: на мой диск E: я бы выполнил следующую команду.

На самом деле есть еще один шаг, вы должны найти корень вашего устройства. Ищите SD *, который имеет размер вашего устройства. Это должно быть легко, так как размер должен быть хорошо известен, например, 8 ГБ, 16 ГБ, 32 ГБ, расширенные как байты, как показано выше.

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

Мое изображение было 32 ГБ ... и я не хотел просто сидеть и ждать с мигающим курсором ... Я хотел видеть прогресс, поэтому я установил "pv" в cygwin.

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

Теперь, если вы хотите скопировать флэш-накопитель на изображение, сделайте следующее.

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

Надеюсь это поможет

Jaime
источник
2

Подойдет ли что-то вроде USB Image Tool ?
Или вы настаиваете на использовании Cygwin? ...

Nik
источник
Нет настойчивости в использовании Cygwin. Этот инструмент был немного странным при отображении карты памяти SD (иногда информация исчезала, но, возможно, Windows что-то делала), но она работала и была действительно БЫСТРАЯ. У меня на компьютере находится файл размером 4 ГБ, размер которого я ожидал. Я думаю, что я сделаю это с версией из фактической команды 'dd' просто чтобы убедиться. Если это выглядит хорошо, я приму ваш ответ. Благодарность!
Гранд-адмирал
Ну, файлы не совпадают, но это может быть моя вина. Я думаю, что я загрузил RPi после захвата первого изображения, не думая об этом. Ну, по крайней мере, у меня есть резервная копия, которую я сейчас хотел, и у меня есть инструмент для экспериментов, который работает под Windows. В худшем случае я просто поеду домой и использую вменяемый компьютер / ОС. :)
GrandAdmiral
2

У меня был успех с dd для Windows , который я считаю переписать, а не порт. Это с открытым исходным кодом и не зависит от Cygwin.

Мне особенно понравилась dd --listкоманда, которая перечисляла все дисковые устройства вместе с достаточным количеством информации, чтобы определить желаемое.

RomanSt
источник
1

HDD Raw Copy Tool может делать копии с SD-карты. Если вы выберете «Raw image (dd image)» в диалоговом окне сохранения, то оно будет идентично тем, которые были созданы с помощью dd. Вы можете восстановить изображения тоже.

Я знаю, что это не сделано через Cygwin, но я лично не доверял бы это с доступом к необработанным устройствам.

yuikonnu
источник
Где вы получаете возможность сохранить необработанное изображение? Я видел, где можно выбрать источник (карта памяти SD) и место назначения (HDD), но тогда была только кнопка «Пуск». Поскольку было неясно, что будет дальше, я вышел из программы.
Гранд-адмирал
Сначала дважды щелкните диск, а затем на следующем экране дважды щелкните параметр «Файл», где можно выбрать место для сохранения изображения.
Юиконну
0

Я вижу, что RaspberryPi.org сейчас рекомендует Win32 Disk Imager для записи изображений на карты памяти SD. Он также будет читать изображения с карты, так что я сейчас пробую.

GrandAdmiral
источник
Я отказываюсь прикасаться к этому, поскольку есть сообщения о том, что он попал на системный диск. Редко, но это зависит от оборудования, и я не собираюсь рисковать.
tjmoore