HFS + niepoprawna liczba bloków alokacji

2

W porządku, więc kilka dni temu chciałem zainstalować Ubuntu GNOME na zwykłym Ubuntu i to dało mi możliwość automatycznego nadpisania mojej instalacji Ubuntu (którą miałem na osobnej partycji z mojego OS X Yosemite). Jednak po zainstalowaniu GNOME w ten sposób okazało się, że instalator usunął również moją partycję OS X.

Od tego czasu próbowałem różnych rzeczy, aby odzyskać moją partycję Mac, użyłem TestDisk do znalezienia sektorów i gdisk do odtworzenia tablicy partycji (i partycji). Problem polega na tym, że nie mogę zamontować tych nowych partycji. Próbowałem naprawić fsck.hfsplus, ale daje mi następujący błąd (uruchomiony z wersji próbnej GNOME USB):

ubuntu-gnome@ubuntu-gnome:~$ sudo fsck.hfsplus /dev/sda2
** /dev/sda2
** Checking HFS Plus volume.
   Invalid number of allocation blocks
(4294967295, 0)
** Volume check failed.

Oto moje wyniki testu:

Testdisk results Oto partycje, które zrobiłem w gdisk:

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34          409633   200.0 MiB   EF00  EFI System Partition
   2          411648      1164570455   555.1 GiB   AF00  Apple HFS/HFS+
   3      1165256704      1166528119   620.8 MiB   AF00  Apple HFS/HFS+
   4      1166528512      1182543855   7.6 GiB     8200  Linux swap
   5      1182543872      1465147391   134.8 GiB   8300  Linux filesystem

Oto różne wyjścia po uruchomieniu w trybie odzyskiwania Internetu:

diskutil list:

-bash-3.2# diskutil list /dev/disk0
   #:                        TYPE NAME                    SIZE        IDENTIFIER
   0:       GUID_partition_scheme                         *750.2 GB   disk0
   1:                         EFI                          209.7 MB   disk0s1
   2:                   Apple_HFS                          596.0 GB   disk0s2
   3:                   Apple_HFS                          651.0 MB   disk0s3
   4:                  Linux Swap                          8.2 GB     disk0s4
   5: 0FC63DAF-8483-4772-8E79-3D69D8477DE4                 144.7 GB   disk0s5
/dev/disk1
   #:                        TYPE NAME                    SIZE        IDENTIFIER
   0:      Apple_partition_scheme                         *1.2 GB     disk1
   1:         Apple_partition_map                          30.7 KB    disk1s1
   2:                   Apple_HFS Mac OS X Base System     1.2 GB     disk1s2

/dev/disk2-disk12 are part of the recovery system and irrelevant here

diskutil cs list:

No CoreStorage logical volume groups found

gpt -r -vv show /dev/disk0:

-bash-3.2# gpt -r -vv show /dev/disk0
gpt show: /dev/disk0: mediasize=750156374016; sectorsize=512; blocks=1465149168
gpt show: /dev/disk0: PMBR at sector 0
gpt show: /dev/disk0: Pri GPT at sector 1
gpt show: /dev/disk0: Sec GPT at sector 1465149167
       start        size index contents
           0           1       PMBR
           1           1       Pri GPT header
           2          32       Pri GPT table
          34      409600     1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      409634        2014                                                     
      411648  1164158808     2 GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  1164570456      686248
  1165256704     1271416     3 GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  1166528120         392
  1166528512    16015344     4 GPT part - 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
  1182543856          16
  1182543872   282603520     5 GPT part - 0FC63DAF-8483-4772-8E79-3D69D8477DE4
  1465147392        1743
  1465149135          32       Sec GPT table
  1465149167           1       Sec GPT header
Roemer Bakker
źródło
@klanomath dziękuję za odpowiedź. Zmodyfikowałem moje pytanie (przepraszam, że zajęło to trochę czasu)
Roemer Bakker
Ja też tego próbowałem. Powodem, dla którego sektory w partycjach, które zrobiłem, są nieco inne, jest to, że naprawiłem wolumin za pomocą narzędzia dyskowego. Gdy próbuję naprawić poszczególne partycje, otrzymuję również błędy. Ponownie uruchomię odzyskiwanie i edytuję ten komentarz tymi błędami.
Roemer Bakker
Dzięki. Spróbuję twojej odpowiedzi. Jakie mam szanse na odzyskanie partycji, którą uważasz? Nie musi być bootowalny, potrzebuję tylko kilku plików (hfsprescue nie jest teraz opcją, ponieważ musiałbym przywrócić wszystko i nie mam dysku flash 700 gb). Ponowna instalacja systemu OS X To nie problem.
Roemer Bakker
@klanomath Dobra, Disk Utility w odzyskiwaniu dawał te same błędy. Zainstaluję Yosemite na dysku flash GNOME i spróbuję DiskWarrior i wxHexEditor. Stack nie lubi rozszerzonych komentarzy, więc przeniosę go również na czat.
Roemer Bakker
Pozwól nam kontynuuj tę dyskusję na czacie .
Roemer Bakker

Odpowiedzi:

3

Moim zdaniem „TestDisk” dał ci GPT.

Proszę porównać wynik testu TestDisk z moimi dyskami. Dyski w moim przykładzie są jednakowej wielkości, disk0 zawiera partycję CoreStorage i dysk2 starszą partycję JHFS +. Używam dwóch oddzielnych dysków, ponieważ nie wiadomo (przynajmniej dla mnie), który typ formatowania (CS lub JHFS +) był pierwotnie używany.

PMBR / GPT i pierwsze trzy partycje (EFI / Macintosh HD / Recovery HD) powinny wyglądać następująco, jeśli wcześniej posiadałeś partycję CoreStorage:

    root# gpt -r -vv show disk0
gpt show: disk0: mediasize=68719476736; sectorsize=512; blocks=134217728
gpt show: disk0: PMBR at sector 0
gpt show: disk0: Pri GPT at sector 1
gpt show: disk0: Sec GPT at sector 134217727
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  132538512      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  132948152    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC

lub w ten sposób, jeśli wcześniej miałeś klasyczny wolumin JHFS +:

root# gpt -r -vv show disk2
gpt show: disk2: mediasize=68719476736; sectorsize=512; blocks=134217728
gpt show: disk2: PMBR at sector 0
gpt show: disk2: Pri GPT at sector 1
gpt show: disk2: Sec GPT at sector 134217727
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  132538512      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  132948152    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC

(Proszę wziąć pod uwagę, że mediasize, bloki, sektor drugorzędnego GPT, rozmiar drugiego woluminu i blok startowy trzeciego woluminu są inne niż twoje, ponieważ używam tutaj mniejszych przykładowych dysków)

Twój problem powinien zostać rozwiązany przez ponowne przepisanie GPT jeszcze raz.

Przygotowanie:

Zainstaluj pełny system waniliowy (Mavericks lub Yosemite powinien działać) na pendrive (lub dysku zewnętrznym). System odzyskiwania nie działa. Uruchom na pendrive, pobierz i zainstaluj wxHexEditor . Włącz użytkownika root i zaloguj się jako root.

Podpowiedź: Podczas pracy z wxHexEditor nie używaj kopiowania i wklejania. Wprowadź wszystko ręcznie! Możesz przypadkowo napisać bezpośrednio na dysk.

Partycja JHFS + lub CoreStorage?

Najpierw musisz określić, czy masz partycję JHFS + lub CoreStorage o indeksie 2.

Otwórz kalkulator. Otwórz wxHexEditor. Sprawdź, czy pracujesz w trybie tylko do odczytu („Opcje” - & gt; „Tryb pliku” - & gt; „Tylko do odczytu”). W menu przejdź do „Urządzenia” - & gt; „Otwórz urządzenie dyskowe” - & gt; wybierz odpowiedni numer dysku. Prawdopodobnie jest to dysk0. Dysk powinien mieć kolejne partycje (disk0s1 - disk0s5). Spróbuj uporządkować okno wxHexEditor, jak w poniższych przykładach, prostymi czerwonymi liniami.

Następnie naciśnij przycisk „Idź do przesunięcia” (oznaczony zielonym kółkiem) i wprowadź 409640 dokładnie tak, jak na poniższym obrazku. Czasami robisz to dwukrotnie, aby przejść do właściwego sektora. Ponownie sprawdź poprawny sektor, wprowadzając offset (zaznaczony na czerwono) w kalkulatorze i dzieląc go przez 512.

Pierwsze 3 sektory partycji CoreStorage wyglądają tak:

cs

Pierwsze 3 sektory JHFS + wyglądają tak:

jhfs+

Jeśli masz zupełnie inny obraz, zatrzymaj się tutaj.

Gdzie zaczyna się partycja EFI?

Naciśnij przycisk „Idź do przesunięcia” i wprowadź 40 dokładnie tak, jak na poniższym rysunku:

efi

Jeśli widzisz te same wpisy, jak na powyższym obrazku (XEBSD 4.4 ... EFI ... FAT32), jest to sektor początkowy twojej partycji EFI. Jeśli są tylko zera, to również może być ważne.

Gdzie zaczyna się partycja Recovery HD?

To prawdopodobnie najtrudniejsza część, ponieważ musisz znaleźć ciąg, który nie jest zbyt specyficzny. Przeskocz prawie do końca drugiej partycji (w twoim przypadku ~ 400 MB / 781250 sektorów mniej niż 1164570456 = 1163789206)

Następnie wpisz „HFSJ” jak na obrazku poniżej, wyszukaj ten ciąg dwa razy i zanotuj różne przesunięcia:

rhd

Możesz mieć dwa naprawdę różne wyniki w zależności od typu partycji:

  1. Oblicz numer sektora pierwszego znalezienia. W moim przykładzie (patrz obrazek powyżej) jest to 68069452800/512 = 132948150. Kontynuuj wyszukiwanie i oblicz sektor drugiego znalezienia. W moim przypadku było to 68069454848/512 = 132948154 (brak obrazu).
    Różnica między dwoma znaleziskami wynosi 4 bloki (= 2 KB).

    Jest to typowe dla granicy między partycją JHFS + a Recovery HD. Odzyskiwanie HD rozpoczyna się wtedy w sektorze drugiego wyszukiwania - 2 (w moim przykładzie 132948154-2 = 132948152).

  2. Oblicz numer sektora pierwszego znalezienia. W moim przykładzie było to 67733904384/512 = 132292782 (brak obrazu). Kontynuuj wyszukiwanie i oblicz sektor drugiego znalezienia. W moim przypadku było to 68069454848/512 = 132948154 (brak obrazu). Różnica między tymi dwoma wynikami wynosi 655372 (~ 336 MB)

    Jest to typowe dla granicy między partycją CoreStorage a Recovery HD. Odzyskiwanie HD rozpoczyna się wtedy w sektorze drugiego wyszukiwania - 2 (w moim przykładzie 132948154-2 = 132948152).

Dzięki tym wynikom powinieneś być w stanie prawidłowo przywrócić GPT. Zamknij wxHexEditor. Jeśli zostaniesz poproszony o zapisanie zmian nie zapisuj ich! .

Przebuduj odpowiedni GPT

Zakładam, że identyfikatorem twojego głównego dysku jest disk0. Najpierw musisz odmontować główny dysk:

diskutil umountDisk disk0

Sprawdź układ partycji, a następnie usuń trzy pierwsze partycje:

gpt -r -vv show /dev/disk0

gpt remove -i 3 disk0
gpt remove -i 2 disk0
gpt remove -i 1 disk0

Ponieważ EFI i Recovery HD mają zwykle stałe rozmiary, możemy obliczyć blok początkowy i końcowy głównego woluminu.

Najpierw przebudowujemy EFI za pomocą:

gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk0

Następnie obliczamy wielkość głównego wolumenu: blok początkowy to 409640. Blok końcowy został znaleziony w sekcji „Gdzie zaczyna się partycja Recovery HD?”: 1 mniej niż blok startowy Recovery HD. Rozmiar to StartBlockOfRecoveryHD-409640.

Jeśli wcześniej znalazłeś klasyczny JHFS +, poniższe polecenie powinno naprawić partycję 2:

gpt add -b 409640 -i 2 -s StartBlockOfRecoveryHD-409640 -t 48465300-0000-11AA-AA11-00306543ECAC disk0

Jeśli wcześniej znalazłeś partycję CoreStorage, poniższe polecenie powinno naprawić partycję 2:

gpt add -b 409640 -i 2 -s StartBlockOfRecoveryHD-409640 -t 53746F72-6167-11AA-AA11-00306543ECAC disk0

Aby odbudować Recovery HD wpisz:

gpt add -b StartBlockOfRecoveryHD -i 3 -s 1269536 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk0

Ponownie zainstaluj dysk0 za pomocą:

diskutil mountDisk disk0

Zamknij Terminal, uruchom Narzędzie dyskowe i sprawdź swój główny wolumin (prawdopodobnie Macintosh HD) w poszukiwaniu błędów i spróbuj je naprawić, jeśli to konieczne.
Jeśli wcześniej znalazłeś partycję CoreStorage, przed naprawą woluminów za pomocą Narzędzia dyskowego może być konieczne ponowne uruchomienie komputera, ponieważ wolumin logiczny CoreStorage może nie zostać rozpoznany / poprawnie zainstalowany. W ustawieniach - 1 dysk główny i pamięć USB - wolumin logiczny powinien być dyskiem2.

Mam nadzieję, że to rozwiąże twoje problemy.

Jeśli napotkasz problemy (np. Nie możesz znaleźć właściwego sektora startowego odzyskiwania HD), masz natychmiast wątpliwości lub pytania i skontaktuj się ze mną z komentarzem @klanomath!

klanomath
źródło