Eu tenho um USB onde estou lidando com um ISO de aproximadamente 5 Mb com um pequeno sistema operacional com seu próprio grub. Se eu conectar o dispositivo e verificarsudo fdisk -lEu recebo:
...
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 1 9551 9551 4.7M cd unknown
Se eu copiar com dd o ISOsudo dd if=meu_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
Funciona perfeitamente. Uma inicialização do BIOS em outro PC.
O problema é que às vezes esqueço de conectar o USB após atualizar o BIOS, então faço sem o USB conectado, a saída é:
14852+0 records in
14852+0 records out
7604224 bytes (7.6 MB) copied, 0.00987684 s, 770 MB/s
Agora, o registro /dev/sdb está corrompido, a velocidade de cópia (770 MB/s) não faz sentido e não pode ser usado novamente dd até a reinicialização.
Já tentei reparar com ddrescue e não funciona
sudo ddrescue /dev/zero /dev/sdb conv=noerror,sync
Minha pergunta é: o que está acontecendo exatamente e, se possível, como reparar /dev/sdb para evitar a reinicialização e o dd começar a funcionar novamente?
Obrigado.
Responder1
Nós de dispositivos como /dev/sd*
aparecem apenas em /devdepois que o dispositivo estiver conectado, não antes. (Além disso, eles não são chamados de "registros".) Então, quando você o executou, dd of=/dev/sdb
ele não tocou em nenhum dispositivo - em vez disso, como o arquivo de saída não existia,dd
criadaum novo arquivo com esse nome.
$ sudo dd if=archlinux-2016.04.01-dual.iso of=/dev/sdc 1482752+0 registros em 1482752+0 registros lançados 759169024 bytes (759 MB, 724 MiB) copiados, 0,941926 s, 806 MB/s $ ls -l /dev/sd* brw-rw---- 1 disco raiz 8, 0 15 de junho 08:54 /dev/sda brw-rw---- 1 disco raiz 8, 16 15 de junho 14:14 /dev/sdb -rw-r--r-- 1 root root 724M 15 de junho 15:06 /dev/sdc
Portanto, não há realmente nada que possa ter sido "corrompido" e nada que faça sentido "reparar" ou ddrescue. Você simplesmente tem um arquivo enorme chamado /dev/sdb
e, como ele existe, o kernel não pode criar um nó de dispositivo real ali.
(A velocidade de gravação faz todo o sentido – /dev
é armazenada na RAM, então você apenas copiou a imagem da RAM, onde ela foi armazenada em cache, de volta para a RAM, onde fica /dev.)
Exclua /dev/sdb
e reconecte o dispositivo e orealo nó do dispositivo deve reaparecer.