Raspberry Pi: มี BIOS หรือไม่

ราสเบอร์รี่ Pi BIOS

ผู้ใช้บางราย สงสัยว่า Raspberry Pi มี BIOS หรือ UEFIเช่นเดียวกับคอมพิวเตอร์เครื่องอื่นๆ เนื่องจาก UEFI นั้นรองรับบนคอมพิวเตอร์ที่ใช้ Arm ด้วยเช่นกัน เช่นเดียวกับกรณีที่มี SBC นี้เป็นที่นิยมและราคาถูก. แต่ความจริงก็คือพวกราสเบอร์รี่ได้เลือกวิธีอื่นแทน

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

ทำไม Raspberry Pi ถึงไม่ใช้ BIOS/UEFI

ราสเบอร์รี่ Pi 4

ดังที่คุณทราบ BIOS หรือ UEFI เป็นเฟิร์มแวร์ ที่มีอยู่ในคอมพิวเตอร์จำนวนมาก ทั้งเดสก์ท็อป แล็ปท็อป AIO เซิร์ฟเวอร์ เวิร์กสเตชัน ฯลฯ อย่างไรก็ตาม มันไม่ได้อยู่ใน Raspberry Pi แม้ว่าจะเป็น SBC (Single Board Computer) ซึ่งแตกต่างจาก x86 SBC อื่น ๆ ที่ใช้เฟิร์มแวร์นี้สำหรับกระบวนการบูตและตรวจสอบระบบ และไม่ใช่เพราะ Raspberry Pi ใช้ ARM เนื่องจากคอมพิวเตอร์ ARM หลายเครื่องมี BIOS/UEFI ด้วย

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

อย่างไรก็ตาม นี่ไม่ใช่เหตุผลที่จะไม่ใช้ BIOS หรือ UEFI ทั้งหมด อันที่จริง หากเราวิเคราะห์อย่างรอบคอบแล้ว ARM SoC ของ Raspberry Pi ใช้เฟิร์มแวร์ภายในของตัวเอง เพื่อบู๊ต CPU เข้าสู่สถานะที่เหมาะสมและส่วนอื่นๆ ของระบบโดยไม่ต้องใช้ชิป BIOS แยกต่างหาก แต่... แล้วทำไมคุณไม่สามารถเข้าถึงการตั้งค่าไบออสหรือเมนูไบออสได้? ในแง่หนึ่ง เนื่องจากเฟิร์มแวร์นี้มีข้อจำกัดมาก และไม่ซับซ้อนเท่า BIOS/UEFI ดังนั้นเมนูสำหรับกำหนดค่าพารามิเตอร์จึงไร้ความหมาย และอีกประการหนึ่ง เนื่องจากสิ่งที่ได้กล่าวไปก่อนหน้านี้ ทำให้สามารถบู๊ตได้เฉพาะจาก สื่อเก็บข้อมูลเริ่มต้น เช่นเดียวกับการ์ด SD

ด้วยเหตุนี้ผู้พัฒนา Raspberry Pi จึงต้องการใช้เฟิร์มแวร์พื้นฐานนี้สำหรับการเริ่มต้นและบูตจากการ์ด SD มากกว่าการใช้ ชิปรอม ด้วยการติดตั้งเฟิร์มแวร์ที่ซับซ้อนมากขึ้นบน PCB และถ้าคุณดูอุปกรณ์มือถือก็ไม่มี BIOS / UEFI เนื่องจากสามารถบู๊ตได้เฉพาะ Android (หรือระบบปฏิบัติการอื่น) จากหน่วยความจำภายใน

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

อย่างไรก็ตาม ต้องบอกว่าใน Raspberry Pi 3 มีการเพิ่มการสนับสนุนการทดลองสำหรับ บูตจากสื่อ USB ซึ่งจะต้องเปิดใช้งานอย่างชัดเจนและไม่สามารถปิดใช้งานได้ ซึ่งรวมอยู่ในเฟิร์มแวร์แบบฝังตัวของ SoC ของเวอร์ชันใหม่ แต่มีความซับซ้อนกว่าเล็กน้อย ซึ่งอาจเป็นสาเหตุที่ทำให้พวกเขาตัดสินใจเริ่มต้นจากสิ่งง่ายๆ และใช้การบูทจากการ์ดหน่วยความจำ SD เท่านั้น

Raspberry Pi ใช้อะไรแทน

Rasbperry Pi 4 กำลัง

Raspberry Pi ไม่มี BIOS หรือ UEFI อย่างที่เข้าใจกันในโลกของ PC แต่ก็มี a เฟิร์มแวร์แหล่งปิด ใน SoC ดังที่ฉันได้กล่าวไว้ข้างต้น ชิปนี้ออกแบบโดยบริษัท Broadcom ซึ่งจัดหา BCM ให้กับบอร์ด Raspberry Pi Foundation เหล่านี้

ใน SoC (ระบบบนชิป) ประกอบด้วย CPU ARM Cortex-A Series, VideoCore GPU, DSP สำหรับการประมวลผลสัญญาณดิจิตอล, หน่วยความจำ SDRAM ที่ CPU และ GPU ใช้ร่วมกัน และตัวควบคุม เช่น USB เป็นต้น นอกจากนี้ยังมีหน่วยความจำ ROM ซึ่งมีการรวมเฟิร์มแวร์ที่เรากำลังพูดถึงและจำเป็นสำหรับการบู๊ต

ขั้นตอนการเริ่มต้น

ลอส ขั้นตอน ที่เป็นไปตามเฟิร์มแวร์นี้คือ:

  1. เฟิร์มแวร์นี้จะดูแล เริ่ม bootloader ของระบบปฏิบัติการที่อยู่ในการ์ด SD ดังที่คุณทราบ bootloader จะเมานต์พาร์ติชัน FAT32 ของการ์ดหน่วยความจำ SD และไปที่ขั้นตอนการบูตที่สองซึ่งตั้งโปรแกรมไว้ใน SoC และไม่สามารถแก้ไขได้
  2. ในขั้นที่สอง ไฟล์ที่เรียกว่า bootcode.binซึ่งมีการเตรียมและเริ่มต้นเฟิร์มแวร์ GPU ไฟล์นี้สามารถจัดเก็บไว้ในการ์ด SD เท่านั้น ดังนั้นลำดับความสำคัญในการบูตจึงไม่สามารถเปลี่ยนแปลงได้เหมือนใน BIOS/UEFI ทั่วไปของพีซี และจะบูตจากที่นั่นเท่านั้น อย่างไรก็ตาม อย่างที่ฉันพูดไปแล้ว ใน Pi 3 ได้มีการเพิ่มความสามารถในการบูตจาก USB ด้วย
  3. จากนั้นมาถึงขั้นตอนที่สามซึ่งใช้ไฟล์ start.elf ซึ่งเริ่มการทำงานของ CPU และไฟล์ชื่อ fixup.dat ซึ่งใช้สร้างพาร์ติชันที่จำเป็นใน SDRAM เพื่อให้สามารถเริ่มใช้งานได้ โดย CPU และ GPU
  4. สุดท้าย รหัสผู้ใช้จะถูกดำเนินการ ซึ่งโดยปกติจะเป็นไบนารีหรืออิมเมจที่เรียกใช้งานได้ของ เคอร์เนลลินุกซ์เช่น kernel.img หรือจากระบบปฏิบัติการอื่นที่ Raspberry Pi รองรับ และนี่คือวิธีการบูทระบบปฏิบัติการเพื่อให้คุณสามารถใช้งานได้...

อย่างที่คุณได้เห็น มันเป็นกระบวนการง่ายๆ แต่ค่อนข้างแปลกหากเราเปรียบเทียบกับพีซีหรือคอมพิวเตอร์เครื่องอื่น และในกรณีของ Raspberry Pi แทนที่จะเริ่มการทำงานของ CPU เหมือนในกรณีอื่นๆ GPU บูทก่อน. ในความเป็นจริง Broadcomo GPU นี้จะรับผิดชอบในการดำเนินการระบบปฏิบัติการแบบฝังใน SoC ที่ง่ายมาก แต่จำเป็นต่อการทำงาน มันถูกเรียกว่า VCOS (Video Core Operating System) และจะสื่อสารกับ Linux สิ่งนี้หายากมาก แต่ความจริงก็คือ GPU ของ Pi ไม่เพียง แต่รับผิดชอบด้านกราฟิกและการเริ่มต้นเท่านั้น แต่ยังรับผิดชอบด้าน ระบบควบคุมนาฬิกาและเสียง.

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

นี้ ไฟล์ config.txt GPU จะถูกอ่านหลังจากเริ่มต้นเคอร์เนล ARM และมีคำแนะนำสำหรับ SoC เพื่อทราบว่าต้องทำอะไรระหว่างการบูทระบบ ตัวอย่างเช่น เราสามารถแก้ไขหน่วยความจำเฉพาะในนั้น, รีเฟรชหน่วยความจำ, ปิดการเข้าถึงแคช L2, แก้ไขการกำหนดค่า CMA, เปิดหรือปิดไฟ LED ของกล้อง, เปลี่ยนตัวเลือกโหมดวิดีโอ, ตัวแปลงสัญญาณ, ตัวเลือกบางอย่างในการบู๊ต, การโอเวอร์คล็อก ฯลฯ

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

เปลี่ยน Boot Priority บน Raspberry Pi

NOOBS config.txt

เมื่อคุณเปลี่ยนลำดับการบู๊ตหรือลำดับความสำคัญของการบู๊ตบนพีซี ทุกอย่างง่ายมาก คุณเพียงแค่ต้องเข้าสู่ BIOS/UEFI และในแท็บ Boot คุณจะพบพารามิเตอร์ที่คุณสามารถแปรผันในการบู๊ตจากฮาร์ดดิสก์ซึ่งเป็นสื่อออปติคัล , USB , เครือข่าย ฯลฯ แทน, บน Raspberry Pi นั้นไม่ใช่เรื่องง่าย. ตามค่าเริ่มต้น ระบบจะบูตระบบปฏิบัติการจากการ์ดหน่วยความจำ SD ที่ใส่ไว้ใน SBC เสมอ แม้ว่าหลังจากเวอร์ชัน 3 แล้ว หากใส่ทั้งการ์ด SD และแท่ง USB ระบบจะยังคงบูตจาก SD ก่อน ถ้าเอา SD ออกแล้วเหลือแต่ USB ก็จะทำผ่าน USB

แต่คำสั่งนี้สามารถเปลี่ยนแปลงได้ เพื่อที่คุณจะต้อง เริ่มราสเบียนตัวอย่างเช่น และทำดังต่อไปนี้:

  • เปิดการตั้งค่า Raspberry Pi ด้วยคำสั่ง:
Sudo Raspi-Config
  • ไปที่ส่วน "ตัวเลือกขั้นสูง" (หมายเหตุ เมนูเป็นภาษาอังกฤษ)
  • จากนั้น ในส่วนนี้ ให้กด ENTER บนตัวเลือก "ลำดับการบู๊ต"
  • ตอนนี้คุณควรเห็นสามตัวเลือกที่แตกต่างกันให้เลือก:
    • บูตการ์ด SD- ตามค่าเริ่มต้น ตัวเลือกนี้เปิดใช้งานบนอุปกรณ์ Raspberry Pi ของคุณแล้ว และหากคุณเสียบการ์ด SD และ USB พร้อมกัน ระบบจะใช้การ์ด SD เป็นตัวเลือกการบูตเริ่มต้น เว้นแต่คุณจะถอดออก
    • บูต usb: หากคุณต้องการใช้ USB เป็นอุปกรณ์หลักในการบู๊ต คุณสามารถเลือกตัวเลือกนี้ได้ ซึ่งจะทำงานเมื่อคุณเสียบอุปกรณ์ USB เข้ากับ Raspberry Pi มิฉะนั้น คุณไม่ควรใส่การ์ด SD เพื่อบู๊ตระบบ
    • บูตเครือข่าย: ตัวเลือกการบูตนี้มีประโยชน์หากการ์ด Raspberry Pi SD ของคุณไม่ทำงานด้วยเหตุผลบางประการ หรือหากมีปัญหากับระบบปฏิบัติการของคุณ ในกรณีดังกล่าว จะใช้เครื่องมือ Imager เพื่อติดตั้งระบบใหม่ลงในการ์ด SD

เมื่อคุณทำเสร็จแล้ว คุณสามารถ รีบูต pi ราสเบอร์รี่ เพื่อใช้การเปลี่ยนแปลง...

วินิจฉัยปัญหา Raspberry Pi (POST)

สุดท้าย คุณจะรู้ว่าใน BIOS/UEFI มีขั้นตอนที่เรียกว่า POST ซึ่งดำเนินการก่อนที่ระบบปฏิบัติการจะบู๊ต และจะตรวจสอบสถานะของส่วนประกอบต่างๆ หากทุกอย่างเรียบร้อย OS จะเริ่มทำงาน แต่หากตรวจพบปัญหาใดๆ ก็จะหยุดทำงานและแสดงข้อความแสดงข้อผิดพลาดบนหน้าจอหรือส่งเสียงบี๊บเพื่อระบุว่าปัญหาคืออะไร

สิ่งนี้บน Raspberry Pi ไม่มีอยู่เช่นกัน อย่างไรก็ตาม เฟิร์มแวร์ SoC มีวิธีลองตั้งค่าสถานะปัญหาที่อาจเกิดขึ้นเพื่อให้วินิจฉัยได้ง่าย และนั่นคือผ่านไฟ LED ตัวอย่างเช่น สำหรับ Raspberry Pi 4 รหัสแสงที่ LED เปล่งออกมาเพื่อระบุปัญหาคือ:

กะพริบนาน กะพริบสั้น ๆ Status
0 3 ความล้มเหลวทั่วไประหว่างการเริ่มต้น
0 4 ไม่พบ start*.elf
0 7 ไม่พบภาพเคอร์เนล
0 8 SDRAM ล้มเหลว
0 9 SDRAM ไม่เพียงพอ
0 10 อยู่ในสถานะ HALT
2 1 พาร์ติชันไม่ใช่ FAT (ไม่รองรับ)
2 2 ไม่สามารถอ่านพาร์ติชัน
2 3 พาร์ติชันเสริมที่ไม่ใช่ FAT
2 4 แฮชหรือลายเซ็นไม่ตรงกัน
3 1 ข้อผิดพลาด SPI-EEPROM
3 2 ป้องกันการเขียน SPI EEPROM
3 3 ข้อผิดพลาด I2C
4 4 ไม่รองรับประเภทบอร์ด
4 5 ข้อผิดพลาดร้ายแรงของเฟิร์มแวร์
4 6 พิมพ์ผิด
4 7 Type B มิสไฟร์

เป็นคนแรกที่จะแสดงความคิดเห็น

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา