Proceso de carga del dispositivo Android (preparando el flasheo)

El proceso de carga estándar del sistema operativo Android se ve así (de los documentos):

  1. BootROM (comienza con el botón 'on')
  2. cargador de arranque
  3. Núcleo
  4. init/montaje
  5. Zygote+Dalvik VM
  6. Servicios del sistema

Pero tengo dificultades para entender el proceso de carga que prepara el flasheo (cómo lo conocí flasheando las ROM de teléfonos celulares Galaxy Tab y MTK)

¿Podría ayudarme a encontrar una posición para esas herramientas en este diagrama?

1) ¿El código que muestra el logotipo (o la carga de la batería en porcentajes cuando el cable de alimentación está encendido) y responde al USB (cuando el teléfono está apagado pero la batería está adentro)? Donde es ? Debe colocarse antes de la ROM de arranque, pero ¿cómo se llama?

2) ¿Quiénes son los responsables de manejar "on + bajar volumen" para cambiar al menú "bootload"? ¿BootRom o cargador de arranque?

3) "precargador" ¿cómo se coloca allí? (No estoy seguro de entender qué es el precargador).

4) Twrp? arranque rápido? odin3 reemplazan a Dalvik o lo atropellan? twrp por sí mismo parece un sistema operativo completo.

Respuestas (1)

El proceso de arranque de los dispositivos Android hasta la etapa del kernel es muy específico del proveedor, del dispositivo y contiene en su mayoría código fuente cerrado. Es posible que vea desviaciones claras de las terminologías utilizadas y diferencias en sus implementaciones. Aquí estoy dando una comprensión simple.

  1. Cuando se inserta el cargador, el dispositivo se inicia de manera muy similar a cuando se presiona el botón de encendido, excepto que se carga un sistema operativo muy limitado.

    El dispositivo arranca normalmente hasta initla etapa (dada en el punto 4). init, en lugar de iniciar servicios desde /systemy /vendorparticiones, inicia un proceso: /sbin/charger*que no forma parte de AOSP. El binario del cargador suele ser de fuente cerrada y varía según los diferentes dispositivos. Puede cargar algunas imágenes/animaciones almacenadas en algunas particiones específicas para este propósito.

    Además, algunos OEM permiten habilitar/deshabilitar off-mode-chargepara fastbootcontrolar el comportamiento, es decir, si el dispositivo debe encenderse cuando la alimentación está enchufada o no. Pero tampoco es una característica estándar y varía según los dispositivos.

  2. Los cargadores de arranque (SBL / ABOOT o equivalentes) manejan los botones de encendido y volumen presionados para iniciar el modo de descarga (emergencia), el modo SPL, el fastbootmodo, etc. y la recuperación o el kernel normal.
  3. El precargador es una etapa del cargador de arranque (SBL/SPL) antes del cargador de arranque final (UBOOT/LK/ABOOT)
  4. Aquí está la cadena de arranque:
    • ROM de arranque
    • BooLoader o PreLoader primario/secundario
    • Cargador de arranque final (que proporciona odin/ fastboot)
    • Núcleo/Recuperación (TWRP)
    • Init (primer proceso de espacio de usuario y a cargo de todos los demás procesos, también monta sistemas de archivos)
    • Los servicios o procesos son iniciados /systemy /vendorparticionados por init(Zygote / Dalvik es uno de ellos).

Entonces odin(específico de Samsung) y fastbootson dos protocolos independientes para la comunicación con el dispositivo a través de USB para formatear particiones, flashear el firmware de fábrica, (des)bloquear el cargador de arranque, etc. Mientras que TWRPes un sistema operativo mínimo que se inicia en lugar del normal boot.img(generalmente usando el mismo kernel) en caso de que Android no pueda arrancar o necesite una actualización OTA o algunas modificaciones/mantenimiento.

Ninguno de ellos puede estar relacionado con Dalvik, son específicos del hardware y se ejecutan en la etapa previa al kernel o del kernel. Mientras que zygote, una parte de AOSP, es un proceso completamente de espacio de usuario que bifurca la máquina virtual Dalvik para cada aplicación.


Para más detalles: Proceso de arranque: Android vs. Linux