Fdsik_partition_scheme olarak gösterilen Mac sabit disk bölümünü düzeltme


8

Durumum , MBR'ye bozuk GUID sabit sürücüsünü nasıl düzeltebileceğime çok benziyor, ancak yeterli farklılıklar ile kendime güvenen bir çözümü bir araya getiremedim.

OS X El Capitain 10.11.3 yüklü bir Mac'te kullanılan bir USB kasasında 3 TB Toshiba sürücüm var.

Sürücü tek bir bölümle kuruldu. Sürücü önyüklenebilir değildi ve yüklü bir sistem yoktu, bu yüzden de bir kurtarma bölümü olmayacağını varsayıyorum. Hiçbir zaman bir sistem kurulu olmadığını söyleyemem ama öyle düşünmüyorum. Bootcamp ile veya Mac olmayan herhangi bir bilgisayarda kullanılmamıştır.

Sürücü normal olarak uzun süre çalıştı, ancak son zamanlarda tanınamadı. Disk İzlencesi ile araştırma yaparken, FDisk_partition_scheme bölüm türüne sahip olduğunu gösterir . Başlangıçta OS X Genişletilmiş (Günlüklü) olarak biçimlendirilmiş GUID Bölüm Haritasının tipik varsayılanı olduğundan eminim .

Değişikliğe neden olabilecek herhangi bir özel kullanım veya olay düşünemiyorum.

İşte sürücüden topladığım bilgiler.

diskutil listesi / dev / disk6

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

diskutil bilgisi / 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 kurtarma / 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.

İşte wxHexEditor'da sürücünün ilk bölümünün ekran görüntüsü. EFI PART 4096'da başlar.

WxHexEditor'da sürücünün başlaması

Diğer cevaplarda önerildiği gibi 409642 dengesinden başlayarak HFSJ dizesini aramaya başladım, ancak yakınlarda bulamadım. Bu yüzden sürücünün başından başlayarak araştırdım ve ilk kez 314598400 ofsetinde buldum.

Bununla birlikte, HFSJ oluşumlarını aramaya devam edersem, birçoğu tamamen aynı ve etraflarında sıfır boşluk bulunan, birincisi gibi. Bunlar 360424448'den başlar ve aralarında 32768 boşluk bırakılır. Örneğin, ofsetlerde 360424448 360457216 360489984 360522752 360555520

Ben kullanılan tüm Bul wxHexEditor içinde arama ve birkaç dakika sonra durdu. O noktada birkaç bin bulmuştu. Bunlardan ne yapacağından emin değilim, eğer bir şey varsa.

Ayrıca 3000592961536 ofsetinde EFI Sistem Bölümü etiketli bir bölüm bulabildim. Bu aynı zamanda sürücünün "Rosie" adını da gösteriyor.

İşte ilk HFSJ bölümünün ve EFI Sistem Bölümünün ekran görüntüleri. Yorumları temel alarak ofset 8192'nin ekran görüntüsü eklendi.

İlk HFSJ bölümü, sonunda EFI bölümü ve ofset 8192.

Herhangi bir yardım için teşekkürler.


Görünüyorsa, diskinizin blok boyutu 4096 bayt ve şimdi 512 bayt boyutundaydı. Blok boyutu diskin kendisinde saklanmadığından sorum şu: Donanımı herhangi bir şekilde değiştirdiniz mi? Ayrıca, blok boyutu 4096 bayt ise, 8192 bayttan başlayan eski GPT tablosu girdilerini okuyabilmeniz gerekir. Şimdiye kadar, GPT üstbilgisini yalnızca 4096 bayt'tan başlayarak gönderdiniz. Onaltılık dökümü, burada verilen bilgiler kullanılarak doğru ondalık değerlere dönüştürülebilir .
David Anderson

@DavidAnderson, Sürücünün farklı bir USB kasasında olması nedeniyle donanım değişti. Bir şey yardımcı olursa orijinal davayı alabilirim.
Doug Smith

@DavidAnderson Ofset 8192 için bir ekran eklemek üzere ekran görüntüsünü değiştirdim . Orada bir EFI Sistem Bölümü gösteriyor .
Doug Smith

@klanomath Evet, bağlantılı cevabınız doğru. Blok ve ofseti karıştırdım. Yine de, 209736704 ofsetinin etrafında sıfırlar var. Ayrıca, 4096 blok büyüklüğünde bir sorun olması durumunda 8'e (26217088) bölmeyi denedim. Bu beni çok fazla veriye sokuyor, ancak HFSJ dizesi görünmüyor.
Doug Smith

@klanomath, sürecinize başladım. İlk 40 bloğun üzerine yazma girişimim aslında hiçbir veri yazmadı:0+0 records in 0+0 records out 0 bytes transferred in 0.000013 secs (0 bytes/sec)
Doug Smith

Yanıtlar:


9

Lütfen aşağıdakileri deneyin:

  • Harici 3 TB sürücünüzün disk tanımlayıcısını edinin

    diskutil list
    

    Aşağıda disk tanımlayıcısının disk6 olduğunu varsayıyorum

  • diski çıkarın:

    diskutil umountDisk disk6
    
  • İlk 40 bloğun üzerine yaz:

    sudo dd if=/dev/zero of=/dev/disk6 bs=512 count=40
    
  • Yeni bir gpt oluşturun:

    sudo gpt create /dev/disk6
    
  • Disk bilgilerini aşağıdakilerle kontrol edin:

    diskutil info /dev/disk6
    

    Cihaz bloğu boyutunun hala 512 Bayt olduğundan emin olun

    Ayrıca kullanabilirsiniz

    sudo gpt -r show /dev/disk6
    

    Gpt şunu gösteriyorsa:

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

    512 Bayt mantıksal blok boyutunu bildiren bir disk ve disk denetleyiciniz var. Lütfen bir sonraki adıma geçin.

    Gpt şunu gösteriyorsa:

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

    4096 Bayt mantıksal blok boyutunu bildiren bir disk ve disk denetleyiciniz var. Lütfen burada durun ve bir yorum ekleyin.

  • İlk olarak EFI girişini şu şekilde yeniden oluşturun:

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

    Diskin boyutuna ve sistem sürümüne bağlı olarak, Disk İzlencesi ile bölümlendiğinde farklı boyutlarda EFI birimleri oluşturulur: biri 200 MiB boyutunda veya biri 300 MiB boyutunda . Burada diskinizde 300 MiB EFI ve muhtemelen 4096 bayt ayrılmamış disk alanı bulunduğu açıktır: (314598400-1024) / 512 = 614448 (= Başlangıç ​​bloğu ana birimi) 614448-40-8 = 614400 (= EFI boyutu)

  • Ana biriminizi aşağıdakilerle yeniden oluşturun:

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

    Ana birimin boyutu, ikinci GPT tablosunun ilk (bozuk ve eski) girişi ile belirlenebilir: (3000592961536/512) = 5860533128, blok numarasıdır. Daha sonra boyut 5860533128-614448 = 5859918680 blok ile hesaplanır. 5859918680 8 ile bölünebildiğinden (4096 fiziksel blok boyutu / 512 mantıksal blok boyutu) bu, hacim boyutu için iyi bir tahmindir.

    En iyi tahmin nihayet:

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

    İkinci en iyi tahmin:

    sudo gpt add -b 614448 -i 2 -s 5859918672 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • Muhtemelen kayıp hacimleriniz şimdi monte ediliyor. Birimi şu şekilde doğrulayın:

    diskutil verifyVolume disk6s2
    

    Gerekirse ses seviyesini onarmayı deneyin.

    diskutil repairVolume disk6s2
    

"Bozuk" diski farklı bir kasaya ve disk denetleyicisine taşıdığınızdan, mantıksal blok boyutu değiştirildi. Eski bölüm haritası muhtemelen 4096 Bayt mantıksal blok boyutuna dayanmaktadır.

Eski (4096b) durumda bölme haritasını kurtarmak için GPT'yi geri yüklemek için aşağıdakileri girmeniz gerekir (David Anderson'ın cevabına dayanarak):

  • Yeni bir gpt oluşturun:

    sudo gpt create /dev/disk6
    
  • İlk olarak EFI girişini şu şekilde yeniden oluşturun:

    sudo gpt add -b 6 -i 1 -s 76800 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Ana biriminizi aşağıdakilerle yeniden oluşturun:

    sudo gpt add -b 76806 -i 2 -s 732457067 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • son bölüm haritası şöyle görünür:

     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
    

4096b parçasına dayanarak bu, 512b mantıksal blok boyutunda bir disk takıldıktan sonra "yeniden çevrilir":

  • Yeni bir gpt oluşturun:

    sudo gpt create /dev/disk6
    
  • İlk olarak EFI girişini şu şekilde yeniden oluşturun:

    sudo gpt add -b 48 -i 1 -s 614400 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Ana biriminizi aşağıdakilerle yeniden oluşturun:

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

Bu, cevabımın ilk (kabul edilen) kısmından farklı ama doğru olanı! EFI aslında "boş" ve 262144 ayrılmamış bloklar yalnızca sıfır içerdiğinden, "ilk ve bir şekilde yanlış" yanıtı, birimin çalışabilirliğini etkilemez.


2

Bu bir cevap değil, sunduğunuz verilerden GPT bölüm bilgilerinin nasıl çıkarılacağına bir örnektir. Birincil GPT bölüm girişlerinin içeriğini göndermediğiniz için ikincil (yedek) GPT bölüm girişleri kullanıldı. Verileri yorumlamak için " GUID Bölümleme Tablosu " dokümanı kullanıldı.

Son kullanılabilir LBA, GPT başlığında bulunabilir. Bu, 8244 adresinde gerçekleşir.

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

İkincil (yedek) GPT girişlerinin başlangıcı bir sonraki blokta başlar. Değer

(732566640 + 1) * 4096 = 3000592961536 bytes.  

Bunu EFI bölüm tablosu girdisinin başlangıcı olarak kullanarak, aşağıdaki değerleri alıyorum. 3000592961568 adresinde bulunan EFI bölümünün başlangıcı

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

3000592961576 adresinde bulunan EFI bölümünün sonu:

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

Hangi bölüm boyutunu verir

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

3000592961696 adresinde bulunan HFS bölümünün başlangıcı

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

3000592961704 adresinde bulunan HFS bölümünün sonu,

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

Hangi bölüm boyutunu verir

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

512 baytlık bir blok boyutu kullanacaksanız, yukarıdaki sonuçların 512 bayt / bloğa dönüştürmek için 8 değeri ile çarpılması gerekecektir.


+1 EFI için aynı boyutta ve başlangıç ​​bloğu ve aynı başlangıç ​​bloğu alıyoruz, ancak ana hacmin farklı bir boyutu var.
klanomath
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.