Raspberry Pi บูตอย่างไร


57

ฉันมีมินิคอมพิวเตอร์ราสเบอร์รี่และฉันสงสัยว่าสิ่งนั้นจะทำให้กระบวนการบูตทั้งหมดได้อย่างไร ฉันสามารถรวบรวมเคอร์เนลของตัวเองและเริ่มต้น ramdisk ด้วยสคริปต์ของตัวเองและสร้างระบบลินุกซ์ขั้นต่ำของตัวเองบนพีซี แต่สำหรับการที่ฉันต้องใช้ bootloader Raspberry ดูเหมือนจะไม่รองรับ bootloaders เลย

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

แต่ฉันจะบูตเคอร์เนลของฉันเองได้อย่างไรด้วยการปรับแต่งของตัวเองที่ฉันรวบรวมเอง? ฉันควรจะคัดลอกเคอร์เนลอิมเมจ / initrd (ram disk) เพื่อให้ raspberry ค้นหาและบูตจากมัน ฉันกำลังมองหาเอกสารทางเทคนิคที่มีรายละเอียดมากซึ่งอธิบายถึงกระบวนการบูตบนราสเบอร์รี่หรือคำอธิบายบางอย่างของเรื่องนี้


1
มีความเป็นไปได้ที่ซ้ำกันของเกิดอะไรขึ้นในระหว่างกระบวนการบู๊ต
asalamon74

คำตอบ:


59

จากนี้โพสต์ฟอรั่มราสเบอร์รี่ Pi [แก้ไขเพื่อสะท้อนให้เห็นloader.binว่าเป็นยุคสมัย] :

  1. เมื่อ Raspberry Pi เปิดใช้งานครั้งแรกแกน ARM จะปิดและแกน GPU เปิดอยู่ ณ จุดนี้ SDRAM ถูกปิดใช้งาน
  2. GPU เริ่มทำงาน bootloader ขั้นแรกซึ่งเก็บไว้ใน ROM บน SoC bootloader ขั้นตอนแรกอ่านการ์ด SD และโหลด bootloader ขั้นที่สอง ( bootcode.bin) ลงในแคช L2 และเรียกใช้
  3. bootcode.binเปิดใช้งาน SDRAM และอ่าน bootloader ขั้นตอนที่สาม (loader.bin) จากการ์ด SD ลงใน RAM และเรียกใช้ [รุ่นที่ใหม่กว่านี้ไม่ใช้ bootloader ขั้นที่สาม ]
  4. [ถ้ามี] loader.binอ่านเฟิร์มแวร์ของ GPU ( start.elf)
  5. start.elfอ่านconfig.txt, cmdline.txtและkernel.img

loader.binไม่ได้ทำอะไรมาก มันสามารถจัดการกับ.elfไฟล์และจำเป็นต้องโหลดstart.elfที่ด้านบนของหน่วยความจำ (ARM ใช้ SDRAM จากที่อยู่ศูนย์) มีแผนที่จะเพิ่มการรองรับการโหลดเอลฟ์bootcode.binซึ่งจะทำให้loader.binไม่จำเป็น แต่มันมีความสำคัญต่ำ (ฉันเดาว่ามันอาจช่วยคุณประหยัด 100ms เมื่อบูต) [การเปลี่ยนแปลงนี้เกิดขึ้นตั้งแต่ ]

ต่อไปนี้เป็นแหล่งข้อมูลที่อาจเป็นประโยชน์:


2
เนื้อหาของไฟล์ bin เหล่านี้เป็นกรรมสิทธิ์ของซอฟต์แวร์ทั้งหมดหรือไม่
Petr

3
@ Petr นี่คือ Github สำหรับเฟิร์มแวร์ Raspberry Pi ฉันจะแก้ไขมันเป็นคำตอบของฉัน
syb0rg

1
ในคำถามที่พบบ่อยของ Raspberry Piมันบอกว่า "คุณต้องบูตจาก SD แต่ USB HD สามารถ" เข้าครอบครอง "หลังจากการบู๊ตครั้งแรกคุณไม่สามารถบู๊ตได้หากไม่มีการ์ด SD"
syb0rg

1
การแบ่งพาร์ติชันนั้นซึ่งถูกอ่านก่อนพาร์ติชันใด ๆ ที่มีแฟล็ก B หรือต้องเป็นพาร์ติชันแรก ถ้าฉันทำมันมีขนาดใหญ่เกินไปและฉันต้องการที่จะสร้างอีกหนึ่งที่ส่วนท้ายของการ์ด SD ซึ่งจะมีขนาดเล็กลง
Petr

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