Bootprozess: Unterschied zwischen den Versionen

2.665 Bytes hinzugefügt ,  11. Juni 2013
keine Bearbeitungszusammenfassung
(wird morgen fortgesetzt)
 
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:


== Die Schritte beim Starten ==
== Die Schritte beim Starten ==
Im folgenden werden die einzelnen Schritte, die beim Booten des Gerätes durchlaufen werden genauer erklärt.
Im folgenden werden die einzelnen Schritte, die beim Booten des Gerätes durchlaufen werden genauer erklärt.<ref>http://www.mrmad.de/der-android-boot-prozess-0904</ref><ref>http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-de-4/s1-boot-init-shutdown-process.html</ref><ref>http://bootloader.wikidot.com/linux:boot:android</ref>
{{Unvollständig}}
{{Unvollständig}}
<!--http://www.mrmad.de/der-android-boot-prozess-0904-->
 
=== Einschalten ===
Beim Einschalten, also dem betätigen des Powerknopfes, ist die CPU noch nicht initialisiert. Der einzige verfügbare Speicher ist der interne RAM. Sobald die Stromversorgung über den Akku stabil ist, wird der [[Boot ROM Code]] ausgeführt, dessen Aufgabe es im ersten Schritt ist, anhand eines Systemregisters den Speicherort des Bootloaders zu finden. Sobald der Ort des Bootloaders bekannt ist, wird dieser in den RAM geladen und, sobald dies abgeschlossen ist, die Systemkontrolle vom Boot ROM Code an den Bootloader übergeben.
 
=== Der Bootloader ===
Der [[Bootloader]] ist ein vom Kernel getrenntes Programm, welches zur Initialisierung von Speicher und dem Laden des Kernels in den RAM dient. Vereinfacht werden dabei folgende Schritte durchlaufen:
* Initialisieren von externem RAM
* Laden des Main Bootloaders in den externen RAM
* Ausführen des Hauptprogramms des Bootloaders, zum Laden von beispielsweise weiteren Speichereinheiten, Netzwerkunterstützung oder dem Modem. Auch low level memory protection ([[Security Check]]) und weitere Sicherheitsoptionen werden in diesem Schritt geladen.
* Nachdem einige Bootparamter in den Speicher geschrieben wurden, sucht der Bootloader nach einem Linux Kernel vom eingestellten Boomedium und lädt diesen in den RAM.
* Sind alle Aufgaben des Bootloaders abgearbeitet, übergibt dieser die Systemverantwortng an den Kernel.
 
=== Der Kernel ==
Der Linux [[Kernel]] hat beim Android-Startprozess die selben Aufgaben wie bei einem normalen Desktop-PC. Neben der Initialisierung von Controllern, Caches und Speicherrestriktionen, ist es dem Kernel nun auch möglich, virtuellen Speicher zu verwalten und Benutzerprozesse zu starten.<ref>http://en.wikipedia.org/wiki/User_space</ref> Im Anschluss zu den Initialisierungen sucht der Kernel nach dem init Prozess und führt diesen als ersten user space Prozess aus.
 
=== Der Init Prozess ===
Der Init Prozess ist der erste Prozess, von dem aus alle anderen Prozesse als "Tochterprozess" gestartet werden. Der Init Prozess wird in erster Linie nach einer Datei namens init.rc suchen, welche im [[AOSP]] unter ''system/core/rootdir'' zu finden ist. Diese Datei beschreibt die Services und andere Parameter des Systems. Nachdem die Datei geladen wurde,w ird diese interpretiert und die darin befindlichen Aktionen ausgeführt (zum Beispiel Starten von Systemprozessen).
 
<!--http://www.androidenea.com/2009/06/android-boot-process-from-power-on.html-->
 
== Einzelnachweis ==
<references />
11.008

Bearbeitungen