Cách sửa phân vùng ổ cứng Mac hiển thị dưới dạng Fdsik_partition_scheme


8

Tình huống của tôi có vẻ rất giống với cách sửa ổ cứng GUID bị hỏng thành MBR nhưng với đủ sự khác biệt mà tôi không thể đưa ra một giải pháp tự tin.

Tôi có ổ Toshiba 3TB trong vỏ USB đang được sử dụng trên máy Mac với OS X El Capitain 10.11.3.

Ổ đĩa đã được thiết lập với một phân vùng duy nhất. Ổ đĩa không thể khởi động và không cài đặt hệ thống nên tôi cho rằng nó cũng không có phân vùng phục hồi. Tôi không thể nói chắc chắn rằng nó chưa bao giờ cài đặt hệ thống, nhưng tôi không nghĩ vậy. Nó không được sử dụng với Bootcamp hoặc trên bất kỳ máy tính không phải máy Mac nào.

Ổ đĩa hoạt động bình thường trong một thời gian dài nhưng sau đó không được công nhận gần đây. Khi điều tra với Disk Utility, nó cho thấy có một loại phân vùng FDisk_partition_scheme . Tôi chắc chắn rằng ban đầu nó là mặc định điển hình của Bản đồ phân vùng GUID được định dạng là OS X Extended (Nhật ký) .

Tôi không thể nghĩ về bất kỳ việc sử dụng hoặc sự kiện cụ thể nào có thể gây ra thay đổi.

Đây là thông tin tôi đã thu thập từ ổ đĩa.

danh sách đĩa / dev / đĩa6

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

thông tin đĩa / dev / đĩa6

   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 / đĩa6

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

phục hồi gpt / dev / đĩa6

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

gpt -r -vv hiển thị / dev / đĩa6

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 / đĩa6

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.

Dưới đây là ảnh chụp màn hình của phần đầu tiên của ổ đĩa trong wxHexEditor. PHẦN EFI bắt đầu từ 4096.

Bắt đầu ổ đĩa trong wxHexEditor

Tôi bắt đầu tìm kiếm chuỗi HFSJ bắt đầu từ độ lệch 409642, như được đề xuất trong các câu trả lời khác, nhưng không tìm thấy nó ở gần đó. Vì vậy, tôi đã tìm kiếm bắt đầu từ đầu ổ đĩa và tìm thấy lần xuất hiện đầu tiên ở offset 314598400.

Tuy nhiên, nếu tôi tiếp tục tìm kiếm sự xuất hiện của HFSJ, tôi thấy rất nhiều trong số chúng trông giống hệt nhau và có rất nhiều khoảng trống xung quanh chúng, giống như cái đầu tiên. Những người bắt đầu tại 360424448 và cách nhau 32768. Ví dụ: tại các điểm bù 360424448 360457216 360489984 360522752 360555520

Tôi đã sử dụng tìm kiếm Tìm tất cả trong wxHexEditor và dừng lại sau vài phút. Nó đã tìm thấy một vài ngàn tại thời điểm đó. Tôi không chắc phải làm gì với những thứ đó, nếu có gì.

Tôi cũng có thể tìm thấy một phần có nhãn Phân vùng hệ thống EFI ở offset 3000592961536. Điều đó cũng cho thấy tên mà ổ đĩa có tên là "Rosie".

Dưới đây là ảnh chụp màn hình của phân vùng HFSJ đầu tiên và Phân vùng hệ thống EFI. Đã thêm ảnh chụp màn hình bù 8192 dựa trên các nhận xét.

Phân vùng HFSJ đầu tiên, phân vùng EFI ở cuối và bù 8192.

Cảm ơn vì bất kì sự giúp đỡ.


Nếu xuất hiện, đĩa của bạn có kích thước khối là 4096 byte và hiện có kích thước 512 byte. Vì kích thước khối không được lưu trữ trên đĩa, nên câu hỏi của tôi sẽ là: Bạn có thay đổi phần cứng theo bất kỳ cách nào không? Ngoài ra, nếu kích thước khối là 4096 byte, thì bạn sẽ có thể đọc các mục trong bảng GPT cũ bắt đầu từ 8192 byte. Cho đến nay, bạn chỉ đăng tiêu đề GPT bắt đầu từ 4096 byte. Kết xuất hex có thể được chuyển đổi trở lại các giá trị thập phân chính xác bằng cách sử dụng thông tin được cung cấp ở đây .
David Anderson

@DavidAnderson, Phần cứng đã thay đổi trong đó ổ đĩa nằm trong một trường hợp USB khác. Tôi có thể có được trường hợp ban đầu nếu điều đó giúp bất cứ điều gì.
Doug Smith

@DavidAnderson Tôi đã thay đổi ảnh chụp màn hình để thêm một ảnh cho offset 8192. Nó hiển thị Phân vùng hệ thống EFI ở đó.
Doug Smith

@klanomath Vâng, câu trả lời được liên kết của bạn là chính xác. Tôi trộn khối và bù. Đó là tất cả các số không xung quanh bù 209736704, mặc dù. Tôi cũng đã thử chia số đó cho 8 (26217088) trong trường hợp có vấn đề về kích thước khối 4096. Điều đó đặt tôi vào trong rất nhiều dữ liệu, nhưng không có chuỗi HFSJ nào trong tầm nhìn.
Doug Smith

@klanomath, tôi đã bắt đầu qua quy trình của bạn. Cố gắng ghi đè 40 khối đầu tiên của tôi đã không thực sự ghi bất kỳ dữ liệu nào:0+0 records in 0+0 records out 0 bytes transferred in 0.000013 secs (0 bytes/sec)
Doug Smith

Câu trả lời:


9

Hãy thử như sau:

  • Nhận định danh đĩa của ổ đĩa 3 TB bên ngoài của bạn

    diskutil list
    

    Dưới đây tôi giả sử định danh đĩa là đĩa6

  • tháo đĩa:

    diskutil umountDisk disk6
    
  • Ghi đè 40 khối đầu tiên:

    sudo dd if=/dev/zero of=/dev/disk6 bs=512 count=40
    
  • Tạo một gpt mới:

    sudo gpt create /dev/disk6
    
  • Kiểm tra thông tin đĩa với:

    diskutil info /dev/disk6
    

    Hãy tự trấn an rằng kích thước khối thiết bị vẫn là 512 Byte

    Bạn cũng có thể sử dụng

    sudo gpt -r show /dev/disk6
    

    Nếu gpt hiển thị:

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

    bạn có bộ điều khiển đĩa & đĩa báo cáo kích thước khối logic là 512 Byte. Hãy tiếp tục với bước tiếp theo.

    Nếu gpt hiển thị:

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

    bạn có một bộ điều khiển đĩa và đĩa báo cáo kích thước khối logic là 4096 Byte. Hãy dừng lại ở đây và thêm một bình luận.

  • Đầu tiên xây dựng lại mục EFI với:

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

    Tùy thuộc vào kích thước của đĩa và phiên bản hệ thống, các khối EFI có kích thước khác nhau được tạo nếu được phân vùng bằng Disk Utility: một có kích thước 200 MiB hoặc một với 300 MiB. Ở đây rõ ràng là đĩa của bạn chứa 300 MiB EFI và có thể là 4096 byte không gian đĩa chưa phân bổ: (314598400-1024) / 512 = 614448 (= Khối lượng chính bắt đầu) 614448-40-8 = 614400 (= kích thước của EFI)

  • Xây dựng lại âm lượng chính của bạn với:

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

    Kích thước của âm lượng chính có thể được xác định bởi mục nhập đầu tiên (bị hỏng & cũ) của bảng GPT thứ hai: (3000592961536/512) = 5860533128 là số khối của nó. Sau đó, kích thước được tính bằng 5860533128-614448 = 5859918680 khối. Vì 5859918680 được chia cho 8 (kích thước khối vật lý 4096 / kích thước khối logic 512) nên đây là một dự đoán tốt cho kích thước âm lượng.

    Dự đoán tốt nhất cuối cùng là:

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

    Dự đoán tốt thứ hai là:

    sudo gpt add -b 614448 -i 2 -s 5859918672 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • Có lẽ khối lượng bị mất của bạn được gắn kết bây giờ. Xác nhận âm lượng với:

    diskutil verifyVolume disk6s2
    

    Nếu cần cố gắng sửa chữa âm lượng.

    diskutil repairVolume disk6s2
    

Vì bạn đã di chuyển đĩa "bị hỏng" sang trường hợp khác và bộ điều khiển đĩa, kích thước khối logic đã được sửa đổi. Bản đồ phân vùng cũ có thể dựa trên kích thước khối logic 4096 Byte.

Để khôi phục bản đồ phân vùng trong trường hợp cũ (4096b), bạn sẽ phải nhập thông tin sau để khôi phục GPT (dựa trên câu trả lời của David Anderson):

  • Tạo một gpt mới:

    sudo gpt create /dev/disk6
    
  • Đầu tiên xây dựng lại mục EFI với:

    sudo gpt add -b 6 -i 1 -s 76800 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Xây dựng lại âm lượng chính của bạn với:

    sudo gpt add -b 76806 -i 2 -s 732457067 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • bản đồ phân vùng cuối cùng trông như thế này:

     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
    

Dựa trên phần 4096b, "truyền lại" này sau khi cài đặt đĩa trong trường hợp kích thước khối logic 512b để:

  • Tạo một gpt mới:

    sudo gpt create /dev/disk6
    
  • Đầu tiên xây dựng lại mục EFI với:

    sudo gpt add -b 48 -i 1 -s 614400 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Xây dựng lại âm lượng chính của bạn với:

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

Điều này khác với phần đầu tiên (được chấp nhận) trong câu trả lời của tôi nhưng là phần thích hợp! Vì EFI thực sự là "trống rỗng" và các khối chưa được phân bổ 262144 chỉ chứa các số không, nên câu trả lời "đầu tiên và bằng cách nào đó sai" không ảnh hưởng đến khả năng hoạt động của âm lượng.


2

Đây không phải là một câu trả lời, mà là một ví dụ về cách trích xuất thông tin phân vùng GPT từ dữ liệu bạn đã trình bày. Các mục phân vùng GPT thứ cấp (dự phòng) đã được sử dụng vì bạn không đăng nội dung của các mục phân vùng GPT chính. Tài liệu " Bảng phân vùng GUID " được sử dụng để diễn giải dữ liệu.

LBA có thể sử dụng cuối cùng có thể được tìm thấy trong tiêu đề GPT. Điều này xảy ra tại địa chỉ 8244. Giá trị là

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

Bắt đầu các mục GPT thứ cấp (dự phòng) bắt đầu ở khối tiếp theo. Giá trị là

(732566640 + 1) * 4096 = 3000592961536 bytes.  

Sử dụng điều này như là bắt đầu của mục bảng phân vùng EFI, tôi nhận được các giá trị sau. Bắt đầu phân vùng EFI, được tìm thấy tại địa chỉ 3000592961568, là

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

Kết thúc phân vùng EFI, được tìm thấy tại địa chỉ 3000592961576, là

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

Cung cấp kích thước phân vùng

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

Bắt đầu phân vùng HFS, được tìm thấy tại địa chỉ 3000592961696, là

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

Kết thúc phân vùng HFS, được tìm thấy tại địa chỉ 3000592961704, là

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

Cung cấp kích thước phân vùng

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

Nếu bạn định sử dụng kích thước khối 512 byte, kết quả trên sẽ phải được nhân với giá trị 8 để chuyển đổi thành 512 byte / khối.


+1 Chúng tôi nhận được một khối kích thước và khối bắt đầu giống hệt nhau cho EFI và khối bắt đầu giống hệt nhau nhưng kích thước khác của âm lượng chính.
klanomath
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.