LINUX.ORG.RU

проблема с dd

 , ,


0

1

Здравствуйте! Столкнулся с такой проблемой. На карте памяти стоит операционка Raspberry, необходимо сделать образ с помощью dd.

Команда fdisk -l показывает, что на карте памяти два раздела:

Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 204800 729087 524288 256M c W95 FAT32 (LBA) /dev/mmcblk0p2 729088 14940159 14211072 6.8G 83 Linux

Выполняю команду, для записи mbr sudo dd if=/dev/mmcblk0p1 if=/dev/mmcblk0p2 of=/media/root/mbr_1.img count=1 bs=512

и команду, для записи образа дисков: sudo dd if=/dev/mmcblk0p1 if=/dev/mmcblk0p2 of=/media/root/Rasp_1.img bs=1M

но к сожалению ничего не получается. Помогите пожалуйста!

Ещё раз почитать, как пользоваться dd, к примеру. У тебя каша из команды, если ты хочешь скопировать всю флешку - не указывай раздел (p1, p2). Оставь /dev/mmcblk0. И проверь через fdisk -l, что не путаешь устройство. Зачем у тебя 2 параметра if= ??

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 3)

И еще момент в дополнение к сказанному.
Если на карте разметка GPT (а этому в обрезке вывода fdisk не видно ни подтверждения, ни опровержения), то она лежит не в первых 512 байтах, в этом случае используйте для сохранения таблицы GPT удилиту gdisk, у нее есть команды сохранения/восстановления GPT.

Если будете делать образ карточки целиком, то в сохранении отдельно таблицы разделов нужы нет.

Образ, полученный по dd, хранит и все незанятое место; вероятно имеет смысл сохранение только актуального содержимого. Но тут решать вам.

bormant ★★★★★ ()
Последнее исправление: bormant (всего исправлений: 3)
Ответ на: комментарий от bormant

вероятно имеет смысл сохранение только актуального содержимого.

Я вообще через rsync это делаю. Потому что если восстанавливать буду после факапа флешки или моего - разделы уже будут такие же, а место сэкономлено. Но по времени может быть дольше. Есть ещё гуй для него: LuckyBackup. Кстати, удобно, если с терминалом плохо дружишь.
А вот способа просто снять копию диска без свободного места, я что-то не знаю. Кстати, я рекомендую использовать для копий всяких флешек ddrescue, а не dd. У него не бывает проблем со сбросом каких-нибудь буферов и всегда можно быть уверенным, что скопирован каждый байт. dd для записи образов на флешки я не использую вообще.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)

Привет. Смотри. Во времена IDE-шных жёстких дисков, они отображались в системе как файлы блочных устройств (не знаю что это значит, но на всякий случай выделил жирным курсивом) /dev/hda, /dev/hdb, /dev/hdc, /dev/hdd. Первый это Primary Master, второй Primary Slave, третий Secondary Master, четвёртый Secondary Slave.

Устройство /dev/hda1, это первый раздел на диске /dev/hda. Если там всего один раздел, то только один этот файл и есть. А если там вообще нет разделов (допустим, ещё не создан), то у тебя есть просто /dev/hda.

После переезда на диски SATA, диски стали называться /dev/sda, /dev/sdb и так далее.

А у тебя вон SD-флешка, и поэтому она называется /dev/mmcblk0. /dev/mmcblk0p1 это «раздел 1», /dev/mmcblk0p2 это «раздел 2», и так далее.

Я не знаю, почему у тебя так. У меня вон кард-ридер ноутбука даёт SD-карточкам тоже адреса /dev/sdx. Ну, не важно.

dd if=/dev/sdb of=/home/username/Images/fleshka.img

Эта команда скопирует флешку в файл. Причём я копирую её всю, от первого до последнего байта. А если бы я указал sda1 или sda2, то я бы копировал только один раздел

if это «откуда копировать». of это «куда копировать». Всё просто.

Если например сделать dd if=/dev/sda1 of=/dev/sda2, то ты скопируешь первый раздел во второй, и всё затрёшь. Так что пользуйся dd аккуратно. Это как хирургический скальпель, в умелых руках отрежет тебе то, что надо, с точностью до байта, а в неумелых - затрёт нужные тебе денные без возможности восстановления

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от fehhner

А вот способа просто снять копию диска без свободного места, я что-то не знаю.

man dumpe2fs. Ну или забить свободное место файлом с нулями, а потом dd | gzip.

legolegs ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Замечания очень полезные и правильные по именованию дисков.
Только вот придётся почитать ман по dd, чтобы выводился прогресс (status=progress), потом подобрать размер буфера под флешку для нормальной скорости (bs=..), затем если у человека usb 3.0, вероятно запишется за секунды, а потом будет висеть неизвестное количество времени до реальной записи. Можно найти conv=fdatasync oflag=direct и ещё непонятные параметры. Потом, привыкнув использовать дд, можно столкнуться с копированием старого диска и какие-то сектора не считаются. Не думаю, что новичку можно рекомендовать возможность встретить столько проблем.
Я пойму ещё задачу создать пустой файл 512Мб этой утилитой:

dd if=/dev/zero of=myfile bs=1M count=512
Но если просто записывать диск:
sudo ddrescue -D --force /dev/sdc my.img
Скопирует весь диск в файл my.img, проверит каждый байт (что он действительно записан), будет сразу выводить всю инфу по прогрессу, не потребует ковыряться ни с какими буферами и вообще лучше под эти задачи. Несмотря на похожие названия, это разные утилиты и вторая заточена хорошо вытаскивать/записывать данные на диски.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от fehhner

Только вот придётся почитать ман по dd, чтобы выводился прогресс (status=progress)

Это только с 3.2 ядра умеют

burato ★★★★★ ()
Ответ на: комментарий от bormant

Кстати, /dev/*1 в 256 МБ с FAT32 разметкой — это EFI раздел на разметке MBR?

Это не EFI - это раздел для конфиг-файла (типа настроек Биоса на РС), который читает GPU (в малинке главный - именно видеопроцессор и он настраивает чипсет (частоты, напряжения, режимы видео) а затем грузит ядро во вспомогательный АРМ)

sigurd ★★★★★ ()
Последнее исправление: sigurd (всего исправлений: 1)
Ответ на: комментарий от fehhner

Спасибо. Интересно. Я как-то забивал нулями флешку, и скорость копирования была низкой. Попробую делать это с помощью ddrescue - может быстрее будет. А ещё я попробую эту утилиту при копировании старых HDD и дискет.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

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

Нет, ты неправильно меня понял. Я, например, создавал через dd пустой образ диска для виртуалки с нужным мне размером, или пустой файл нужного размера. Кстати, может есть способ создать пустой файл нужного объёма (например, ровно 4096Кб) лучше?
Флешку нулями лучше забивать через shred, если диск магнитный, нули могут его не забить и восстанавливается в лаборатории по магнитной памяти диска. Нужно, например, скрыть файлы, 3 раза перезаписать случайными данными, а потом закрыть нулями.Делается так:

shred -uvz -n3 filename_or_devicename
Стоит обратить внимание, что если это ssd/hybrid hd+ssd, то он нулями просто забивать будет по ускоренному методу прошивки и данные сохранятся. Всё равно нужно перезаписать все данные случайными каждый байт (чтобы перезапись реально произошла), но подойдёт параметр -n1 (чтобы ssd не гробить перезаписью, памяти магнитной у него нет и хватит лишь один раз реально преписать и нулей сверху для галочки).

А ещё я попробую эту утилиту при копировании старых HDD и дискет.

Вот тут она справится идеально и как надо. Но сейчас половина флешек китайских, она идеальную производительность и на них показывает. И, повторюсь, куча геммора в минус по подборам параметров. Я (вот честно), считаю, что если мне надо флешку прожечь образом - это всегда должно просто работать. Идеально до байта. На любом железе (новом/старом - не важно). И я должен быть уверен в результате без шаманств. Жаль, что лишь для небольшой части дистров пока замена в туториалах произошла (но я узнал раньше). Устарел dd/

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 2)
Ответ на: комментарий от fehhner

Да и обычные флешки ddrescue бережёт. это отличная утилита. У dd даже есть народное имя: «Убийца флешек».

fehhner ★★★★★ ()
Ответ на: комментарий от Deleted

Пруф?

Мне сложно нагуглить что-то на этот счёт, т.к. вылезают всё флешки-убийцы для сжигания usb порта. Минимум уже в 2013 человек писал, что слышал такое название (хотя к его теме это не относится, там он сам натупил): Затёр первые 700мб ext3 раздела (комментарий)
Но такие высказывания я слышал раньше несколько раз. Вообще, лучший пруф - это кучка дохлых микросд у меня в шкатулке. Малина например работает себе спокойно, пишет-читает, каждый день включается и всё нормально пока не трогаю. Потом достаю, обаз новый прожигаю и флешка ломается, было не раз.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.