Ubuntu

無法從 USB 驅動器中刪除文件(既不是通過 dd /dev/zero 也不是通過 rm -r)

  • May 1, 2014

我有一個快閃記憶體 USB 驅動器,到目前為止它執行良好。最近我用dd記錄了它的iso。現在我想刪除它。

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
.......
sdb      8:16   1  14.6G  0 disk 
└─sdb1   8:17   1  14.5G  0 part /media/alex/ARCH_201404
sr0     11:0    1  1024M  0 rom  

$ mount 

/dev/sdb1 on /media/alex/ARCH_201404 type iso9660    (ro,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks2)

當我這樣做時

$ sudo dd ibs=4096 count=1 if=/dev/zero of=/dev/sdb1
1+0 records in
8+0 records out
4096 bytes (4.1 kB) copied, 0.00053675 s, 7.6 MB/s

它似乎成功了,但是當我探索 USB 快閃記憶體時,所有文件仍然存在。什麼時候這個:

sudo rm -r /media/alex/ARCH_201404/*

我得到了錯誤:

..................
rm: cannot remove ‘/media/alex/ARCH_201404/loader/entries/uefi-shell-v1-x86_64.conf’: Read-only file system
rm: cannot remove ‘/media/alex/ARCH_201404/loader/entries/uefi-shell-v2-x86_64.conf’: Read-only file system
rm: cannot remove ‘/media/alex/ARCH_201404/loader/loader.conf’: Read-only file system
.....................

我能做些什麼呢?

您只將分區的前 4kb 歸零。通常,所有文件系統都會在其分區的開頭保留一些未使用的塊,以便為可能安裝在分區本身上的引導載入程序提供空間。我認為至少有 16 個塊始終未被使用。

您複製了dd一個 ISO 9660 類型的文件系統,因此您有 2048 字節的塊。

ISO 9660 為引導載入程序保留了大約 32kb,如下所述:http ://wiki.osdev.org/ISO_9660#System_Area

所以,要想真正刪除分區的內容,可能至少需要刪除前1Mb。

引用自:https://unix.stackexchange.com/questions/126725