GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Menemukan Offset Dari Sistem File Ext4?

Saya memiliki hard drive yang rusak yang tidak dapat menulis atau membaca sektor pertama dari disk. Itu hanya memberikan kesalahan I/O dan hanya itu yang ada. Ada area lain pada disk yang tampaknya (sebagian besar) baik-baik saja.
Saya mencoba memasang partisi (ext4) dan melihat apakah saya dapat mengakses beberapa file yang ingin saya pulihkan. Sejak mount perintah mendukung offset opsi, saya harus dapat memasang sistem file meskipun tabel partisi tidak dapat dibaca dan tidak dapat ditulis. Masalahnya adalah bagaimana menemukan offset. Tidak ada alat ext4 yang tampaknya memiliki fitur khusus ini.

Jawaban yang Diterima:

Tidak ada offset standar, karena tentu saja Anda dapat memulai partisi di mana pun Anda mau. Tapi mari kita asumsikan sejenak bahwa Anda sedang mencari partisi pertama, dan partisi itu dibuat kurang lebih menerima default. Kemudian ada dua tempat Anda dapat menemukannya, dengan asumsi Anda menggunakan tabel partisi DOS tradisional:

  1. Mulai dari (512-byte) sektor 63. Ini adalah tradisi untuk waktu yang sangat lama, dan bekerja sampai seseorang menemukan disk 4K…
  2. Mulai dari (512-byte) sektor 2048. Ini adalah tradisi baru, untuk mengakomodasi disk 4K.
  3. Opsi bonus! Sarting di sektor 56. Inilah yang terjadi jika seseorang memindahkan partisi 63-start agar sejajar dengan sektor 4K.

Sekarang, untuk melanjutkan, Anda ingin mengambil alat hex-dump favorit Anda, dan belajar sedikit tentang Tata Letak Disk ext4. Secara khusus, ini dimulai dengan 1024 byte padding, yang diabaikan oleh ext4. Berikutnya adalah superblok. Anda dapat mengenali superblok dengan memeriksa angka ajaib 0xEF53 pada offset 0x38 (dari awal superblok, atau 0x438 dari awal partisi, atau 1080 dalam desimal.) Angka ajaib adalah little-endian. Jadi sebenarnya disimpan di disk sebagai 0x53EF.

Berikut tampilannya dengan xxd -a :

0000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
*
0000400: 0040 5d00 0084 7401 33a0 1200 33db a600 [email protected]]...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..........

Perhatikan, bahwa ketika Anda memberikan offset ke mount (atau losetup), Anda harus memberikan offset ke tempat padding dimulai—bukan superblok.

Terkait:Tidak dapat menemukan notifikasi YouTube tentang komentar?

Sekarang, jika ini bukan partisi pertama, atau tidak berada di salah satu dari dua (tiga) tempat yang diharapkan, pada dasarnya Anda dapat mencari angka ajaib 0xEF53. Ini yang testdisk (disarankan dalam komentar) lakukan untuk Anda.


Linux
  1. Bagaimana Cara Meningkatkan Ukuran Sistem File Agar Sesuai Dengan Partisi?

  2. Bagaimana menemukan ukuran inode dari sistem file ext2/ext3/ext4?

  3. Cara menemukan opsi pemasangan sistem file yang saat ini dipasang

  1. Cara membuat sistem file pada partisi Linux atau volume logis

  2. Bagaimana menemukan pengelola file default?

  3. Bagaimana menemukan ukuran partisi yang tidak di-mount di Linux?

  1. Cara Mengatasi:Tidak Dapat Menulis ke Partisi Ext3 atau Ext4

  2. Bagaimana cara menemukan ukuran tumpukan maksimum?

  3. Cara mem-pipe hasil 'find' ke mv di Linux