dd 在連接損壞的 /dev/sdX 之前應用於開發 USB 並且不起作用

dd 在連接損壞的 /dev/sdX 之前應用於開發 USB 並且不起作用

我有一個 USB,我正在用一個帶有自己的 grub 的小型作業系統來處理大約 5 Mb 的 ISO。如果我連接設備並檢查它須藤 fdisk -l我得到:

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

如果我用 dd 複製 ISOsudo 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 暫存器已損壞,複製速度(770 MB/s)沒有任何意義,並且在重新啟動之前無法再次使用 dd。

我嘗試用​​ ddrescue 修復它,但不起作用

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

我的問題是,到底發生了什麼,如果可能的話,如何修復 /dev/sdb 以避免重新啟動和 dd 再次開始工作?

謝謝。

答案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 位元組(759 MB、724 MiB),0.941926 秒,806 MB/秒

$ ls -l /dev/sd*
brw-rw---- 1 根磁碟 8, 0 Jun 15 08:54 /dev/sda
brw-rw---- 1 根磁碟 8, 2015 年 6 月 16 日 14:14 /dev/sdb
-rw-r--r-- 1根724M 6月15日15:06 /dev/sdc

因此,實際上沒有任何東西可能被“損壞”,也沒有任何東西可以“修復”或解救。您只有一個名為 的巨大文件/dev/sdb,並且由於它存在,核心無法在那裡創建真正的設備節點。

(寫入速度非常有意義 -/dev儲存在 RAM 中,因此您只需將映像從快取的 RAM 複製回 /dev 所在的 RAM。)

刪除/dev/sdb並重新連接設備,然後真實的設備節點應該會重新出現。

相關內容