LINUX.ORG.RU

dd некорректно (не)записывает образ на флешку

 , , ,


0

4

Всем привет! На компьютере установлен Linux Mint 18. Некоторое время назад появилась проблема при записи образов. Делаю

dd if=debian-9.5.0-amd64-netinst.iso of=/dev/sdb bs=4M status=progress conv=fsync

Команда моментально завершается вот с таким выводом:

72+1 записей получено
72+1 записей отправлено
305135616 байт (305 MB, 291 MiB) скопирован, 0,189967 s, 1,6 GB/s

Т.е. вывод не содержит ошибок, но запись должна была занять некоторое время, не секунду. Судя по 1,6 GB/s оно записалось куда-то в кэш, а до флешки не доехало, несмотря на conv=fsync

С флешки, конечно, не удается загрузиться. fdisk говорит, что на ней

Устр-во Загрузочный Start Конец Секторы Size Id Тип
/dev/sdb1 * 0 595967 595968 291M 0 Пустой
/dev/sdb2 3772 4603 832 416K ef EFI (FAT-12/16/32)

Если попробовать oflag=direct, пишет дичь:

dd if=debian-9.5.0-amd64-netinst.iso of=/dev/sdb bs=4M status=progress oflag=direct
dd: не удалось открыть '/dev/sdb': Недопустимый аргумент

Такая же ерунда происходит и с другими файлами образов и с другими же флешками. Раньше все работало хорошо, на ноутбуке с той же версией ОС, той же флешкой и теми же образами все работает нормально. В логах ничего интересного от слова совсем.

Кто виноват и что делать?

РЕШЕНИЕ: оказалось, что /dev/sdb - файл, не связанный с флешкой (разумеется, этот файл присутствовал даже когда флешка не была вставлена):

ls -l /dev/sd*
brw-rw---- 1 root disk      8, 0 авг  9 16:40 /dev/sda
brw-rw---- 1 root disk      8, 1 авг  9 16:40 /dev/sda1
brw-rw---- 1 root disk      8, 2 авг  9 16:40 /dev/sda2
brw-rw---- 1 root disk      8, 3 авг  9 16:40 /dev/sda3
-rw-r--r-- 1 root root 305135616 авг  9 17:32 /dev/sdb

Я удалил этот файл и флешки вновь стали записываться как положено:

dd if=debian-9.5.0-amd64-netinst.iso of=/dev/sdb status=progress conv=fsync
295371264 байт (295 MB, 282 MiB) скопирован, 28,0138 s, 10,5 MB/s
595968+0 записей получено
595968+0 записей отправлено
305135616 байт (305 MB, 291 MiB) скопирован, 57,8727 s, 5,3 MB/s

Ответ на: комментарий от i-rinat
dd if=debian-9.5.0-amd64-netinst.iso of=/dev/sdb bs=4M status=progress oflag=sync
72+1 записей получено
72+1 записей отправлено
305135616 байт (305 MB, 291 MiB) скопирован, 0,145269 s, 2,1 GB/s
dpronyaev ()

Вызови команду

sync
т.е.
dd if=... of=/dev/sdb ...
sync

anonymous ()

С флешки, конечно, не удается загрузиться

А если дождаться, пока на ней не перестанет моргать светодиод?

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

ты уже начал путаться в показаниях. или недоехали или недоделанная?
во втором случае это может быть тот факт, что netinst.iso у тебя недоделанный. в том плане, что либо не годится для dd либо вообще там мусор скачался изначально.
а может быть флешка уже всё, на помойку годится.

system-root ★★★★★ ()
Ответ на: комментарий от i-rinat
dd if=debian-9.5.0-amd64-netinst.iso of=/dev/sdb bs=4M status=progress oflag=nocache
72+1 записей получено
72+1 записей отправлено
305135616 байт (305 MB, 291 MiB) скопирован, 0,193805 s, 1,6 GB/s
dpronyaev ()
Последнее исправление: dpronyaev (всего исправлений: 1)
Ответ на: комментарий от system-root

Пробовал скачивать образ заново, пробовал другой образ, пробовал другие флешки. На других компах пишутся, на этом нет.

dpronyaev ()
Ответ на: комментарий от anonymous
# dd if=debian-9.5.0-amd64-netinst.iso of=/dev/sdb bs=4M status=progress oflag=nocache
72+1 записей получено
72+1 записей отправлено
305135616 байт (305 MB, 291 MiB) скопирован, 0,211555 s, 1,4 GB/s
ws175 ISO # grep -E '^(Dirty|Writeback)' /proc/meminfo
Dirty:              1172 kB
Writeback:             0 kB
WritebackTmp:          0 kB
ws175 ISO # grep -E '^(Dirty|Writeback)' /proc/meminfo
Dirty:              1048 kB
Writeback:             0 kB
WritebackTmp:          0 kB
ws175 ISO # grep -E '^(Dirty|Writeback)' /proc/meminfo
Dirty:              1060 kB
Writeback:             0 kB
WritebackTmp:          0 kB
ws175 ISO # grep -E '^(Dirty|Writeback)' /proc/meminfo
Dirty:              1056 kB
Writeback:             0 kB
WritebackTmp:          0 kB
ws175 ISO # grep -E '^(Dirty|Writeback)' /proc/meminfo
Dirty:              1068 kB
Writeback:             0 kB
WritebackTmp:          0 kB
ws175 ISO # grep -E '^(Dirty|Writeback)' /proc/meminfo
Dirty:              1112 kB
Writeback:             0 kB
WritebackTmp:          0 kB
dpronyaev ()
Ответ на: комментарий от conalex

Если на другом компе её отформатировать (в ext4, fat32) - неважно - пишется. На этом компе «испорченную» образом дебиана флешку даже разметить нормально не получается: в fdisk удалил все партиции, создал - new - primary - размер во всю флешку. Ошибок нет. Дальше сделал mkfs.ext4 - ошибок нет. Вытащил флешку, вставил снова - она видится в минтовском проводнике как «Debian 9.5.0 amd64 n», но не открывается.

lsblk флешку видит, mount показывает, что она не смонтирована

lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb      8:16   1  14,7G  0 disk 
└─sdb1   8:17   1  14,7G  0 part

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

А флэшка точно видна как sdb? Потому, что dd в конце делает sync, и если он пролетает мгновенно, то у вас всё пишется в /dev/sdb - но это совсем не флэшка, а файл в tmpfs (devtmpfs). Так что сделайте сначала file /dev/sdb

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

зачем тебе кривой fdisk (он научился в гпт?) когда есть parted? Занули старую разметку например, cat /dev/zero >/dev/sdb;sync. Проблема в том что ты не использовал кде и использовал убунту.

anonymous ()

Если ты постоянно на неё писал iso'шники, то, возможно, она отжила своё. У меня так 2 флешки сдохли. Вероятно, постоянная запись в какое-то место быстро убивает их ресурс.

crutch_master ★★★★★ ()

А в системном логе есть что-то при попытках провести эту операцию?

targitaj ★★★★★ ()

Забей флешку нулями.
Потом через «gparted» — создать таблицу разделов;
— новый раздел и отформатировать

kolja ★★ ()

Чтобы записать образ на флешку, я использую более простую команду:

dd if=/путь_к_образу.iso of=/dev/sdX
Зачем городить какие-то ненужные ключи? И так все работает.

Rinaldus ★★★★★ ()

мне неохота думать, в чём причина ошибки. Но можно сделать по-другому - авось, ошибка пропадёт.

1) В GParted посмотреть, есть ли там разделы и если есть, то удалить нафиг.

2) Вместо команды dd использовать программу записи образа на флешку. Их есть несколько. Сразу вспомнил mkusb. Она есть с интерфейсом командной строки и с графическим интерфейсом. Внутри себя она обращается к dd, но пользование ею более простое, чем непосредственно dd.

Partisan ★★★★ ()

Если попробовать oflag=direct, пишет дичь:
dd if=debian-9.5.0-amd64-netinst.iso of=/dev/sdb bs=4M status=progress oflag=direct
dd: не удалось открыть '/dev/sdb': Недопустимый аргумент

Нельзя с oflag=direct использовать произвольный размер блока (т.е. 4 мегабайта). Попробуй 4k или 512.

legolegs ★★★★★ ()

Похоже, у вас /dev/sdb — файл, а не устройство. Удалите его и переподключите флешку заново.

ValdikSS ★★★★★ ()

всю жизнь использую cat для записи образов - никогда не подводило.

PexuOne ()

Может просто память на флешке дохнет?

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

БИНГО!!! После вынимания флешки увидел, что файл /dev/sdb никуда не делся. Удалил его, вставил флешку - пишется так, как положено. Спасибо.

dpronyaev ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.