1

У меня есть USB, где я копирую ISO размером 5 Мб с небольшой ОС с собственным 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 из =/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, чтобы избежать перезагрузки и dd снова начать работать?

Благодарю.

1 ответ1

5

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

$ sudo dd if=archlinux-2016.04.01-dual.iso of=/dev/sdc
1482752+0 records in
1482752+0 records out
759169024 bytes (759 MB, 724 MiB) copied, 0.941926 s, 806 MB/s

$ ls -l /dev/sd*
brw-rw---- 1 root disk 8,  0 Jun 15 08:54 /dev/sda
brw-rw---- 1 root disk 8, 16 Jun 15 14:14 /dev/sdb
-rw-r--r-- 1 root root  724M Jun 15 15:06 /dev/sdc

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .