Raspberry Pi: Bootvorgang erklärt

Im Gegensatz zu herkömmlichen PCs, welche mittels EFI und GPT bzw. BIOS und MBR gebootet werden, läuft der Bootvorgang des ARM-basierten Mini-PCs “Raspberry Pi” komplett anders ab.

Der Raspberry Pi bzw. die verbaute CPU benötigt mehrere zum Teil proprietäre Software-Komponenten auf einer FAT-Partition, welche sich auf der eingesetzten SD-Karte befindet. Das Linux-System wird dann von einer ext3/ext4-Partition geladen, welche sich ebenfalls auf der SD-Karte befindet.

  • Wenn der Raspberry Pi angeschaltet wird, sind sowohl der SDRAM-Speicher als auch die ARM-CPU deaktiviert. Die GPU-Einheit des SoC ist aktiv und lädt die erste Stufe des proprietären Bootloaders. Diese erste Stufe ist im ROM des SoC gespeichert. Sie greift auf die eingesetzte SD-Karte zu und lädt die zweite Stufe des Bootloaders (bootcode.bin) von der FAT-Partition in den L2-Cache des SoC und führt diese aus.
  • Die zweite Stufe des Bootloaders aktiviert den SDRAM des SoC und lädt die dritte Stufe des Bootloaders (loader.bin) von der SD-Karte in den Arbeitsspeicher. Anschließend wird die dritte Stufe ausgeführt. Mit der dritten Stufe des Bootloaders ist der Bootloader komplett geladen.
  • Die dritte Stufe des Bootloaders lädt die Firmware der GPU (start.elf) in den Arbeitsspeicher. Anschließend wird das Kernel-Image (kernel.img) in den Arbeitsspeicher geladen. Soweit vorhanden werden von der GPU-Firmware (in Insider-Kreisen gerne als “The Blob” bezeichnet) nun die Konfigurationsdateien config.txt und cmdline.txt geladen. config.txt beinhaltet Parameter, wie die GPU die Grundeinstellungen des Systems vorzunehmen hat. cmdline.txt beinhaltet zusätzliche Kernel-Parameter.
  • Die GPU startet die ARM-CPU des SoC und führt einen Sprung zu Offset 0×8000 durch, da an dieser Adresse der Linux-Kernel “beginnt”. Der Linux-Kernel übernimmt die “Kontrolle” und bootet das System vollständig.
Kommentar schreiben

0 Kommentare.

Kommentar schreiben


Hinweis - Du kannst dies benutzenHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>