พีซีแบบใหม่ที่ใช้ชิป 64 บิตของ Intel ใช้โหมดบูตเซกเตอร์ได้อย่างไร


12

ฉันรู้ว่าเครื่องรุ่นเก่าเช่น 286, 512 ไบต์แรกที่โหลดจากเซ็กเตอร์แรกของบูตไดรฟ์เป็น 0000: 7C00 ในหน่วยความจำถูกรันในโหมดจริง 16 บิต แต่สถาปัตยกรรม 64 บิตที่ทันสมัยเป็นอย่างไร

แก้ไข: ฉันเดาว่านี่เป็นคำถามที่ผิดเมื่อคิดเกี่ยวกับมัน ผู้เขียนบูตโหลดเดอร์เป็น decider ของคำแนะนำในการประกอบโหมดที่จะใช้ใช่ไหม? ฮาร์ดแวร์ทำสิ่งที่มันบอก ถ้าอย่างนั้นคำถามของฉันควรทำอย่างไรโหมดการโหลดบูตหลักของระบบปฏิบัติการเช่น Windows 7, Mac OS X (ล่าสุด) และ GRUB บนเครื่อง 64 บิตใช้งานอย่างไร

คำตอบ:


12

คอมพิวเตอร์ที่รองรับ x86 ในปัจจุบันทั้งหมด (รวมถึงสถาปัตยกรรม x64 ด้วยเช่นกันทั้งจาก Intel และ AMD แต่ไม่ใช่ Itanium) รันโค้ดบูตเซกเตอร์ในโหมด x86 real modeเหมือนกับ IBM PC ดั้งเดิมเมื่อ 20 กว่าปีที่แล้ว ไม่ใช่โหมดเคอร์เนลเป็นโหมดแบ่งส่วนดั้งเดิมโดยไม่มีการป้องกันหน่วยความจำมัลติทาสก์หรือระดับสิทธิ์ของโค้ด

หากคุณสามารถถือฟลอปปี้ไดรฟ์ได้ให้ใส่ MS-DOS (หรือFreeDOS ) และติดกับคอมพิวเตอร์ของวันนี้มันจะเริ่มทำการบูท

มันเป็นหน้าที่ของรหัสบู๊ตที่จะเปลี่ยนเป็นโหมดป้องกันตั้งค่าการป้องกันหน่วยความจำ ฯลฯ ดังนั้นการเดาของคุณจึงถูกต้องเพียงบางส่วน บูตโหลดเดอร์เริ่มต้นการทำงานเป็นโหมดจริง x86 และเปลี่ยนเป็นโหมดที่ได้รับการป้องกันโหลดและเริ่มต้นใช้งานจริง ๆ แล้วเคอร์เนล OS ในโหมด "เคอร์เนล" (แหวน 0)

สำหรับข้อมูลเพิ่มเติมคุณสามารถเยี่ยมชมบทความ Wikipedia เกี่ยวกับกระบวนการเริ่มต้น Windows NTซึ่งมีรายละเอียดค่อนข้างน้อยในเรื่องนี้


haimg ขอบคุณสำหรับลิงก์และคำชี้แจง @Deesh ขอโทษที่จะไปตอบที่ดีที่สุด
mring

ตอนนี้เป็นเวลาที่จะแก้ไขหรือไม่เช่นนั้นคุณไม่เห็นด้วยกับคำตอบของคุณ :-)
Daniel Beck

13

สถาปัตยกรรม 64 บิตที่ทันสมัยมีอะไรบ้าง

ขึ้นอยู่กับเฟิร์มแวร์ที่อยู่ในเครื่อง 64 บิตที่ทันสมัยพร้อมสถาปัตยกรรม 64 บิตที่ทันสมัย haimgคำตอบของกรณีนี้อาจจะเป็นเมื่อประมาณห้าถึงหกปีก่อนสำหรับโลก x86 แต่ล้าสมัยไปแล้วสำหรับโลก x86 ในปัจจุบัน

เฟิร์มแวร์ PC / AT เก่า

เครื่อง 64- บิตที่ทันสมัยบางเครื่องมีเฟิร์มแวร์สไตล์ PC / AT แบบเก่า ดังที่ระบุไว้ในคำตอบอื่น ๆ พวกเขาโหลดและเรียกใช้โปรแกรม bootstrap จากภาค # 0 ของแผ่นดิสก์ในลักษณะเดียวกับที่ PC / AT ทำ นี่เป็นกระบวนการบูตพีซี / AT แบบเก่า

ใหม่เฟิร์มแวร์ของ EFI

เครื่อง 64 บิตที่ทันสมัยอื่น ๆ มีเฟิร์มแวร์ของ EFI ใหม่ เหล่านี้ไม่ได้โหลดโปรแกรมบูตจากภาค # 0 ของแผ่นดิสก์ที่ทั้งหมด พวกเขาบูตโดยโหลดจัดการการบูต EFI และใช้งานแอพลิเคชันบูต EFI โปรแกรมดังกล่าวจะทำงานในโหมดที่ได้รับการป้องกัน นี่คือกระบวนการบูทสแตรป EFI

เฟิร์มแวร์ของ EFI โดยทั่วไปจะเปลี่ยนเป็นโหมดป้องกันภายในไม่กี่คำแนะนำในการออกจากการรีเซ็ตโปรเซสเซอร์ การสลับไปใช้โหมดที่ได้รับการป้องกันจะดำเนินการตั้งแต่เนิ่นๆในช่วงเริ่มต้นที่เรียกว่า "SEC Phase" ของการเริ่มต้นเฟิร์มแวร์ EFI เทคนิค, 32 บิตและการประมวลผล x86 มากขึ้นไม่ได้เริ่มทำงานในโหมดที่เหมาะสมจริง แต่ในสิ่งที่เป็นที่รู้จักเรียกขานว่าโหมดที่ไม่เป็นจริง (ตัวอธิบายส่วนเริ่มต้นสำหรับการCSลงทะเบียนไม่ได้อธิบายการจับคู่โหมดจริงแบบดั้งเดิมและเป็นสิ่งที่ทำให้ "ไม่จริง")

ดังนั้นจึงอาจกล่าวได้ว่าระบบ EFI เหล่านั้นไม่เคยเข้าสู่โหมดจริงที่เหมาะสมเมื่อทำการ bootstrapping แบบดั้งเดิมไปยัง bootloader ของ EFI (เช่นเมื่อพวกเขาไม่ได้ใช้โมดูลรองรับความเข้ากันได้ ) เนื่องจากพวกเขาเปลี่ยนจากโหมดที่ไม่จริงเป็นโหมดป้องกันโดยตรง และอยู่ในโหมดป้องกันตั้งแต่นั้นมา


ลิงก์ไปยังกระบวนการบูทสแตรปดูเหมือนจะใช้งานไม่ได้ / ตาย ฉันไม่สามารถหาสิ่งทดแทนได้
slm

เป็นของคุณหรือไม่ - jdebp.eu/FGA/pcat-boot-process.html
slm

1
และตอนนี้ฉันรู้ชื่อของคุณดูที่ URL 8-) แล้ว การพยายามสอดแนมไม่สามารถช่วยให้สังเกตได้
slm

ฉันคิดว่าคุณย้ายสิ่งต่าง ๆ จาก ntlworld ถูกต้องไหม?
slm

URL ที่เป็นไปได้สำหรับการเปลี่ยนวันที่ 1 - jdebp.eu/FGA/pcat-boot-process.html My god ppl คัดลอก / วาง A'er ของคุณไปหมด แม้วิกิพีเดียนี้มี A'er นี้ที่ยกมา - en.wikipedia.org/wiki/Talk%3AReal_mode
slm

1

เท่าที่ฉันรู้รหัสการบูตจะทำงานในโหมดเคอร์เนลเสมอ

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

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


1

คู่มือการเขียนโปรแกรมระบบเล่ม 3 ของ Intel ด้วยตนเอง 325384-053US มกราคม 2558:

2.2 โหมดการทำงาน

โปรเซสเซอร์วางอยู่ในโหมดที่อยู่จริงหลังจากเปิดเครื่องหรือรีเซ็ต

เพียงแค่การเตะแผนภาพดีจากคู่มือ:

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

GRUB เริ่มต้นระบบปฏิบัติการ multiboot ในโหมดป้องกัน ข้อมูลจำเพาะมัลติบูต 0.6.96 สถานะเครื่อง :

ต้องตั้งค่า 'CR0' บิต 0 (PE)

ไม่แน่ใจเกี่ยวกับ GRUB และ x86_64


GRUB เริ่มต้นระบบปฏิบัติการที่เป็นไปตามข้อกำหนดของ Multibootในโหมดที่ได้รับการป้องกัน นั่นรวมถึง * BSDs แต่เท่าที่ฉันรู้ Linux ไม่ปฏิบัติตามข้อกำหนดนี้และทำสิ่งที่เป็นของตัวเอง เมื่อทำการบูทระบบปฏิบัติการที่รองรับ Multiboot การกำหนดค่า GRUB จะใช้multibootคีย์เวิร์ด สำหรับลินุกซ์มีความมุ่งมั่นที่linux, linux16และในรุ่น UEFI ของด้วงlinuxefiคำหลักบอกด้วงใช้โปรโตคอลบูตลินุกซ์ที่เฉพาะเจาะจง
telcoM

@telcoM ยุติธรรมเพียงพอ
Ciro Santilli 新疆改造中心法轮功六四事件
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.