ตำแหน่งอื่นสำหรับตารางรายการพาร์ติชัน GPT


0

ส่วนหัว GPT (โดยปกติอยู่ใน LBA 1) มีPartitionEntryLBAฟิลด์ (ดู 5.3.2 GPT Header ในข้อมูลจำเพาะ) มีภาษาในการอ้างอิงต่างๆ (เช่นรายการ wikipedia GPT) ที่อธิบายฟิลด์นั้นว่าควรชี้ไปที่ LBA 2

ข้อมูลจำเพาะระบุว่า "GPT รายการพาร์ติชันหลักจะต้องอยู่หลังส่วนหัว GPT หลักและสิ้นสุดก่อน LBA ที่ใช้งานได้ครั้งแรก"

ในบริบทนั้นดูเหมือนว่าจะมีห้องเลื้อยที่เกี่ยวข้องกับ "หลัง" ไม่ได้แปลว่าทันทีหลังจากนั้น - รายการพาร์ติชั่นแรกอาจเป็น LBA จำนวนหนึ่งหลังส่วนหัวและยังคงเป็นไปตามคำแนะนำนั้นในข้อมูลจำเพาะ

ฉันใช้ตัวประมวลผลแบบฝังที่ค้นหาตารางเวกเตอร์ขนาด 4k ที่ส่วนที่สองของการ์ดเก็บข้อมูล (เช่น SD) ดังนั้นฉันไม่สามารถใส่รายการพาร์ติชัน GPT ได้ ดังนั้นฉันต้องการเขียนรายการพาร์ติชัน GPT หลังจากตาราง (5k ไบต์ชดเชยสมมติว่าภาค 512 ไบต์) ฉันคิดว่ามันสมเหตุสมผล แต่ยังไม่ได้ดูที่เครื่องมือการแบ่งพาร์ติชัน GPT มาตรฐานใด ๆ (เช่นการแยกส่วนบน linux) เพื่อดูว่าอาจสนับสนุนหรือไม่ ไม่ว่าบูตโหลดเดอร์มาตรฐาน (เช่น u-boot) จะสามารถค้นหาตารางรายการพาร์ติชันในตำแหน่งดังกล่าวได้หรือไม่

ดังนั้นฉันจึงสนใจที่จะได้ยินเกี่ยวกับประสบการณ์เชิงปฏิบัติกับตำแหน่งตารางพาร์ติชัน GPT ที่ผิดปรกติ (เช่นไม่ใช่ LBA 2 สำหรับสำเนาหลักของตาราง) พร้อมเครื่องมือแบ่งพาร์ติชันและบูตโหลดเดอร์ การตั้งค่าไปยัง bsd / linux แต่ฉันสนใจที่จะได้ยินเกี่ยวกับสภาพแวดล้อมอื่น ๆ เช่นกัน (แม้แต่เกร็ดเล็กเกร็ดน้อยเกี่ยวกับระบบปฏิบัติการเชิงพาณิชย์บางอย่าง)

นั่นเป็นบิตของคำถามปลายเปิด Worded ค่อนข้างเจาะจงมากกว่านี้มีกรณีความล้มเหลวใด ๆ ที่รู้จักกับตำแหน่งตารางพาร์ติชัน GPT ผิดปกติและเครื่องมือแบ่งพาร์ติชันที่มีอยู่และ / หรือบูตโหลดเดอร์หรือไม่?

คุณจะได้รับรายละเอียด UEFI ที่นี่: http://www.uefi.org/specifications ฉันกำลังดูรุ่นล่าสุด (แก้ไข 2.4, errata C)

ฉันยังไม่มีสมาชิกใน UEFI ( http://www.uefi.org/join ) ดังนั้นฉันจึงไม่สามารถเข้าถึงฟอรัมได้ที่ ( http://www.uefi.org/FWOSForum )

ps ดูเหมือนว่าจะมีข้อกำหนดที่เข้มงวดยิ่งขึ้น (?) ที่ส่วนหัว GPT หลักอยู่ที่ LBA 1 แม้ว่าจะมีStartingLBAเขตข้อมูลใน PMBR (ที่ LBA 0) ข้อมูลจำเพาะไม่เฉพาะสะกดออกว่าStartingLBAข้อมูลควรมี LBA 1 แต่ทำไมรำคาญมีสนามถ้ามันต้องมีอย่าง LBA 1? ทำไมไม่อนุญาตให้ส่วนหัว GPT อยู่ที่ LBA 10 หากสถานการณ์เรียกใช้หรือไม่ สิ่งนี้ไม่จำเป็นในกรณีการใช้งานปัจจุบันของฉันและคำถามมีความว่องไวในฟอรัมนี้


ฉันคิดว่าฉันอาจใช้โปรเซสเซอร์ที่คล้ายกับของคุณ ฉันสามารถแก้ไข U-Boot ให้เป็น 'ถูกต้อง' ใช้พาร์ทิชันรายการชดเชยเพื่อออกจากภูมิภาคท ฉันไม่เคยเห็นเครื่องมือใด ๆ ที่สนับสนุนการใช้ฟิลด์นี้เป็นค่าเริ่มต้นซึ่งเป็นความเจ็บปวด แต่ก็ป้องกันไม่ให้ผู้ใช้ถูกกัดโดยเครื่องมืออื่น ๆ ที่ไม่สนับสนุน
oscode

คำตอบ:


0

ฉันสาบานได้เลยว่าฉันเห็นบางอย่างเช่นนี้ในอิมเมจ ISO แบบไฮบริด (การเรียงลำดับที่ใช้สำหรับลีนุกซ์ลีนุกซ์เพื่อให้สามารถเขียนลงใน CD-R หรือเขียนลงใน USB แฟลชไดรฟ์โดยไม่ต้องทำการโพสต์); อย่างไรก็ตามฉันเพิ่งตรวจสอบบางอย่างและพวกเขาดูเหมือนจะไม่ทำเช่นนี้ บางทีฉันอาจจำไม่ถูกต้องหรือบางทีฉันก็ไม่ได้ตรวจสอบสิ่งที่ถูกต้อง ฉันไม่เห็นอะไรเลยในisohybridหน้า man page - แต่ฉันไม่แน่ใจว่านี่เป็นสิ่งที่ใช้บ่อยที่สุดในการสร้างภาพเหล่านี้ ถึงกระนั้นคุณอาจต้องการติดตามลูกค้าเป้าหมายนี้ยิ่งกว่าที่ฉันทำ ....

FWIW ฉันเป็นผู้เขียน GPT fdisk เป็นเวลานานแล้วที่ฉันต้องแตะรหัสที่เกี่ยวข้อง แต่การตรวจสอบอย่างรวดเร็วแสดงให้เห็นว่า GPT fdisk ควรอ่านดิสก์ที่ตารางพาร์ติชันหลักไม่ได้เริ่มต้นที่ LBA 2 อย่างไรก็ตาม GPT fdisk ไม่สนับสนุนการเปลี่ยนตำแหน่งนี้และฉันไม่สามารถสัญญาว่าจะบันทึกตารางกลับไปที่ตำแหน่งเดิมแม้ว่าจะสามารถอ่านดิสก์ดังกล่าวได้สำเร็จ คุณอาจแฮ็คมันเพื่อเริ่มตารางนั้นที่อื่นเพื่อการทดลอง ในความเป็นจริงฉันเพิ่งลองดู แต่มีหลาย ๆ จุดในโค้ดที่ใช้ค่าแบบ "1" หรือ "2" เพื่อเข้ารหัสค่า LBA และฉันไม่พบพวกมันทั้งหมดในตอนแรก ความพยายามดังนั้นฉันสิ้นสุดการเขียนหัวข้อในกลางตารางพาร์ทิชันซึ่งแน่นอนไม่สวย หากคุณต้องการลองดูที่gpt.ccไฟล์ เริ่มต้นด้วยการค้นหาตำแหน่งpartitionEntriesLBAและการfirstUsableLBAตั้งค่า - แต่ค่าคงที่ที่เกี่ยวข้องบางอย่างอยู่ในการเรียกใช้ฟังก์ชันด้วย

สำหรับที่ตั้งของส่วนหัว GPT หลักฉันสงสัยว่าคุณจะเปลี่ยนมันได้ไหม MBR ที่มีการป้องกันไม่ได้เป็นส่วนหนึ่งของโครงสร้างข้อมูล GPT จริงๆ โดยมีวัตถุประสงค์คือเพื่อระบุดิสก์เป็นดิสก์ GPT และเพื่อป้องกันไม่ให้เครื่องมือ GPT ที่ไม่ได้ทำการแมปกับดิสก์ไม่ใช่เพื่อระบุตำแหน่งที่โครงสร้างข้อมูล GPT เริ่มต้น StartingLBAฟิลด์มีอยู่เพราะมันเป็นส่วนหนึ่งของโครงสร้างข้อมูล MBR ไม่ได้เพราะ GPT ใช้มันเพื่ออะไร ฉันคิดว่าเป็นไปได้ว่าเครื่องมือบางอย่างอาจใช้จุดเริ่มต้นของพาร์ติชันป้องกัน MBR เป็นตัวชี้ไปยังส่วนหัวหลัก แต่ฉันสงสัยว่าส่วนใหญ่จะทำเช่นนั้น GPT fdisk ไม่แน่นอน; มันฮาร์ดโค้ด LBA 1 เป็นตำแหน่งของส่วนหัวหลัก

หากคุณมีคำถามเพิ่มเติมเกี่ยวกับเรื่องนี้คุณอาจต้องการโพสต์ในรายการส่งเมล edk2-devel นักพัฒนา EFI จำนวนมากออกไปเที่ยวและมีความเป็นไปได้ที่พวกเขาบางคนรู้ว่าสิ่งที่คุณพยายามทำหรือรู้วิธีอื่นในการบรรลุเป้าหมายของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.