ทำไมเราต้องบูตโหลดเดอร์?


28

หลังจาก BIOS หรือสิ่งที่คล้ายกันซึ่งทำหน้าที่เป็นเฟิร์มแวร์เริ่มต้นขึ้นการควบคุมจะถูกส่งผ่านไปยัง bootloader เท่าที่ฉันรู้

เหตุใด BIOS ไม่สามารถโหลดเคอร์เนลระบบปฏิบัติการได้โดยตรง

นอกจากนี้ยังมีคู่มือด้วง says: สั้น ๆ บูตเป็นโปรแกรมซอฟต์แวร์ที่แรกที่ทำงานเมื่อเครื่องคอมพิวเตอร์เริ่มต้น BIOS เป็นโปรแกรมแรกที่ทำงานใช่ไหม


2
วัสดุการอ่านที่เกี่ยวข้อง: superuser.com/questions/395301/why-must-a-computer-have-a-bios
Der Hochstapler

คำตอบ:


27

ไบออสจำเป็นต้องรู้วิธีการโหลดเคอร์เนลและสิ่งนี้จะทำให้ไบออสมีความซับซ้อนมากเกินไป: ลองจินตนาการถึงไบออสที่จำเป็นต้องรู้วิธีการโหลดระบบปฏิบัติการต่าง ๆ มากมายที่มีอยู่วิธีการส่งพารามิเตอร์เคอร์เนลให้พวกมัน ฯลฯ ...

ดังนั้นจึงเริ่มต้นฮาร์ดแวร์และข้ามไปยังตำแหน่งที่รู้จักซึ่งเก็บ bootloader เท่านั้น จากนั้นการควบคุมจะถูกส่งไปยังมัน

จากพื้นฐานของ Unix และอินเทอร์เน็ต HOWTO :

คุณอาจสงสัยว่าทำไม BIOS ไม่โหลดเคอร์เนลโดยตรง - ทำไมกระบวนการสองขั้นตอนกับบูตโหลดเดอร์? ไบออสไม่ได้ฉลาดมาก ในความเป็นจริงมันโง่มากและ Linux ไม่ได้ใช้เลยหลังจากบูตเครื่อง เดิมเขียนขึ้นสำหรับพีซี 8 บิตแบบดั้งเดิมที่มีดิสก์ขนาดเล็กและแท้จริงไม่สามารถเข้าถึงดิสก์เพียงพอที่จะโหลดเคอร์เนลโดยตรง ขั้นตอนบูตโหลดเดอร์ยังช่วยให้คุณเริ่มระบบปฏิบัติการหนึ่งในหลาย ๆ ระบบบนที่ต่าง ๆ บนดิสก์ของคุณในกรณีที่ยูนิกซ์ไม่ดีพอสำหรับคุณ

สำหรับไบออสนั้นเป็นโปรแกรมแรกที่ทำงาน: (จากWikipedia )

ซอฟต์แวร์ BIOS นั้นสร้างขึ้นในพีซีและเป็นรหัสแรกที่เรียกใช้โดยพีซีเมื่อเปิดเครื่อง ('เฟิร์มแวร์สำหรับบูต')

แต่เฟิร์มแวร์เป็นซอฟต์แวร์ ดังนั้นฉันจะถือว่าคู่มือ GRUB อย่างน้อยก็สับสนในส่วนนั้น bootloader สามารถถูกมองว่าเป็นชิ้นส่วนแรกที่ผู้ใช้กำหนดเองของซอฟต์แวร์ที่ทำงานบนคอมพิวเตอร์


10

เหตุผลก็คือความยืดหยุ่น คุณอาจมีระบบปฏิบัติการที่แตกต่างกันหลายตัวในฮาร์ดดิสก์ตัวเดียว (Windows, Linux ฯลฯ ) หรือคุณอาจมีระบบปฏิบัติการรุ่นเดียวกันหลายรุ่น ดังนั้นจึงเป็นการดีกว่าที่จะมีรหัสของระบบปฏิบัติการที่รู้ว่าแต่ละระบบปฏิบัติการที่ติดตั้งบนฮาร์ดดิสก์อยู่ได้อย่างไรวิธีโหลดแต่ละระบบซึ่งโหลดหนึ่งตัวไม่ว่าจะแสดงเมนูหรือไม่ ฯลฯ นี่คือ bootloader

BIOS โหลดและเรียกใช้งานโค้ดที่อยู่ในตำแหน่งที่กำหนดไว้ล่วงหน้าบนฮาร์ดดิสก์ (ภาคแรก) เราเรียกรหัสนี้ว่า bootloader แต่โดยทางเทคนิคแล้วหากคุณติดตั้ง Windows ไว้ในฮาร์ดดิสก์ที่ว่างเปล่ารหัสนี้จะถูกติดตั้งโดย Windows ด้วยดังนั้นคุณจึงสามารถเรียกมันเป็นส่วนหนึ่งของ Windows ได้โดยเฉพาะอย่างยิ่งเนื่องจาก Windows bootloader ไม่สามารถโหลดระบบปฏิบัติการอื่น ๆ

เกี่ยวกับโปรแกรมซอฟต์แวร์แรกที่ทำงานเมื่อคอมพิวเตอร์เริ่มทำงาน: ความแตกต่างของเฟิร์มแวร์ / ซอฟต์แวร์นั้นค่อนข้างบางและกระบวนการเริ่มต้นของคอมพิวเตอร์สมัยใหม่นั้นซับซ้อนมาก ไบออสในตัวมันเองไม่ใช่โปรแกรมเสาหิน แต่มีหลายขั้นตอนที่แตกต่างกันถูกล่ามโซ่ไว้ด้วยกัน อย่างไรก็ตาม bootloader เป็นรหัสที่ผู้ใช้สามารถเปลี่ยนได้ตัวแรกที่รัน นี่เป็นรหัสชิ้นแรกที่ผู้ใช้สามารถสร้างความเสียหายลบติดไวรัส ฯลฯ ดังนั้นในทางเทคนิคแล้ว BIOS เป็นซอฟต์แวร์ตัวแรกที่รัน bootloader เป็นสิ่งแรกที่ผู้ใช้คอมพิวเตอร์ไม่ต้องการบูต เพื่อตรวจสอบว่ามันใช้ได้หรือไม่


1
จากประสบการณ์ผู้ใช้สามารถทำลาย BIOS ได้อย่างแน่นอน
OrangeDog

2

เหตุใด BIOS ไม่สามารถโหลดเคอร์เนลระบบปฏิบัติการได้โดยตรง

สามเหตุผล:

  • ไบออสบนแพลตฟอร์มพีซีดั้งเดิมเมื่อเปิดตัวในปี 2524 นั้นหมายถึงการทำงานในบทบาทเดียวกับในระบบปฏิบัติการ CP / M ซึ่งก็คือเลเยอร์นามธรรมที่บางสำหรับอุปกรณ์เพียงไม่กี่ตัวและ bootloader ดิสก์อย่างง่าย CP / M มีอีกชั้นหนึ่งเรียกว่า "BDOS" ซึ่งจัดการกับระบบไฟล์ DOS มีความคล้ายคลึงกับ CP / M ในหลาย ๆ ด้านเนื่องจากเป็นระบบปฏิบัติการในสมัยนั้นและมีโครงสร้างคล้ายกัน ไบออสมีวัตถุประสงค์เพื่อจัดการกับลักษณะเฉพาะของฮาร์ดแวร์ของแพลตฟอร์มซึ่งเป็นบทบาทที่ไดรเวอร์ในระบบปฏิบัติการได้รับมา

  • แนวคิดของระบบไฟล์ที่แยกจากระบบปฏิบัติการยังไม่เกิดขึ้นจริง ๆ

  • ในเวลานี้ RAM และ ROM มีราคาแพงและหายาก IBM 5150 PC ดั้งเดิมสามารถรับได้ด้วย RAM ขนาดเล็กถึง 16K ( อ้างอิง ) ขนาด ROM ของระบบนี้คือ 48K และรวมล่ามพื้นฐาน ในเวลานั้นไม่มีระบบไฟล์มาตรฐานเช่นกัน

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

ฉันไม่แน่ใจเกี่ยวกับความสามารถของ UEFI - อาจมีความสามารถในการบูตจริงที่ Windows ไม่ได้ใช้ด้วยเหตุผลใดก็ตาม (Windows ยืนยันว่าใช้ตัวจัดการการบูตของตัวเองเมื่อคุณติดตั้ง) เฟิร์มแวร์ที่ไม่ใช่ BIOS อื่น ๆ เช่น U-Boot และผู้ที่อยู่ในโทรศัพท์และเราเตอร์จำนวนมากทำการโหลดและเรียกใช้เมล็ดโดยตรง ยังไม่มีเหตุผลทางเทคนิคสำหรับมันตั้งแต่เมื่อ BIOSes เริ่มมีพื้นที่ใน ROM เพื่อทำสิ่งต่าง ๆ เพิ่มเติม

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