Як використовувати Cygwin для копіювання зображення з карти пам'яті SD


30

Якщо коротко розповісти, я працюю на машині Windows 7, і я хотів би зняти зображення з SD-карти (резервне копіювання карти з Raspberry Pi ). Я намагаюся використовувати Cygwin , але не маю особливого успіху.

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

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

Я отримую наступне:

dd: відкриття '/ dev / sdd': дозвіл відхилено

Я без проблем використовував dd на Mac та під Linux, використовуючи подібний синтаксис. Що мені не вистачає з Cygwin?


Ви пробували dd if=/dev/sdd1 of RPi.img?
Круг

Якщо я це зробити, я отримую лише файл ~ 59 Мб з картки пам'яті SD 4 Гб. В основному я отримую лише ту частину карти, яку Windows "бачить", коли ви вставляєте картку в читач. Це не повний образ.
GrandAdmiral

Чи можете ви використати машину Linux або Linux LiveCD замість спроби в Windows?
Круг

Віртуальні машини Linux, схоже, не бачать карту пам'яті SD (випробували програвач VMware і VirtualBox), оскільки я використовую внутрішній зчитувач на ноутбуці. Потім доверху .... У мене також немає записувача компакт-дисків у ноутбуці. :) У мене вдома є Mac, який я можу використовувати, я просто намагався знайти щось, що би спрацювало з моєю нинішньою ситуацією .... і з'ясувати, чи це можливо. Здавалося, цигуін мав би працювати.
GrandAdmiral

4
Я виявив, що я також можу використовувати "cat / proc / partitions", щоб отримати ім'я доданої карти пам'яті SD.
GrandAdmiral

Відповіді:


27

Ви отримуєте Permission deniedпомилку, тому що ви не є root. Це звучить дивно в контексті Сігвіна, але це вражає додому.

Коли ви запитаєте свій статус ( 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 хитрість стати rootCygwin - це запустити сеанс піднятим , тобто натиснути правою кнопкою миші на вашу піктограму 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 пропонують рішення, я прийму цю відповідь, оскільки це більше стосується мого початкового питання.
GrandAdmiral

Я не є членом root таким чином. Чи щось змінилося?
Pysis

1
@Pysis: Я все ще можу вкоренитися таким чином за допомогою поточної версії 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 ( Середній обов'язковий рівень) "у моїй x64-бітній системі Windows 10 Pro. Контекст полягає в тому, що я хотів запустити fdisk, але це все ще не допомагає, хоча, можливо, мені вдалося просто запустити інші інструменти з привілейованим доступом, наприклад, ddна файлі потокового блоку пристроїв, тут лише цікаво.
Pysis

@Pysis: Може це стосується W10 ?! - На жаль, я можу лише спекулювати, оскільки використовую лише W7.
mpy

11

Нещодавно мені довелося клонувати один USB-накопичувач на інший у Windows. Мій диск - це багатозавантажена програма з додатковим програмним забезпеченням, тому я не хотів просто копіювати всі файли на FS. DD був чітким вибором, але я не був на Linux, тому мені довелося зробити кілька речей, щоб він працював.

У мене був встановлений cygwin і робив наступне.

спершу мені довелося розібратися, який / dev / sdX пристрій мій f: том. Для цього запустіть цю команду в 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: drive, я би видав таку команду.

Насправді є ще один крок, ви повинні знайти корінь свого пристрою. Шукайте 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

Тепер, якщо ви хочете скопіювати thumbdrive на зображення, зробіть наступне.

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

Сподіваюся, це допомагає


2

Чи зробить щось на зразок USB Image Tool ?
Або ви наполягаєте на використанні Cygwin? ...


Ніяких наполягань на використанні Cygwin. Цей інструмент був дещо дивним, коли відображалася карта пам'яті SD (іноді інформація зникала, але, можливо, це щось робило Windows), але, здавалося, це працює, і це дійсно швидше. На моєму комп’ютері у мене є файл розміром 4 ГБ, який я очікував. Я думаю, що я відрізнятиму його версією від фактичної команди 'dd', щоб переконатися. Якщо це добре виглядає, я прийму вашу відповідь. Спасибі!
GrandAdmiral

Ну, файли не збігалися, але це могла бути моєю провиною. Я думаю, що я завантажив RPi після того, як схопив перший образ, не думаючи про це. Ну, принаймні, у мене є резервна копія, яку я хотів зараз, і у мене є інструмент для експерименту з дорогою, яка працює під Windows. Найгірший випадок, я просто поїду додому і користуюся здоровим комп’ютером / ОС. :)
GrandAdmiral

2

Я мав успіх з dd для Windows , який, на мою думку, є переписати, а не порт. Це відкритий код і не покладається на Cygwin.

Особливо мені сподобалась dd --listкоманда, в якій перераховані всі дискові пристрої, а також достатньо інформації, щоб визначити той, який я хотів.


1

Інструмент для копіювання на жорсткому диску може зробити копії SD-карти. Якщо у діалоговому вікні збереження ви вибрали "Неочищене зображення (зображення DD)", воно буде ідентичним тим, що зроблено з dd. Ви також можете відновити зображення.

Я знаю, що це не робиться через cygwin, але я особисто не довіряв би цьому доступу до сирих пристроїв.


Звідки ви маєте можливість зберегти зображення у форматі "Сире зображення"? Я бачив, де можна вибрати джерело (карта пам'яті SD) та місце призначення (HDD), але тоді була просто кнопка «Пуск». Оскільки було не ясно, що буде далі, я вийшов з програми.
GrandAdmiral

Спочатку ви двічі клацніть свій диск, а потім на наступному екрані двічі клацніть на опції «Файл», де ви можете вибрати, де зберегти зображення.
yuikonnu

0

Я бачу, що RaspberryPi.org тепер рекомендує програму Win32 Disk Imager для запису зображень на карти пам'яті SD. Він також буде читати зображення з картки, тому я зараз його пробую.


Я відмовляюся торкатися цього, оскільки є повідомлення про те, що він викидає ваш системний диск. Рідкісний, але це залежить від обладнання, і я не збираюся ризикувати.
tjmoore
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.