คำตอบสั้น ๆ : ฉันขอแนะนำให้ใช้ MBR id 0x07สำหรับพาร์ติชัน UDF
คำตอบยาว:
Linux ไม่สนใจเกี่ยวกับรหัสพาร์ติชัน MBR และละเว้นมัน (*)
Windows 2000 และที่ใหม่กว่าสามารถกำหนดอักษรชื่อไดรฟ์ให้กับพาร์ติชันบางตัวที่มี id PartitionTypeถ้าหากIsRecognizedPartition (PartitionType)เป็นจริง ยิ่งไปกว่านั้นสำหรับพาร์ติชันที่ไม่ใช่ FT ต้องถือว่าIsFTPartition (PartitionType)เป็นเท็จ (มิฉะนั้นจะตรวจพบพาร์ติชันเป็น FT และไม่เหมือนกับ FAT / NTFS / UDF / ...
Condition IsRecognizedPartition (PartitionType) &&! IsFTPartition (PartitionType)ใช้สำหรับรหัสพาร์ติชัน MBR เหล่านี้: 0x01, 0x04, 0x06, 0x07, 0x0B, 0x0C, 0x0E (**) ซึ่งหมายความว่า Windows 2000 (และใหม่) สามารถรับรู้และใช้งานพาร์ติชัน UDF หากรหัสพาร์ติชัน MBR เป็นหนึ่งในนั้น อาจไม่มีข้อ จำกัด อื่น ๆ และระบบไฟล์ที่รองรับยอมรับพาร์ติชันด้วยรหัส MBR ใด ๆ ซึ่งหมายความว่ารหัส MBR เหล่านั้นไม่ได้ใช้สำหรับการตรวจหาระบบไฟล์
แต่มีคำแนะนำจาก Microsoft เมื่อควรใช้PartitionTypeเฉพาะ:
- 0x01 - FAT12 พาร์ติชันหลักหรือไดรฟ์แบบลอจิคัล (น้อยกว่า 32,680 เซกเตอร์ในไดรฟ์ข้อมูล)
- 0x04 - พาร์ติชัน FAT16 หรือไดรฟ์แบบลอจิคัล (32,680–65,535 ภาคหรือ 16 MB – 33 MB)
- 0x06 - พาร์ติชันหรือไดรฟ์ลอจิคัล BIGDOS FAT16 (33 MB – 4 GB)
- 0x07 - ระบบไฟล์ที่ติดตั้งได้ (พาร์ติชัน NTFS หรือไดรฟ์แบบลอจิคัล)
- 0x0B - พาร์ติชัน FAT32 หรือไดรฟ์ลอจิคัล
- 0x0C - พาร์ติชัน FAT32 หรือไดรฟ์ลอจิคัลโดยใช้ส่วนขยาย BIOS INT 13h (***)
- 0x0E - พาร์ติชัน BIGDOS FAT16 หรือไดรฟ์ลอจิคัลโดยใช้ส่วนขยาย BIOS INT 13 ชม. (***)
และยังมีความหมายโดย Microsoft:
- 0x01 - ระบุพาร์ติชันด้วยรายการ FAT 12 บิต
- 0x04 - ระบุพาร์ติชันด้วยรายการ FAT 16 บิต
- 0x06 - ระบุพาร์ติชันขนาดใหญ่ MS-DOS V4
- 0x07 - ระบุพาร์ติชัน IFS
- 0x0B - ระบุพาร์ติชัน FAT32
- 0x0C - Windows 95/98: ระบุพาร์ติชันที่ใช้บริการเสริม INT 13
ใน Wikipedia สามารถพบได้คำแนะนำบางอย่างเช่น:
- 0x01 - CHS / LBA - DOS 2.0+ - FAT12 เป็นพาร์ติชันหลักในดิสก์กายภาพ 32 MB แรก ... (มิฉะนั้นจะใช้ 0x06 แทน)
- 0x04 - CHS / LBA - DOS 3.0+ - FAT16 ที่มีพื้นที่น้อยกว่า 65536 (32 MB) ... (มิฉะนั้นใช้ 0x06 แทน)
- 0x06 - CHS / LBA - DOS 3.31+ - FAT16B ที่มีภาค 65536 หรือมากกว่า จะต้องอยู่ในดิสก์ทางกายภาพ 8 GB แรก ... (มิฉะนั้นให้ใช้ 0x0E แทน) ยังใช้สำหรับวอลุ่ม FAT12 และ FAT16 ในพาร์ติชันหลักหากไม่ได้อยู่ในดิสก์แบบฟิสิคัล 32 MB แรก
- 0x07 - CHS / LBA - OS / 2 1.2+, Windows NT / CE - IFS / HPFS / NTFS / exFAT / QNX
- 0x0B - CHS / LBA - DOS 7.1+ - FAT32 พร้อมที่อยู่ CHS
- 0x0C - LBA - DOS 7.1+ - FAT32 พร้อม LBA
- 0x0E - LBA - DOS 7.0+ - FAT16B พร้อม LBA
เพื่อให้รายการรหัสสมบูรณ์นี่เป็นข้อมูลเกี่ยวกับระบบเก่าซึ่งไม่รองรับ UDF ที่ฟอร์แมตพาร์ติชันฮาร์ดดิสก์
Windows NT 4.0 และรุ่นเก่ากว่าสามารถกำหนดอักษรชื่อไดรฟ์ให้กับพาร์ติชันที่มีรหัส MBR: 0x01, 0x04, 0x06, 0x07
Windows ที่ใช้ DOS (95, 98 และ ME) สามารถกำหนดอักษรชื่อไดรฟ์ให้กับพาร์ติชันที่มีรหัส MBR: 0x01, 0x04, 0x06, 0x0B, 0x0C, 0x0E MS-DOS สามารถเข้าถึงได้เฉพาะพาร์ติชั่นที่มีรหัส MBR: 0x01, 0x04, 0x06 โปรดทราบว่าระบบเหล่านี้ใช้ ID พาร์ติชัน MBR สำหรับการตรวจสอบระบบไฟล์ ID พาร์ติชัน MBR จะต้องตรงกับระบบไฟล์ในพาร์ติชั่น
สรุป:
ดูขนาดพาร์ติชัน: 0x01 และ 0x04 ควรใช้สำหรับพาร์ติชันในดิสก์ 32MB แรกเท่านั้น 0x06 เฉพาะใน 8GB แผ่นแรก 0x0B ใช้สำหรับการกำหนดแอดเดรส CHS ซึ่งมีขีด จำกัด สำหรับดิสก์ 8GB ดังนั้นโดยไม่มีข้อ จำกัด ดังกล่าวเป็นรหัสเท่านั้น: 0x07, 0x0C และ 0x0E ในฐานะที่เป็น 0x0C และ 0x0E จะใช้สำหรับพาร์ทิชัน FAT ผมจะแนะนำให้เลือก0x07 มันมีความหมายสำหรับพาร์ติชัน IFS (ระบบไฟล์ที่ติดตั้งได้) และตาม Wikipedia, Microsoft ได้เพิ่มการสนับสนุน UDF ใน Windows 2000 IFS API การใช้ 0x0C หรือ 0x0E จะทำให้ระบบที่ใช้ระบบ DOS แสดงพาร์ติชั่นนั้นเป็น FAT แม้ว่ามันจะถูกฟอร์แมตเป็น UDF ก็ตาม พาร์ติชันที่มี MBR id 0x07 ถูกซ่อนอยู่ในระบบเหล่านั้น ไม่รองรับ UDF ดังนั้นจึงเป็นตัวเลือกที่ดีกว่าเช่น 0x0C หรือ 0x0E
GPT:
รูปแบบพาร์ติชัน GPT ไม่อยู่ในคำถามนี้ แต่มีปัญหาคล้ายกับ MBR ไม่มีพาร์ติชัน GUID (GPT เทียบเท่ากับ MBR id) ที่กำหนดไว้สำหรับ UDF เนื่องจาก Windows XP x64 รองรับ UDF และสามารถจำแนก GPT data partition ได้เฉพาะกับ GUID EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft Basic Data Partition) จึงเป็นทางเลือกเดียวสำหรับ GPT
แหล่งที่มา:
(*) มีข้อยกเว้นหนึ่งข้อ: MBR Ids 0x05, 0x0F และ 0x85 ใช้สำหรับตรวจจับพาร์ติชั่น MBR เพิ่มเติม
(**) คำจำกัดความของการเรียกสองสายเหล่านี้สามารถพบได้ในไฟล์ WinIoCtl.h เนื่องจากมีการประกาศเป็นแมโคร C
(***) ส่วนขยาย BIOS INT 13 ชม. หมายถึงการใช้ LBA แทน CHS