나는 자체 그럽이 있는 작은 OS로 약 5Mb의 ISO를 처리하는 USB를 가지고 있습니다. 기기를 연결해서 확인해 보면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
완벽하게 작동합니다. 다른 PC의 BIOS에서 부팅합니다.
문제는 BIOS를 업데이트한 후 USB를 연결하는 것을 잊어버릴 때가 있어서 USB를 연결하지 않고 연결하면 출력은 다음과 같습니다.
14852+0 records in
14852+0 records out
7604224 bytes (7.6 MB) copied, 0.00987684 s, 770 MB/s
이제 /dev/sdb 레지스터가 손상되었고 복사 속도(770MB/s)가 의미가 없으며 재부팅할 때까지 dd를 다시 사용할 수 없습니다.
ddrescue로 복구해봤는데 안되네요
sudo ddrescue /dev/zero /dev/sdb conv=noerror,sync
내 질문은 정확히 무슨 일이 일어나고 있는지, 가능하다면 재부팅을 피하고 dd가 다시 작동하도록 /dev/sdb를 복구하는 방법입니다.
감사해요.
답변1
/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바이트(759MB, 724MiB) 복사됨, 0.941926초, 806MB/s $ ls -l /dev/sd* brw-rw---- 1 루트 디스크 8, 0 6월 15일 08:54 /dev/sda brw-rw---- 1 루트 디스크 8, 16 6월 15일 14:14 /dev/sdb -rw-r--r-- 1 루트 루트 724M 6월 15일 15:06 /dev/sdc
따라서 "손상"될 수 있는 것은 실제로 없으며 "수리" 또는 복구가 의미가 있는 것도 없습니다. 단순히 이름이 큰 파일이 있고 /dev/sdb
이 파일이 존재하기 때문에 커널이 거기에 실제 장치 노드를 생성할 수 없습니다.
(쓰기 속도는 완벽하게 이해됩니다. /dev
RAM에 저장되므로 이미지가 캐시된 RAM에서 /dev가 있는 RAM으로 다시 복사했습니다.)
/dev/sdb
장치를 삭제 하고 다시 연결하면진짜장치 노드가 다시 나타나야 합니다.