Câu trả lời ngắn: Tôi sẽ đề nghị sử dụng MBR id 0x07 cho các phân vùng UDF.
Câu trả lời dài:
Linux không quan tâm đến id phân vùng MBR và bỏ qua nó (*).
Windows 2000 và mới hơn có thể gán ký tự ổ đĩa cho một số phân vùng với id Phân loại id khi và chỉ khi IsRecognizedPartition (PartitionType) là đúng. Ngoài ra, đối với các phân vùng không phải FT phải cho rằng IsFTPartition (PartitionType) là sai (nếu không thì phân vùng đó được phát hiện là FT và không phải là FAT / NTFS / UDF / ... thông thường.
Điều kiện IsRecognizedPartition (PartitionType) &&! IsFTPartition (PartitionType) áp dụng cho các id phân vùng MBR này: 0x01, 0x04, 0x06, 0x07, 0x0B, 0x0C, 0x0E (**). Điều đó có nghĩa là Windows 2000 (và mới) có thể nhận ra và sử dụng phân vùng UDF nếu id phân vùng MBR là một trong số đó. Có lẽ không có hạn chế nào khác và bất kỳ hệ thống tệp được hỗ trợ nào cũng chấp nhận phân vùng với bất kỳ id MBR nào. Điều đó có nghĩa là các id MBR đó không được sử dụng để phát hiện hệ thống tệp.
Nhưng có một số khuyến nghị của Microsoft khi sử dụng Phân loại cụ thể:
- 0x01 - Phân vùng chính hoặc ổ đĩa logic FAT12 (có ít hơn 32.680 cung trong ổ đĩa)
- 0x04 - Phân vùng hoặc ổ đĩa logic1616 (32.680, 656535 hoặc 16 MB, 33 MB)
- 0x06 - Phân vùng hoặc ổ đĩa logic BIGDOS FAT16 (33 MB, 4 GB)
- 0x07 - Hệ thống tệp có thể cài đặt (phân vùng NTFS hoặc ổ đĩa logic)
- 0x0B - Phân vùng FAT32 hoặc ổ đĩa logic
- 0x0C - Phân vùng FAT32 hoặc ổ đĩa logic sử dụng phần mở rộng BIOS INT 13h (***)
- 0x0E - Phân vùng hoặc ổ đĩa logic BIGDOS FAT16 sử dụng phần mở rộng BIOS INT 13h (***)
Và cũng có nghĩa bởi Microsoft:
- 0x01 - Chỉ định phân vùng có các mục nhập 12 bit.
- 0x04 - Chỉ định phân vùng có các mục nhập 16 bit.
- 0x06 - Chỉ định phân vùng lớn MS-DOS V4.
- 0x07 - Chỉ định phân vùng IFS.
- 0x0B - Chỉ định phân vùng FAT32.
- 0x0C - Windows 95/98: Chỉ định phân vùng sử dụng các dịch vụ INT 13 mở rộng.
Trên Wikipedia cũng có thể được tìm thấy một số khuyến nghị:
- 0x01 - CHS / LBA - DOS 2.0+ - FAT12 làm phân vùng chính trong 32 MB vật lý đầu tiên của đĩa ... (thay vào đó sử dụng 0x06 thay thế)
- 0x04 - CHS / LBA - DOS 3.0+ - FAT16 với ít hơn 65536 cung (32 MB) ... (thay vào đó sử dụng 0x06 thay thế)
- 0x06 - CHS / LBA - DOS 3.31+ - FAT16B với 65536 ngành trở lên. Nó phải nằm trong 8 GB vật lý đầu tiên ... (thay vào đó sử dụng 0x0E). Cũng được sử dụng cho các ổ đĩa FAT12 và FAT16 trong các phân vùng chính nếu chúng không nằm trong 32 MB vật lý đầu tiên của đĩa.
- 0x07 - CHS / LBA - HĐH / 2 1.2+, Windows NT / CE - IFS / HPFS / NTFS / exFAT / QNX
- 0x0B - CHS / LBA - DOS 7.1+ - FAT32 với địa chỉ CHS
- 0x0C - LBA - DOS 7.1+ - FAT32 với LBA
- 0x0E - LBA - DOS 7.0+ - FAT16B với LBA
Để hoàn thành danh sách id, đây là một số thông tin về các hệ thống cũ không hỗ trợ phân vùng đĩa cứng được định dạng UDF.
Windows NT 4.0 trở lên chỉ có thể gán ký tự ổ đĩa cho các phân vùng có id MBR: 0x01, 0x04, 0x06, 0x07.
Windows dựa trên DOS (95, 98 và ME) chỉ có thể gán ký tự ổ đĩa cho các phân vùng có id MBR: 0x01, 0x04, 0x06, 0x0B, 0x0C, 0x0E. Bản thân MS-DOS chỉ có thể truy cập các phân vùng với id MBR: 0x01, 0x04, 0x06. Lưu ý rằng các hệ thống này sử dụng id phân vùng MBR để phát hiện hệ thống tệp. Id phân vùng MBR phải khớp với hệ thống tệp trên phân vùng.
Phần kết luận:
Nhìn vào kích thước phân vùng: 0x01 và 0x04 chỉ nên được sử dụng cho các phân vùng trong 32 MB đầu tiên của đĩa. 0x06 chỉ trong 8GB đĩa đầu tiên. 0x0B dành cho địa chỉ CHS có giới hạn cho các đĩa 8GB. Vì vậy, không có giới hạn như vậy chỉ có id: 0x07, 0x0C và 0x0E. Vì 0x0C và 0x0E được sử dụng cho các phân vùng FAT, tôi sẽ đề nghị chọn 0x07 . Nó có nghĩa là cho các phân vùng IFS (Hệ thống tệp có thể cài đặt) và theo Wikipedia, Microsoft đã thêm hỗ trợ cho UDF vào Windows 2000 IFS API. Việc sử dụng 0x0C hoặc 0x0E sẽ khiến các hệ thống dựa trên DOS hiển thị phân vùng đó dưới dạng FAT, thậm chí nó sẽ được định dạng là UDF. Các phân vùng với MBR id 0x07 được ẩn trên các hệ thống đó. Họ không hỗ trợ UDF, do đó, lựa chọn tốt hơn là 0x0C hoặc 0x0E.
GPT:
Bố cục phân vùng GPT nằm ngoài câu hỏi này, nhưng nó có vấn đề tương tự như MBR. Không có phân vùng GUID (tương đương GPT cho MBR id) được gán cho UDF. Vì Windows XP x64 hỗ trợ UDF và chỉ có thể nhận ra phân vùng dữ liệu GPT với GUID EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Phân vùng dữ liệu cơ bản của Microsoft), nên đây là lựa chọn khả thi duy nhất cho GPT.
Nguồn:
(*) Có một ngoại lệ: Id MBR 0x05, 0x0F và 0x85 được sử dụng để phát hiện các phân vùng MBR mở rộng.
(**) Định nghĩa của hai cuộc gọi này có thể được tìm thấy trong tệp WinIoCtl.h khi chúng được khai báo là macro C.
(***) Phần mở rộng BIOS INT 13h có nghĩa là sử dụng LBA thay vì CHS.