Hardware:dbox2:Bootloader

Aus TuxBoxWIKI
Wechseln zu: Navigation, Suche


Allgemeines

Als Bootloader (auch Ur-Lader genannt) wird allgemein die Software bezeichnet, die eine zum Betrieb an eine Anwendung bzw. ein Betriebssystem übergibt. Ein Prozessor oder Mikrocontroller bzw. jede Programmcode verarbeitende Schaltung erwartet, nachdem Takt (Clock) und Betriebsspannung zur Verfügung stehen, sofort an einer vordefinierten Adresse den ersten Befehl. In der Regel wird der Bootloader daher in ein EEPROM (Electrically Erasable Programmable Read Only Memory/Elektronisch löschbarer und programmierbarer nur lese Speicher) oder einem (eine bestimmte Art von EEPROM) integriert und dieser dann entsprechend an der vom Prozessor erwarteten physikalischen Adresse direkt auf dem Mainboard (Hauptplatine) platziert.

Dieser 1.Stage (first stage/erste Phase) Bootloader wird auch als Firmware im Allgemeinen oder als BIOS (Basic Input Output System/Basis Ein-/Ausgabe System) bezeichnet. Er sorgt im Wesentlichen dafür, dass die auf dem Mainboard vorhandene initialisiert und einem kurzen Systemtest auch POST (Power On Self Test/Einschalt-Selbsttest) genannt unterzogen wird. Dabei kann der Bootloader dann auch z.B. so genannte "Microcodepatches" in die CPU oder in andere Peripherien laden, um bekannte Fehler der Chips (Silicon Bugs/Silizium Fehler) zu umgehen.

Hat der 1.Stage Bootloader die ohne Fehler initialisiert, gibt er die Kontrolle des Systems an den 2.Stage Bootloader (second stage/zweite Phase) ab. Der 2.Stage Bootloader sorgt nun dafür, dass eine beliebige Software, in der Regel ein Betriebssystem, geladen wird. Er ist im Gegensatz zum 1.Stage Bootloader frei wählbar und konfigurierbar. Zwingend ist der Einsatz eines 2.Stage Bootloaders im Übrigen nicht, man kann das auch alles mit einem einzigen Bootloader machen.


Bmon

Der 1.Stage Bootloader der DBox2 wurde durch die Entwickler selbst als "Bmon" bezeichnet (vermutlich "Boot-Monitor"). Durch den Einsatz der verschiedenen Bausteine innerhalb der DBox2, wiederum auch verursacht durch die verschiedenen Hersteller, gibt es mehrere Versionen des Bmon, welche an die spezielle der einzelnen Boxen angepasst ist. Denn wie schon unter "Allgemeines" geschrieben, ist der 1.Stage Bootloader ja u.a. für die Initialisierung der zuständig. Grundsätzlich kann davon ausgegangen werden, dass der Bmon einer Nokia-Box z.B. eine Sagem-Box nicht betriebsbereit initialisieren würde.

Der Bmon der DBox2 macht aber noch einiges mehr als nur die zu initialisieren und diese einem potentiellen 2.Stage Bootloader zur Verfügung zu stellen. Nebenbei kann er die beim Selbsttest zurückgemeldeten Status der Systemkomponenten an der seriellen Schnittstelle ausgeben (Debug-Meldungen) und sogar beim Fehlen des 2.Stage Bootloaders selbst bestimmte Befehle zum Bearbeiten des Systems zur Verfügung stellen.

Der Bmon der DBox2 weist eine Besonderheit auf, die die Box davor schützen soll nicht durch Premiere freigegebene Software auf ihr auszuführen. Bei der Übergabe des Systems an den 2.Stage Bootloader prüft daher der Bmon, ob der 2.Stage Bootloader eine gültige Signatur aufweist. Ist dies nicht der Fall, dann wird die Kontrolle nicht an den 2.Stage Bootloader übergeben.

Zum Debuggen (Fehlerbeseitigen) der Software auf der DBox2 wurde jedoch die Möglichkeit eines Betriebs von nicht signierter Software durch die Entwickler in den Bmon eingebaut. Der Wert der Product-Variable bestimmt dabei, ob sich der Bmon im Debug-Mode befindet oder nicht. Nur im Debug-Mode kann nicht signierte Software wie z.B. der 2.Stage Bootloader des Tuxbox-Projekts geladen werden.


U-Boot/PPCBoot

U-Boot (Universal Bootloader) ist der Nachfolger von PPCBoot (PowerPC Bootloader) und wird zurzeit als 2.Stage Bootloader und damit als Linuxloader durch das Tuxbox-Projekt eingesetzt. Ursprünglich, wie bereits am Namen zu erkennen, unterstütze er vor allem bestimmte Prozessoren des Herstellers Motorola mit dem bekannten PowerPC-Kern. In den neueren Versionen kann er jedoch auf einer ganzen Reihe von unterschiedlichen Prozessorarchitekturen eingesetzt werden.

Zum Debug-Enablen und Flashen werden auch heute noch bestimmte Version des PPCBoot eingesetzt, während in allen aktuellen Images U-Boot zum Einsatz kommt.

Prinzipiell könnte man den Bmon auch komplett durch U-Boot auf der DBox2 ersetzten, dazu müsste man allerdings z.B. auch die Initialisierung der durch den U-Boot erledigen lassen, und das hätte einen massiven Aufwand von Reverse Engineering zur Folge, da der Source (Quellcode) des Bmon nicht frei verfügbar ist.


U-Boot Bootvorgang

U-Boot versucht die Befehle auszuführen, die in der Umgebungsvariable bootcmd enthalten sind. Diese können mit dem Befehl printenv angezeigt werden. Dort werden die Kernelparameter in die Umgebungsvariable bootargs geschrieben, worauf mit

  • fsload
  • protect off 10020000 107fffff
  • bootm

der Kernel gestartet wird.


Links




Kandidat für "Top Artikel"Dieser Artikel ist ein Kandidat für "Top Artikel", stimme mit ab!