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.
0 Kommentare.