Ladevorgang des Android-Geräts (Vorbereitung des Flashens)

Der standardmäßige Ladeprozess für Android-Betriebssysteme sieht so aus (aus Dokumenten):

  1. BootROM (startet mit 'on'-Taste)
  2. Bootloader
  3. Kernel
  4. init/mounten
  5. Zygote+Dalvik VM
  6. Systemdienste

Aber ich habe Schwierigkeiten, den Ladevorgang beim Vorbereiten des Flashens zu verstehen (wie ich es beim Flashen von Galaxy Tab und MTK-Handy-ROMs getroffen habe).

Könnten Sie mir helfen, eine Position für diese Werkzeuge in diesem Diagramm zu finden:

1) Der Code, der das Logo anzeigt (oder die Akkuladung in Prozent, wenn das Netzkabel eingeschaltet ist) und auf USB reagiert (wenn das Telefon ausgeschaltet ist, aber der Akku eingelegt ist)? Wo ist es ? Es sollte vor dem Boot-ROM stehen - aber wie nennt man es?

2) Wer ist für den Griff "Ein + Leiser" verantwortlich, um zum Menü "Bootload" zu wechseln? BootRom oder Bootloader?

3) "Preloader", wie ist es dort positioniert? (Ich bin mir nicht sicher, ob ich verstehe, was Preloader ist).

4) Twirp? Fastboot ? odin3 ersetzen sie Dalvik oder überfahren sie es? twrp selbst sieht aus wie ein vollständiges Betriebssystem.

Antworten (1)

Der Boot-Prozess von Android-Geräten bis zur Kernel-Stufe ist sehr herstellerspezifisch, gerätespezifisch und enthält größtenteils geschlossenen Quellcode. Möglicherweise sehen Sie deutliche Abweichungen der verwendeten Terminologien und Unterschiede in ihrer Implementierung. Hier gebe ich ein einfaches Verständnis.

  1. Wenn das Ladegerät eingesteckt wird, startet das Gerät sehr ähnlich wie beim Drücken des Netzschalters, außer dass ein sehr begrenztes Betriebssystem geladen wird.

    Das Gerät bootet normal bis zur initStufe (angegeben unter Punkt 4). init, anstatt Dienste von /systemund /vendorPartitionen zu starten, startet einen Prozess: /sbin/charger*der kein Teil von AOSP ist. Charger Binary ist normalerweise Closed Source und variiert für verschiedene Geräte. Es kann einige Bilder / Animationen laden, die auf bestimmten Partitionen für diesen Zweck gespeichert sind.

    Einige OEMs erlauben auch das Aktivieren / Deaktivieren, off-mode-chargeum fastbootdas Verhalten zu steuern, dh ob das Gerät eingeschaltet werden soll, wenn es an die Stromversorgung angeschlossen ist oder nicht. Aber es ist auch keine Standardfunktion und variiert je nach Gerät.

  2. fastbootBootloader (SBL / ABOOT oder Äquivalente) verarbeiten die Power- und Volume-Tasten, die gedrückt werden, um den Download-Modus (Notfall), den SPL-Modus, den Modus usw. und die Wiederherstellung oder den normalen Kernel zu starten .
  3. Preloader ist eine Bootloader-Stufe (SBL / SPL) vor dem endgültigen Bootloader (UBOOT / LK / ABOOT)
  4. Hier ist die Bootkette:
    • BootROM
    • Primärer/Sekundärer BooLoader oder PreLoader
    • odinEndgültiger Bootloader (der / bereitstellt fastboot)
    • Kernel / Wiederherstellung (TWRP)
    • Init (erster Userspace-Prozess und verantwortlich für alle anderen Prozesse, mountet auch Dateisysteme)
    • Dienste oder Prozesse werden von gestartet /systemund /vendorPartitionen von init(Zygote / Dalvik ist einer davon).

So odin(spezifisch für Samsung) und fastbootsind zwei unabhängige Protokolle für die Kommunikation mit dem Gerät über USB, um Partitionen zu formatieren, die Werksfirmware zu flashen, den Bootloader (un)zu sperren usw. Während es sich um TWRPein minimales Betriebssystem handelt, das anstelle des normalen gebootet wird boot.img(normalerweise mit demselben Kernel) für den Fall, dass Android nicht booten kann oder ein OTA-Update oder einige Modifikationen / Wartungsarbeiten benötigt.

Keiner von ihnen kann mit in Verbindung gebracht werden Dalvik, sie sind hardwarespezifisch und werden in der Prä-Kernel- oder Kernel-Phase ausgeführt. Während zygote– ein Teil von AOSP – ein vollständiger Userspace-Prozess ist, der die Dalvik Virtual Machine für jede App abspaltet.


Für Details: Boot-Prozess: Android vs. Linux