พื้นที่บนดิสก์หลัง MBR และก่อนที่พาร์ทิชันจุดเริ่มต้น


10

ถ้าฉันใช้รูปแบบการแบ่งพาร์ติชัน MBR และสร้างพาร์ติชันหลักหรือพาร์ติชันเสริมด้วยfdisk(รุ่น 2.20.1) จากนั้นจะเริ่มในเซกเตอร์ 2048 ถ้าฉันจำได้อย่างถูกต้องแสดงว่าเวอร์ชันเก่าของfdiskพาร์ติชันแรกที่เริ่มต้นบนเซกเตอร์ 63 ถ้า MBR ต้องการเท่านั้น 512 ไบต์แล้วเหตุใดพาร์ติชันแรกจึงไม่เริ่มต้นบนเซกเตอร์ 2 สิ่งที่ถูกเก็บไว้ในภาค 2047 เหล่านั้น? ขั้นตอนการบูตโหลดเดอร์?


FYI การจัดตำแหน่ง 1 MiB (ภาค 2048) ได้รับการแนะนำให้รู้จักกับลินุกซ์fdiskในutil-linux-ng-2.17.1/fdisk/fdisk.cฟังก์ชั่นการupdate_sector_offset(void)ปล่อยตัวใน 2010-02-22 Windows Vista เปิดตัวในปี 2549-2554
pts

คำถามและคำตอบที่เกี่ยวข้อง: superuser.com/q/352572/19956 , superuser.com/q/565577/19956
คะแนน

คำตอบ:


16

ช่องว่างเก่า 32KiB ระหว่าง MBR และภาคแรกของระบบไฟล์เรียกว่า DOS Compatible region หรือ MBR gap เพราะ DOS ต้องการให้พาร์ทิชันเริ่มต้นที่ขอบเขตของทรงกระบอก (และแต่ละกระบอกสูบมี 64 ภาคคือ 64 ภาค * 512 ไบต์ / ภาค = 32KiB พื้นที่) .

ป้อนคำอธิบายรูปภาพที่นี่

มรดกด้วง (GRUB1) จะได้ใช้มันในการติดตั้ง GRUB1 1.5 ขั้นตอน bootloader มี: http://www.gnu.org/software/grub/manual/grub.html#BIOS-installation

ลิงก์เพิ่มเติม:

  1. http://www.pixelbeat.org/docs/disk/
  2. /superuser/107235/how-do-boot-sectors-and-multiple-drives-works/108152#108152
  3. http://www.dedoimedo.com/computers/grub.html

1
ตกลงขอบคุณที่อธิบายเรื่องนี้! ดูเหมือนว่า GRUB2 จะใช้พื้นที่เดียวกันระหว่าง MBR และก่อนที่พาร์ติชันจะเป็นรหัสบูต ตามที่grub-install -vฉันติดตั้ง GRUB2 และถ้าฉันดำเนินการdd if=/dev/sda obs=1 ibs=1 skip=512 count=2047 2>/dev/null | strings -n4แล้วมี "กำลังโหลด", "Geom", "อ่าน", "ข้อผิดพลาด" ในพื้นที่นี้และพวกเขาควรเป็นของ GRUB2
Martin

@ Martin Hm การสังเกตที่น่าสนใจ ฉันมีเพียง "^ @" อยู่ที่นั่นด้วง 2 เช่นกัน ดูเหมือนว่าขั้นตอนที่ 2 ของฉันถูกต้องในระบบไฟล์ :)
Boris Burkov

1
@Martin: หากคุณเคยติดตั้ง GRUB 0.99 ไว้ก่อนหน้านี้อาจยังคงอยู่ในพื้นที่นั้นแม้ว่าบูทโหลดเดอร์ปัจจุบันของคุณคือ GRUB 2.x และไม่ได้ใช้งาน
Ben Voigt

6

นี่เป็นการเพิ่มประสิทธิภาพและไม่เกี่ยวข้องกับ Linux เลยเพียงแค่กับฮาร์ดแวร์ ดิสก์ที่ทันสมัย ​​(เรียกว่าดิสก์ "4K") ใช้ฟิสิคัลเซกเตอร์ของ 4096 ไบต์แทน 512 คุณยังสามารถระบุเซกเตอร์ 512 ไบต์เดียว แต่อาจส่งผลกระทบต่อประสิทธิภาพการทำงานอย่างรุนแรงหากพาร์ติชัน (หรือมากกว่า: ระบบไฟล์) ไม่จัดแนวกับ 4K .

เริ่มเซกเตอร์ 64 จะเพียงพอสำหรับข้อกำหนดนี้ ดูเหมือนว่าการเพิ่มขึ้นเป็น 2048 นั้นเป็นการป้องกัน (เช่นการอนุญาตให้ใส่พาร์ติชันสำหรับบูต UEFI ไว้ที่นั่นหากดิสก์ควรถูกแปลงเป็น GPT ในภายหลัง)


โดยการปรับประสิทธิภาพให้ดีที่สุดหมายความว่าหากระบบไฟล์เริ่มต้นที่ตรงกลางของภาค 4K ข้อมูลทั้งหมดในระบบไฟล์นี้ก็จะไม่ได้แนวและนี่ก็หมายความว่าหากมีการเปลี่ยนแปลงแม้แต่หนึ่งไบต์ในไฟล์บนระบบไฟล์ ต้องอ่านและแก้ไขภาค 4K ทางกายภาพสองรายการหรือไม่ หากระบบไฟล์ถูกจัดตำแหน่งแล้วจำเป็นต้องแก้ไขเซ็กเมนต์ 4K หนึ่งเซ็กเมนต์ตราบใดที่ไบต์ทั้งหมดอยู่ในเซกเตอร์กายภาพ 4K เดียวกัน
Martin

2
@Martin ปัญหาคือเคอร์เนลเขียนบล็อก 4K (ขนาดหน้า) ลงในดิสก์เสมอ (เนื่องจากหน้าถูกแคช) ตรงกันข้ามกับภาคส่วนเดียวหน้า 4K สามารถเป็นส่วนหนึ่งของสองส่วน ในกรณีนั้นไม่ใช่ 4K แต่ต้องเขียน 8K และยิ่งแย่ลง: อาจเป็นได้ว่าต้องอ่านหนึ่งบล็อค 4K หรือบนบล็อกก่อน
Hauke ​​Laging
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.