如何找到 ext4 文件系統的偏移量?
我的硬碟出現故障,無法寫入或讀取磁碟的第一個扇區。它只是給出 I/O 錯誤,僅此而已。磁碟上的其他區域似乎(大部分)都很好。我正在嘗試掛載一個分區(ext4)並查看是否可以訪問一些我想恢復的文件。由於該
mount
命令支持一個offset
選項,因此即使分區表不可讀且不可寫,我也應該能夠掛載文件系統。問題是如何找到偏移量。似乎沒有一個 ext4 工具具有此特定功能。
本身沒有標準偏移量,因為當然您可以在任何地方啟動分區。但是讓我們假設您正在尋找第一個分區,並且它或多或少地被創建為接受預設值。假設您使用的是傳統的 DOS 分區表,那麼您可能會在兩個地方找到它:
- 從(512 字節)第 63 扇區開始。這是很長一段時間以來的傳統,一直到有人提出 4K 磁碟為止……
- 從(512 字節)扇區 2048 開始。這是新的傳統,可容納 4K 磁碟。
- 獎金選項!Sarting 在第 56 扇區。如果有人移動 63-start 分區以使其與 4K 扇區對齊,就會發生這種情況。
現在,要繼續,您需要選擇您最喜歡的 hex-dump 工具,並了解一些關於ext4 磁碟佈局的知識。特別是,它以 1024 字節的填充開始,ext4 忽略。接下來是超級塊。您可以通過檢查偏移量 0x38 處的幻數 0xEF53 來辨識超級塊(從超級塊開始,或從分區開始的 0x438,或十進制的 1080。)**幻數是小端。**所以它實際上以 0x53EF 的形式儲存在磁碟上。
這是看起來的樣子
xxd -a
:
0000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................ * 0000400: 0040 5d00 0084 7401 33a0 1200 33db a600 .@]...t.3...3... 0000410: 4963 5300 0000 0000 0200 0000 0200 0000 IcS............. 0000420: 0080 0000 0080 0000 0020 0000 6637 0952 ......... ..f7.R 0000430: 6637 0952 0200 1600 **53ef** 0100 0100 0000 f7.R....S....... 0000440: 9938 f851 004e ed00 0000 0000 0100 0000 .8.Q.N..........
請注意,當您指定要掛載(或 losttup)的偏移量時,您必須將偏移量指定給填充開始的位置,而不是超級塊。
現在,如果它不是第一個分區,或者不在預期的兩(三)個位置之一,您基本上可以搜尋幻數 0xEF53。這就是
testdisk
(在評論中推薦)為您所做的。