Chữ ký tiêu đề GPT để làm gì?


13

Theo bài viết Wikipedia này , Địa chỉ khối logic thứ hai của Bảng phân vùng GUID (LBA 1) là tiêu đề GPT chính. Sau đó, nó nêu trong phần về tiêu đề rằng 8 byte đầu tiên của tiêu đề dành cho 'Chữ ký'.

Chữ ký tiêu đề GPT này là gì và sự liên quan của nó với chức năng / hoạt động của bảng / thiết bị lưu trữ GPT là gì?

Tôi đã tìm kiếm trên web, nhưng tìm thấy rất ít thông tin về chữ ký tiêu đề này để làm gì.

Biên tập:

Tôi đã hỏi những câu hỏi tiếp theo trong các bình luận cho câu trả lời của Deltik , chúng được mở rộng rất hữu ích để giải quyết:

  • Nếu chữ ký trống, thì bảng GPT sẽ không được công nhận?
  • Tôi hiện đang kiểm tra Chrome OS GPT, nơi chữ ký dường như đã được đặt thành 'IGNOREME'. Điều đó có ảnh hưởng gì?
  • Có bất kỳ chữ ký GPT hợp lệ khác có sẵn? (ngoài 'PHẦN EFI' mặc định)

Câu trả lời:


23

Chữ ký EFI PART( 0x45 0x46 0x49 0x20 0x50 0x41 0x52 0x54) chỉ đơn giản nói "Đây là Bảng phân vùng GUID". Đó là cách phần mềm biết rằng thiết bị khối được định dạng theo bố cục GPT.

Bạn có thể thấy nó từ đoạn trích của hexdump:

*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200  45 46 49 20 50 41 52 54  00 00 01 00 5c 00 00 00  |EFI PART....\...|
00000210  ea b5 99 a4 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00000220  af 12 9e 3b 00 00 00 00  22 00 00 00 00 00 00 00  |...;....".......|
00000230  8e 12 9e 3b 00 00 00 00  7f 8c d6 05 c8 e8 01 4a  |...;...........J|
00000240  b8 74 6b 37 30 7c bf 15  02 00 00 00 00 00 00 00  |.tk70|..........|
00000250  80 00 00 00 80 00 00 00  10 d3 0e 29 00 00 00 00  |...........)....|
00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*

Chữ ký không phải là duy nhất cho GPT. Các tệp cũng có chữ ký mà phần mềm có thể sử dụng để xác định các tệp là gì. Đây là cơ chế hoạt động của filelệnh. ( Ví dụ vềfile )


Trả lời các câu hỏi tiếp theo

Vậy, nếu chữ ký này trống, thì bảng phân vùng GPT sẽ không được nhận dạng?

Ít nhất, gdisksẽ không còn nhận ra nó. Kiểm tra bản demo này:

  1. Tạo một tệp (hoạt động như một thiết bị khối) cho bản demo:

    root@demo [/tmp]# truncate -s 1M gpt-demo
    
  2. Định dạng tệp bằng GPT:

    root@demo [/tmp]# sgdisk --clear gpt-demo
    Creating new GPT entries.
    Warning: The kernel is still using the old partition table.
    The new table will be used at the next reboot or after you
    run partprobe(8) or kpartx(8)
    The operation has completed successfully.
    
  3. Kiểm tra dữ liệu nhị phân của bảng phân vùng:

    root@demo [/tmp]# hexdump -C gpt-demo
    00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001c0  02 00 ee 20 20 00 01 00  00 00 ff 07 00 00 00 00  |...  ...........|
    000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
    00000200  45 46 49 20 50 41 52 54  00 00 01 00 5c 00 00 00  |EFI PART....\...|
    00000210  13 14 6d 6a 00 00 00 00  01 00 00 00 00 00 00 00  |..mj............|
    00000220  ff 07 00 00 00 00 00 00  22 00 00 00 00 00 00 00  |........".......|
    00000230  de 07 00 00 00 00 00 00  be 2c cb 6e 58 d4 e3 46  |.........,.nX..F|
    00000240  84 84 3c 83 52 59 5b 58  02 00 00 00 00 00 00 00  |..<.RY[X........|
    00000250  80 00 00 00 80 00 00 00  86 d2 54 ab 00 00 00 00  |..........T.....|
    00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000ffe00  45 46 49 20 50 41 52 54  00 00 01 00 5c 00 00 00  |EFI PART....\...|
    000ffe10  18 3a 1f d9 00 00 00 00  ff 07 00 00 00 00 00 00  |.:..............|
    000ffe20  01 00 00 00 00 00 00 00  22 00 00 00 00 00 00 00  |........".......|
    000ffe30  de 07 00 00 00 00 00 00  be 2c cb 6e 58 d4 e3 46  |.........,.nX..F|
    000ffe40  84 84 3c 83 52 59 5b 58  df 07 00 00 00 00 00 00  |..<.RY[X........|
    000ffe50  80 00 00 00 80 00 00 00  86 d2 54 ab 00 00 00 00  |..........T.....|
    000ffe60  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00100000
    
  4. Kiểm tra cách gdiskđọc bảng phân vùng:

    root@demo [/tmp]# gdisk gpt-demo
    GPT fdisk (gdisk) version 1.0.3
    
    Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: present
    
    Found valid GPT with protective MBR; using GPT.
    
    Command (? for help): q
    
  5. Thay đổi chữ ký GPT:

    root@demo [/tmp]# sed -i 's/EFI PART/IGNOREME/g' gpt-demo
    
  6. Xác nhận rằng chữ ký đã bị thu hồi:

    root@demo [/tmp]# hexdump -C gpt-demo
    00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001c0  02 00 ee 20 20 00 01 00  00 00 ff 07 00 00 00 00  |...  ...........|
    000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
    00000200  49 47 4e 4f 52 45 4d 45  00 00 01 00 5c 00 00 00  |IGNOREME....\...|
    00000210  13 14 6d 6a 00 00 00 00  01 00 00 00 00 00 00 00  |..mj............|
    00000220  ff 07 00 00 00 00 00 00  22 00 00 00 00 00 00 00  |........".......|
    00000230  de 07 00 00 00 00 00 00  be 2c cb 6e 58 d4 e3 46  |.........,.nX..F|
    00000240  84 84 3c 83 52 59 5b 58  02 00 00 00 00 00 00 00  |..<.RY[X........|
    00000250  80 00 00 00 80 00 00 00  86 d2 54 ab 00 00 00 00  |..........T.....|
    00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000ffe00  49 47 4e 4f 52 45 4d 45  00 00 01 00 5c 00 00 00  |IGNOREME....\...|
    000ffe10  18 3a 1f d9 00 00 00 00  ff 07 00 00 00 00 00 00  |.:..............|
    000ffe20  01 00 00 00 00 00 00 00  22 00 00 00 00 00 00 00  |........".......|
    000ffe30  de 07 00 00 00 00 00 00  be 2c cb 6e 58 d4 e3 46  |.........,.nX..F|
    000ffe40  84 84 3c 83 52 59 5b 58  df 07 00 00 00 00 00 00  |..<.RY[X........|
    000ffe50  80 00 00 00 80 00 00 00  86 d2 54 ab 00 00 00 00  |..........T.....|
    000ffe60  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00100000
    
  7. Lưu ý rằng Bảng phân vùng GUID (GPT) không còn được nhận ra bởi gdisk:

    root@demo [/tmp]# gdisk gpt-demo
    GPT fdisk (gdisk) version 1.0.3
    
    Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: not present
    
    Creating new GPT entries.
    
    Command (? for help): q
    

Tôi hiện đang kiểm tra Chrome OS GPT, nơi chữ ký dường như đã được đặt thành 'IGNOREME'. Bạn có biết những gì sẽ có tác dụng?

Theo như tôi có thể nói từ bản demo ở trên, nếu chữ ký khác với EFI PART, GPT không được công nhận.

Các IGNOREME"chữ ký" là một chữ ký đặc biệt được tạo ra bởi Chromium. Đây là tài liệu tôi tìm thấy choIGNOREME :

cgptlib: Add support for IGNOREME GPT signature

This patch makes cgpt aware of a special "IGNOREME" GPT header signature
string that may appear in either the primary or the secondary GPT and
cause cgpt (and other cgptlib clients) to completely ignore that GPT. It
will continue to function correctly for all other purposes (using the
data from the non-ignored GPT), but never write any data back to the
ignored GPT.

BRANCH=None
BUG=chrome-os-partner:52595
TEST=unit tests

Change-Id: I7e53542385ae9d8d24dc25b75e91f4ff4917f66f
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/340072
Reviewed-by: Nam Nguyen <namnguyen@google.com>

Bạn đã kiểm tra GPT thứ cấp ở cuối thiết bị đĩa / khối chưa?

Có bất kỳ chữ ký GPT hợp lệ khác có sẵn?

Không, không có chữ ký nào khác ngoài EFI PARTvì đó là chữ ký duy nhất trong Thông số kỹ thuật của UEFI (xem trang 123). ( Bản sao lưu trữ của Thông số kỹ thuật UEFI Phiên bản 2.7 (Errata A) )


Điều này thật thú vị, cảm ơn. Vậy, nếu chữ ký này trống, thì bảng phân vùng GPT sẽ không được nhận dạng? Tôi hiện đang kiểm tra Chrome OS GPT, nơi chữ ký dường như đã được đặt thành 'IGNOREME'. Bạn có biết những gì sẽ có tác dụng? Có bất kỳ chữ ký GPT hợp lệ khác có sẵn?
Time4Tea

3
@ Time4Tea: Tôi đã trả lời các câu hỏi tiếp theo của bạn trong phần chỉnh sửa câu trả lời của tôi ở trên.
Deltik

1
Chỉnh sửa tuyệt vời. Cảm ơn bạn đã trả lời chi tiết như vậy!
Time4Tea

Vì vậy, 'IGNOREME' có thể có ý nghĩa gì đó với Chromium / Chrome OS, nhưng nếu tôi gắn thiết bị này vào hệ thống Linux 'thông thường', có lẽ nó sẽ không nhận ra?
Time4Tea

2
@ Time4Tea: Đúng. Bạn có thể thấy từ bản demo trong câu trả lời của tôi rằng Linux không còn có thể nhận ra bố cục GPT sau khi thay đổi chữ ký thành IGNOREME.
Deltik
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.