Usb-Drive
如何格式化流氓快閃記憶體驅動器?(GParted 試圖觸及超出實際容量的文件系統頁腳,並無限期凍結)
在邊緣類型的假 USB 或 SD 卡上,從驅動器上特定位置開始的所有扇區都不可用(只有零或只有一個或不可讀的扇區響應)。
快閃記憶體驅動器可能會顯示為 256GB,但實際上只有 16GB。任何超過 16GB 門檻值的寫入都會進入數字黑洞(因此是邊緣)。嘗試訪問該數據時,可能會發生以下情況之一:
- *設備僅返回具有00000000 (0x00)*字節的空白扇區。
- 設備僅返回*11111111 (0xFF)*字節的扇區。
- 該設備向電腦發出該扇區已損壞的信號。
- 設備會無限期地凍結,並且永遠不會返回讀取請求。
- 設備返回隨機數據(非常罕見的類型)
在我擁有的流氓快閃記憶體驅動器上,第一個就是這種情況。它返回*
00 00 00 00
*… in the all 512 bytes in all Sector in all Sector in the limbo區域,超出了實際數據容量。使用*
mkfs
或gparted
*在假 USB(用於測試目的)上創建文件系統確實會無限期凍結。Windows 和 Android 都在**不到半分鐘的時間內成功地將 SD 卡格式化為所稱的全部容量。**這只有在不觸及任何超出實際容量的文件系統頁腳時才有可能。只能通過修改標題。
GParted 和 mkfs 無限期地凍結(直到從 PC 中移除驅動器)並在 GParted 中留下一個以未知類型指示的文件系統。如何在僅寫入文件系統標頭的同時將 GParted 中的流氓快閃記憶體驅動器格式化為全部所謂的容量?
這將使 GParted 不會觸及導致無限期凍結的邊緣區域(不要與流氓驅動器上列出的第四類扇區返回混淆。這是 GParted 的反應)。
我想要達到的目標:
- 測試 Linux 如何對交換到假快閃記憶體驅動器做出反應。 因為這對於 StackExchange 來說太微不足道了,所以我決定自己嘗試一下。
- 在安卓手機上測試不同文件系統(ext2、ext3、ext4、FAT16、FAT32、exFAT、f2fs、xfs、zfs、ntfs):我想嘗試用安卓手機錄製影片,超出實際容量,看看它是如何反應的。
我有點懷疑這會奏效。但是有一種強大的方法可以滿足您的要求。如果這不起作用,則沒有任何選項可以傳遞
mkfs
給做更好的事情。
- 在您的主文件系統上創建一個與設備大小相同的(稀疏)文件。例如使用
truncate --reference=/dev/sdX disk.img
- 對文件進行分區(我假設您想要這個 - 如果您不這樣做,則跳過它並使用
/dev/loopN
而不是/dev/loopNp1
)。您可以執行fdisk disk.img
,或dd if=/dev/sdX of=disk.img conv=notrunc bs=1M count=1
複制設備上的任何分區。losetup -f disk.img
- 這將創建一個循環設備並列印其名稱。mkfs.FOO /dev/loopNp1
- 創建文件系統dd if=/dev/loopN of=/dev/sdX bs=1k count=16M conv=sparse
- 將磁碟鏡像的前15G(1610241024*1024)複製到設備中。您可以根據需要進行調整。conv=sparse
將跳過全為零的寫入塊。