Linux

重新組裝已刪除的 MBR 分區

  • October 10, 2018

我有一個 MBR 表,其中有幾個之前刪除的分區。

在不使用 3rd 方工具或軟體(如 testdisk.. 等)的情況下,有哪些方法可以重新組裝 MBR 分區條目並恢復已刪除的分區?

每個文件系統都有一個簽名。因此,如果您知道分區上使用了哪些文件系統,那麼您可以使用十六進制編輯器打開塊設備並蒐索文件系統。文件系統往往從分區的開頭(或附近)開始,因此當您找到文件系統的開頭時,很有可能您也找到了分區的起始扇區。

分區往往在下一個分區開始之前結束,這就是您確定結束扇區的方式;當然,最後一個分區除外。

一旦有了開始/結束扇區,您就可以簡單地使用分區工具來創建這些分區。然後,交叉手指並嘗試安裝文件系統。

當然,有些情況會使這個過程變得困難或不可能:

  • 如果文件系統儲存在加密的塊設備中(例如 LUKS)。
  • 如果有文件系統或磁碟映像,例如用於虛擬機的那些。如果沒有更多資訊,您將無法區分磁碟映像和分區。

我上面描述的本質上是testdisk為您自動化的。

答案可能像“順其自然”一樣簡單,也可能非常複雜。在我的歷史中,我有兩次 MBR 事故,都是因為“手比頭快”。有更多方法可以“刪除” MBR 表中的分區。使用cli程序、GUI程序,操作磁碟的前512字節。在 MBR 中有 4 條記錄代表 4 個基本分區。但是 GUI 程序默默地使用擴展的 MBR,這會使恢復調查變得複雜。原則上您可以遵循兩個目標:-恢復原始 MBR,-保存原始分區內容。您可以使用基本的 linux 工具,也可以尋找複雜的 GUI 程序。如果您有足夠的可用磁碟空間,建議先進行位複制(磁碟映像),不要觸摸原始磁碟。程序 R-Studio 的效果非常好,但我不確定許可證。如果您知道原始分區文件系統的類型(NTFS、ext3),則可以搜尋起始簽名。請記住,有關失去分區的原始大小和順序的任何資訊都可能有助於減少需要掃描的空間。好吧,例如,如果您記得有兩個分區,第一個 20GB,第二個 200GB,您可能會判斷第一個的開頭可以靠近磁碟的開頭,而第二個的開頭可以在扇區 39062500 44040192 之間找到。假設您尋找NTFS,您可以使用以下命令搜尋簽名:關於失去分區的原始大小和順序可能有助於減少您需要掃描的空間。好吧,例如,如果您記得有兩個分區,第一個 20GB,第二個 200GB,您可能會判斷第一個的開頭可以靠近磁碟的開頭,而第二個的開頭可以在扇區 39062500 44040192 之間找到。假設您尋找NTFS,您可以使用以下命令搜尋簽名:關於失去分區的原始大小和順序可能有助於減少您需要掃描的空間。好吧,例如,如果您記得有兩個分區,第一個 20GB,第二個 200GB,您可能會判斷第一個的開頭可以靠近磁碟的開頭,而第二個的開頭可以在扇區 39062500 44040192 之間找到。假設您尋找NTFS,您可以使用以下命令搜尋簽名:

$ hd disk_image.dd -s20000000000 -n2548578304

在原始磁碟上執行此類命令,您必須具有 root 權限。

如果您成功找到分區的開頭,似乎更容易保存發現的分區,然後創建新的 MBR,為您的分區保留足夠的空間,然後將保存的分區複製回新位置。您也可以嘗試重新計算扇區的字節數並嘗試使用一些標準工具(、、、)重新配置 MBR 表fdisksfdiskparted結果可能無法滿足您的期望。如果您提供更多詳細資訊,我們可能會獲得更多幫助您的機會。即:磁碟容量是多少,原始分區的大小(甚至近似),分區被刪除的方式,用於恢復MBR的作業系統等。如果您只需要查找並保存一些文件,您可以使用特殊的sleuthkit 之類的工具。

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