Block-Device
GUID 分區表儲存在設備上的什麼位置?
我的一個朋友用我的 U 盤在他的 Mac 上安裝了新版本的 OS X。現在我把它拿回來了,我想擦除它(我自己使用 Linux)。但是,我這樣做有點麻煩。我做的第一件事是給它寫了一個 Fedora LiveCD,使用
dd
:# dd if=Fedora.iso of=/dev/sdb
我認為這會覆蓋位於設備開頭的分區表,從而刪除 OS X 安裝程序創建的分區。但是,我錯了,分區仍然存在。所以我查看了GUID 分區表,發現它們不僅在設備的開頭添加了標題,而且在末尾也添加了標題。所以我做了:
$ sudo dd if=/dev/zero of=/dev/sdb dd: writing to `/dev/sdb': No space left on device 15687681+0 records in 15687680+0 records out 8032092160 bytes (8.0 GB) copied, 1354.82 s, 5.9 MB/s
在此之後,我從電腦中取出 U 盤並將其重新插入。
blkid
現在執行不會在設備上產生任何分區。但是,再次寫入 Fedora 映像後,OS X 分區又回來了:$ sudo blkid /dev/sdb1: LABEL="Fedora-17-x86_64-Live-Desktop.is" TYPE="iso9660" /dev/sdb2: SEC_TYPE="msdos" LABEL="EFI" UUID="B368-CE08" TYPE="vfat" /dev/sdb3: UUID="f92ff3eb-0250-303f-8030-7d063e302ccf" LABEL="Fedora 17" TYPE="hfsplus"
我懷疑這與上面維基百科頁面中的保護性 MBR位有關。我怎樣才能擺脫它?
更新
我最終
parted
從那裡執行並刪除了 GPT。我確實收到了有關 GPT 損壞的警告(可能是由於將其歸零),但那裡有“簽名”。所以我最終恢復了我的 USB 記憶棒,但如果有人能弄清楚到底發生了什麼,那些簽名儲存在哪裡,那還是很好的?
找到了答案:Fedora ISO 包含一個 GUID 分區表,其分區佈局與 OS X 非常相似。因此,我混淆了由
dd if=Fedora.iso of=/dev/sdb
由 OS X 安裝程序創建的。一個分區有一個HFS+文件系統,這是 OS X 特有的,這進一步加劇了這種混亂。更奇怪的是,
parted
在將 ISO 寫入儲存棒後執行會產生:$ sudo parted /dev/sdb GNU Parted 2.3 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print Warning: /dev/sdb contains GPT signatures, indicating that it has a GPT table. However, it does not have a valid fake msdos partition table, as it should. Perhaps it was corrupted -- possibly by a program that doesn't understand GPT partition tables. Or perhaps you deleted the GPT table, and are now using an msdos partition table. Is this a GPT partition table? Yes/No?
無論如何,關鍵是分區在將整個設備歸零後並沒有神奇地恢復,而是在
dd
-ing ISO 時創建的。