손상된 /dev/sdX를 연결하고 작동하지 않기 전에 dd가 dev USB에 적용되었습니다.

손상된 /dev/sdX를 연결하고 작동하지 않기 전에 dd가 dev USB에 적용되었습니다.

나는 자체 그럽이 있는 작은 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이 파일이 존재하기 때문에 커널이 거기에 실제 장치 노드를 생성할 수 없습니다.

(쓰기 속도는 완벽하게 이해됩니다. /devRAM에 저장되므로 이미지가 캐시된 RAM에서 /dev가 있는 RAM으로 다시 복사했습니다.)

/dev/sdb장치를 삭제 하고 다시 연결하면진짜장치 노드가 다시 나타나야 합니다.

관련 정보