Вопрос: dd aplied для dev USB перед подключением поврежденных / dev / sdX и не работает


У меня есть USB, где я справляюсь с ISO 5 Мб aprox с небольшой ОС со своей собственной grub. Если я подключу устройство и проверьте его sudo fdisk -l Я получил:

...
Device     Boot Start   End Sectors  Size Id Type
/dev/sdb1  *        1  9551    9551  4.7M cd unknown

Если я копирую с dd ISO sudo dd if = my_os.iso of = / dev / sdb 

14852+0 records in
14852+0 records out
7604224 bytes (7.6 MB) copied, 0.538487 s, 14.1 MB/s

Он работает отлично. Загрузка из BIOS на другом ПК.

Проблема в том, что когда-то я забыл подключить USB после обновления BIOS, поэтому я делаю ff БЕЗ подключенного USB, выход:

14852+0 records in
14852+0 records out
7604224 bytes (7.6 MB) copied, 0.00987684 s, 770 MB/s

Теперь, регистр / dev / sdb поврежден, скорость копирования (770 МБ / с) не имеет смысла и не может снова быть пользователем dd до перезагрузки.

Я попытался восстановить его с помощью ddrescue, и он не работает

sudo ddrescue /dev/zero /dev/sdb conv=noerror,sync

Мой вопрос заключается в том, что происходит точно, и если возможно, как восстановить / dev / sdb, чтобы избежать перезагрузки и снова начать работать?

Благодарю.


1
2018-06-15 08:46


Источник




Ответы:


Узлы устройств, например /dev/sd* отображается только в / dev после подключения устройства, не раньше, чем. (Кроме того, они не называются «регистрами».) Поэтому, когда вы бежали dd of=/dev/sdb он фактически не касался какого-либо устройства - вместо этого, поскольку выходной файл не существовал, dd  созданный новый файл с этим именем.

$ sudo dd if = archlinux-2016.04.01-dual.iso of = / dev / sdc
1482752 + 0 записей в
1482752 + 0 записей
759169024 байтов (759 МБ, 724 Мбайт), 0.941926 с, 806 МБ / с

$ ls -l / dev / sd *
brw-rw ---- 1 корневой диск 8, 0 июн 15 08:54 / dev / sda
brw-rw ---- 1 корень диска 8, 16 июня 15 14:14 / dev / sdb
-rw-r - r-- 1 корень root 724M 15 июня 15:06 / dev / sdc

Таким образом, действительно нет ничего, что могло бы быть «повреждено», и ничего не имеет смысла «ремонтировать» или «ddrescue». У вас просто огромный файл с именем /dev/sdb, и поскольку он существует, ядро ​​не может создать настоящий узел устройства там.

(Скорость записи имеет смысл - /dev хранится в ОЗУ, поэтому вы просто скопировали изображение из ОЗУ, где оно было кэшировано, обратно в ОЗУ, где / dev живет.)

Удалить /dev/sdb и снова подключите устройство, и реальный узел устройства должен появиться снова.


5
2018-06-15 12:01