in , ,

Android Boot – wie dein Handy startet!

Habt ihr Euch auch schon mal gefragt, was eigentlich passiert, wenn ihr den Powerknopf drückt und das Handy aufstartet? Ich habe mir erst Gedanken darüber gemacht, als mich jemand danach gefragt hat. Ich habe nach Informationen gesucht und bin fündig geworden. Diese Infos habe ich bei Enea Android Blog gefunden und sie für Euch übersetzt. Zuerst aber ein kleiner Überblick über den Boot-Prozess.

Man glaubt es kaum, aber es sind tatsächlich sieben Schritte notwendig, damit unser kleiner Androide zum Leben erweckt werden kann. Zunächst erhält die CPU (Central Processing Unit; englisch für Hauptprozessor) beim Drücken des Powerknopfs Strom vom Akku. Eine stabile Stromversorgung führt dazu, dass der Boot ROM Code ausgeführt wird. Der Boot ROM Code selbst lädt dann den primären Bootloader in das interne RAM. Mit dem Bootloader wird der Kernel ins interne RAM geladen, welcher seinerseits den Arbeitsspeicher und die Caches vorbereitet. Ist das geschafft, folgt der init-Prozess (Initialprozess). Jetzt wird die Zygote gestartet, ein vorbereitender Prozess, der später dabei hilft Apps schneller zu starten. Die Zygote wiederum initialisiert die DalvikVM (siehe Android OS [Link einfügen]). Schliesslich folgt der Systemserver, der alle Android-Dienste startet. „Boot vollständig“ wird nun ausgesendet. Das Handy läuft. Das alles geht ab, während ihr die mehr oder weniger lustige Bootanimation seht.

In den nächsten Abschnitten werden die einzelnen Schritte etwas genauer dargestellt.

Power an

Beim Drücken des Powerknopfes ist die CPU in einem Zustand, wo noch keine Initialisierungen stattgefunden haben. Die internen Uhren sind noch nicht erstellt und der einzig verfügbare Speicher ist das interne RAM. Ist die Stromversorgung über den Akku stabil, wird der Boot ROM Code geladen. Das ist ein kleiner Schnipsel Code, der fest in der CPU ASIC (Application Specific Integrated Circuit; also eine anwendungsspezifische integrierte Schaltung) verdrahtet ist.

Der Boot ROM Code wird nun die Boot-Medien aufspüren mittels eines Systemregisters. Dies dient dem Zweck, die erste Phase des Boots zu finden. Ist die Boot-Mediensequenz etabliert, versucht das Boot ROM versuchen, die primären Bootloader in den internen Arbeitsspeicher zu laden. Ist der Bootloader ins RAM geladen, macht der Boot ROM Code einen Sprung und die Ausführung wird im Bootloader fortgesetzt.

Bootloader

Der Bootloader ist ein spezielles Programm, das vom Kernel getrennt ist. Es wird benötigt, um die initialen externen Arbeitsspeicher aufzusetzen und den Kernel ins RAM zu laden. Ist das externe RAM verfügbar und das System soweit bereit, wird die erste Phase des Bootloaders den Hauptbootloader laden und im externen RAM platzieren.

Mit der zweiten Phase des Bootloaders wird das erste Hauptprogramm gestartet. Dieses kann Code enthalten, um das Dateisystem, zusätzlichen Speicher, Netzwerkunterstützung und andere Dinge aufzusetzen. Zusätzlich wird noch Code geladen für die Modem CPU.

Ist der Bootloader damit fertig, wird er den Kernel suchen, um ihn zu starten. Dazu lädt er ihn ins RAM. Zugleich werden auch einige Bootparameter ins RAM geladen, die der Kernel lesen wird, wenn er aufstartet. Durch den Sprung des Bootloaders am Ende dieser Phase, übernimmt der Kernel Systemverantwortung.

Der Kernel

Der Kernel selbst bereitet alles vor, was das System benötigt, um einwandfrei zu laufen. Dazu zählen auch die Speichermanagement-Einheiten und Caches. Jetzt ist das System befähigt, virtuelle Speicher zu verwenden und die User Space Prozesse zu starten. Der Kernel sucht nun im Root-Dateisystem nach dem init-Prozess und ihn als den ersten User Space Prozess starten.

Der init-Prozess

Der init-Prozess ist die Mutter aller Systemprozesse. Jeder andere Prozess im System wird aus diesem Prozess oder aus einem seiner Abkömmlinge heraus gestartet. Der init-Prozess sucht dann nach der init.rc-Datei, ein Script, dass die Systemdienste, das Dateisystem und andere Parameter beschreibt, die erstellt werden müssen. Der init-Prozess liest das init-Script und startet die Systemdienstprozesse.

Zygote und DalvikVM

Die Zygote ist – wie eingangs erwähnt – ein vorbereitender Prozess, der später dabei hilft Apps schneller zu starten. Diese wird durch den init-Prozess geladen und beginnt damit, Code auszuführen und die DalvikVM zu starten.

Der System-Server

Der System-Server ist die erste Java-Komponente, die im System laufen wird. Er startet alle Androiddienste wie den Telefonie-Manager und Bluetooth.

Boot vollendet

Ist der Systemserver am Laufen und der Systemboot vollendet, wird eine Standardnachricht ausgesendet. Diese heisst ACTION_BOOT_COMPLETED. Jetzt ist das Handy zur Nutzung bereit. Der ganze Bootprozess dauert etwas über eine Minute bis zum Lockscreen. Danach braucht es weitere 20 bis 30 Sekunden bis die Medien gescannt und alle Widgets geladen sind.

Quelle: http://www.androidenea.com/2009/06/android-boot-process-from-power-on.html

 

Geschrieben von Gary Madeo

Gary Madeo

Bloggt seit Jahren mit vielseitigen Interessen, kümmert sich um administrative und redaktionelle Inhalte. Sachlich und nüchtern, oder auch persönlich und polemisch – auf jeden Fall aber immer voll bei der Sache.

"Pleiten, Pech und Pannen" beim Galaxy S3 Android 4.3 Update: Auslieferung eingestellt

Wie funktioniert eigentlich Android?