Cara memperbaiki partisi hard drive Mac yang ditampilkan sebagai Fdsik_partition_scheme

8

Situasi saya tampaknya sangat mirip dengan cara memperbaiki hard drive GUID yang rusak ke MBR tetapi dengan perbedaan yang cukup sehingga saya belum dapat menyusun solusi yang percaya diri.

Saya memiliki drive Toshiba 3TB dalam penutup USB yang digunakan pada Mac dengan OS X El Capitain 10.11.3.

Drive diatur dengan satu partisi. Drive tidak dapat di-boot dan tidak memiliki sistem yang diinstal jadi saya berasumsi itu tidak akan memiliki partisi pemulihan juga. Saya tidak bisa mengatakan dengan pasti itu tidak memiliki sistem yang diinstal, tapi saya rasa tidak. Itu belum digunakan dengan Bootcamp atau pada komputer non-Mac.

Drive bekerja secara normal untuk waktu yang lama tetapi kemudian gagal dikenali baru-baru ini. Saat menyelidiki dengan Disk Utility, ini menunjukkan memiliki jenis partisi FDisk_partition_scheme . Saya yakin ini pada awalnya merupakan standar khas dari GUID Partition Map yang diformat sebagai OS X Extended (Journal) .

Saya tidak bisa memikirkan penggunaan atau peristiwa khusus apa pun yang mungkin menyebabkan perubahan.

Berikut adalah informasi yang saya kumpulkan dari drive.

daftar diskutil / dev / disk6

/dev/disk6 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *3.0 TB     disk6
   1:                       0xEE                         375.1 GB   disk6s1

info diskutil / dev / disk6

   Device Identifier:        disk6
   Device Node:              /dev/disk6
   Whole:                    Yes
   Part of Whole:            disk6
   Device / Media Name:      DT01ABA300

   Volume Name:              Not applicable (no file system)

   Mounted:                  Not applicable (no file system)

   File System:              None

   Content (IOContent):      FDisk_partition_scheme
   OS Can Be Installed:      No
   Media Type:               Generic
   Protocol:                 USB
   SMART Status:             Not Supported

   Total Size:               3.0 TB (3000592982016 Bytes) (exactly 5860533168 512-Byte-Units)
   Volume Free Space:        Not applicable (no file system)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         Not applicable (no file system)

   Device Location:          External
   Removable Media:          No

   Virtual:                  No
   OS 9 Drivers:             No
   Low Level Format:         Not supported

fdisk / dev / disk6

Disk: /dev/disk6    geometry: 97451/255/63 [1565565872 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE 1023 254  63 - 1023 254  63 [         1 -  732566645] <Unknown ID>
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused

gpt recover / dev / disk6

gpt recover: /dev/disk6: no primary or secondary GPT headers, can't recover

gpt -r -vv show / dev / disk6

gpt show: /dev/disk6: mediasize=3000592982016; sectorsize=512; blocks=5860533168
gpt show: /dev/disk6: PMBR at sector 0
       start        size  index  contents
           0           1         PMBR
           1  5860533167

gdisk / dev / disk6

GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Berikut ini adalah cuplikan layar dari bagian pertama drive di wxHexEditor. EFI PART dimulai pada 4096.

Mulai drive di wxHexEditor

Saya mulai mencari string HFSJ mulai dari offset 409642, seperti yang disarankan dalam jawaban lain, tetapi tidak menemukannya di dekat sana. Jadi saya mencari mulai dari awal drive dan menemukan kejadian pertama di offset 314598400.

Namun, jika saya terus mencari kejadian HFSJ, saya menemukan banyak dari mereka yang terlihat persis sama dan dengan banyak ruang kosong di sekitar mereka, seperti yang pertama. Mulai dari 360424448 dan berjarak 32.768 terpisah. Misalnya, di offset 360424448 360457216 360489984 360522752 360555520

Saya menggunakan pencarian Find All di wxHexEditor dan berhenti setelah beberapa menit. Itu telah menemukan beberapa ribu pada saat itu. Saya tidak yakin apa yang harus dilakukan, jika ada.

Saya juga dapat menemukan bagian yang diberi label Partisi Sistem EFI di offset 3000592961536. Itu juga menunjukkan nama yang dimiliki drive, "Rosie".

Berikut adalah cuplikan layar partisi HFSJ pertama dan Partisi Sistem EFI. Menambahkan tangkapan layar offset 8192 berdasarkan komentar.

Partisi HFSJ pertama, partisi EFI di akhir, dan offset 8192.

Terima kasih atas bantuannya.

Doug Smith
sumber
Jika akan muncul disk Anda memiliki ukuran blok 4096 byte dan sekarang memiliki ukuran 512 byte. Karena ukuran blok tidak disimpan pada disk itu sendiri, pertanyaan saya adalah: Apakah Anda mengubah perangkat keras dengan cara apa pun? Juga, jika ukuran blok 4096 byte, maka Anda harus dapat membaca entri tabel GPT lama mulai dari 8192 byte. Sejauh ini, Anda hanya memposting header GPT mulai dari 4096 byte. Hex dump dapat dikonversi kembali ke nilai desimal yang benar menggunakan informasi yang diberikan di sini .
David Anderson
@ Davidviderson, Perangkat keras memang berubah karena drive ada dalam wadah USB yang berbeda. Saya bisa mendapatkan case asli jika itu membantu apa pun.
Doug Smith
@ Davidvidderson Saya mengubah tangkapan layar untuk menambahkan satu untuk offset 8192. Itu memang menunjukkan Partisi Sistem EFI di sana.
Doug Smith
@klanomath Ya, jawaban tertaut Anda benar. Saya mencampuradukkan blok dan offset. Itu semua nol di sekitar offset 209736704, meskipun. Saya juga mencoba membaginya dengan 8 (26217088) jika ada masalah ukuran blok 4096. Itu menempatkan saya dalam banyak data, tetapi tidak ada string HFSJ yang terlihat.
Doug Smith
@ Kaiomath, saya sudah memulai proses Anda. Upaya saya untuk menimpa 40 blok pertama tidak benar-benar menulis data apa pun:0+0 records in 0+0 records out 0 bytes transferred in 0.000013 secs (0 bytes/sec)
Doug Smith

Jawaban:

9

Silakan coba yang berikut ini:

  • Dapatkan pengenal disk drive 3 TB eksternal Anda

    diskutil list
    

    Di bawah ini saya menganggap pengidentifikasi disk adalah disk6

  • lepaskan disk:

    diskutil umountDisk disk6
    
  • Timpa 40 blok pertama:

    sudo dd if=/dev/zero of=/dev/disk6 bs=512 count=40
    
  • Buat gpt baru:

    sudo gpt create /dev/disk6
    
  • Periksa info disk dengan:

    diskutil info /dev/disk6
    

    Yakinkan diri Anda bahwa ukuran blok perangkat masih 512 Bytes

    Anda juga dapat menggunakan

    sudo gpt -r show /dev/disk6
    

    Jika gpt menunjukkan:

       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
    

    Anda memiliki disk & pengontrol disk yang melaporkan ukuran blok logis 512 Bytes. Silakan lanjutkan dengan langkah selanjutnya.

    Jika gpt menunjukkan:

       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2           4         Pri GPT table
    

    Anda memiliki disk & pengontrol disk yang melaporkan ukuran blok logis 4096 Bytes. Tolong berhenti di sini dan tambahkan komentar.

  • Pertama, buat kembali entri EFI dengan:

    sudo gpt add -b 40 -i 1 -s 614400 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    

    Bergantung pada ukuran disk dan versi sistem, volume EFI dengan ukuran berbeda dibuat jika dipartisi dengan Disk Utility: salah satu dengan ukuran 200 MiB atau satu dengan 300 MiB. Di sini jelas bahwa disk Anda berisi 300 MiB EFI dan mungkin 4096 byte ruang disk yang tidak terisi: (314598400-1024) / 512 = 614448 (= Mulai blok volume utama) 614448-40-8 = 614400 (= ukuran EFI)

  • Bangun kembali volume utama Anda dengan:

    sudo gpt add -b 614448 -i 2 -s SizeOfVolume1 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    

    Ukuran volume utama dapat ditentukan oleh entri pertama (rusak & lama) dari tabel GPT kedua: (3000592961536/512) = 5860533128 adalah nomor bloknya. Kemudian ukurannya dihitung oleh 5860533128-614448 = 5859918680 blok. Karena 5859918680 dapat dibagi dengan 8 (4096 ukuran blok fisik / 512 ukuran blok logis), ini adalah tebakan yang baik untuk ukuran volume.

    Tebakan terbaik akhirnya:

    sudo gpt add -b 614448 -i 2 -s 5859918680 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    

    Tebakan terbaik kedua adalah:

    sudo gpt add -b 614448 -i 2 -s 5859918672 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • Mungkin volume Anda yang hilang akan dipasang sekarang. Verifikasi volume dengan:

    diskutil verifyVolume disk6s2
    

    Jika perlu coba perbaiki volume.

    diskutil repairVolume disk6s2
    

Karena Anda memindahkan disk "rusak" ke case dan disk controller yang berbeda, ukuran blok logis telah dimodifikasi. Peta partisi lama mungkin didasarkan pada ukuran blok logis 4096 Bytes.

Untuk memulihkan peta partisi dalam kasus lama (4096b), Anda harus memasukkan yang berikut untuk mengembalikan GPT (berdasarkan jawaban David Anderson):

  • Buat gpt baru:

    sudo gpt create /dev/disk6
    
  • Pertama, buat kembali entri EFI dengan:

    sudo gpt add -b 6 -i 1 -s 76800 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Bangun kembali volume utama Anda dengan:

    sudo gpt add -b 76806 -i 2 -s 732457067 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • peta partisi akhir terlihat seperti ini:

     sudo gpt -r show disk1
           start        size  index  contents
               0           1         PMBR
               1           1         Pri GPT header
               2           4         Pri GPT table
               6       76800      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
           76806   732457067      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
       732533873       32768         
       732566641           4         Sec GPT table
       732566645           1         Sec GPT header
    

Berdasarkan bagian 4096b ini "menerjemahkan ulang" setelah menginstal disk dalam case ukuran blok logis 512b untuk:

  • Buat gpt baru:

    sudo gpt create /dev/disk6
    
  • Pertama, buat kembali entri EFI dengan:

    sudo gpt add -b 48 -i 1 -s 614400 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Bangun kembali volume utama Anda dengan:

    sudo gpt add -b 614448 -i 2 -s 5859656536 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    

Ini berbeda dari bagian pertama (yang diterima) dari jawaban saya tetapi merupakan jawaban yang tepat! Karena EFI sebenarnya "kosong" dan blok-blok yang tidak terisi 262254 hanya berisi nol, jawaban "pertama dan entah bagaimana salah" tidak memengaruhi operabilitas volume.

klanomath
sumber
2

Ini bukan jawaban, melainkan contoh cara mengekstrak informasi partisi GPT dari data yang Anda sajikan. Entri partisi GPT sekunder (cadangan) digunakan karena Anda tidak memposting konten entri partisi GPT primer. Dokumen " GUID Partition Table " digunakan untuk menginterpretasikan data.

LBA yang dapat digunakan terakhir dapat ditemukan di header GPT. Ini terjadi pada alamat 8244. Nilainya adalah

70 14 aa 2b 00 00 00 00 little endian = 0x2baa1470 = 732566640 @ 4096 bytes/block.

Awal entri GPT sekunder (cadangan) mulai di blok berikutnya. Nilainya adalah

(732566640 + 1) * 4096 = 3000592961536 bytes.  

Menggunakan ini sebagai awal entri tabel partisi EFI, saya mendapatkan nilai-nilai berikut. Mulai dari partisi EFI, ditemukan di alamat 3000592961568, adalah

06 00 00 00 00 00 00 00 little endian = 0x6 = 6 @ 4096 bytes/block.

Akhir dari partisi EFI, ditemukan di alamat 3000592961576, adalah

05 2c 01 00 00 00 00 00 little endian = 0x12c05 = 76805 @ 4096 bytes/block.

Yang memberikan ukuran partisi

76805 - 6 + 1 = 76800 @ 4096 bytes/block.

Mulai dari partisi HFS, ditemukan di alamat 3000592961696, adalah

06 2c 01 00 00 00 00 00 little endian = 0x12c06 = 76806 @ 4096 bytes/block.

Akhir partisi HFS, ditemukan di alamat 3000592961704, adalah

70 94 a9 2b 00 00 00 00 little endian = 0x2ba99470 = 732533872 @ 4096 bytes/block.

Yang memberikan ukuran partisi

732533872 - 76806 + 1 = 732457067 @ 4096 bytes / block.

Jika Anda akan menggunakan ukuran blok 512 byte, hasil di atas harus dikalikan dengan nilai 8 untuk mengkonversi ke 512 byte / blok.

David Anderson
sumber
+1 Kami mendapatkan ukuran & blok awal yang identik untuk EFI dan blok awal yang identik tetapi ukuran volume utama yang berbeda.
klanomath