Hackeo del kernel de Android de bajo nivel

¿Dónde puedo encontrar información sobre la piratería del kernel de bajo nivel en Android? Por ejemplo, me gustaría saber cómo arranca el dispositivo y seguir la ruta de ejecución desde ese punto. ¿Dónde está exactamente el código que se ejecuta después de presionar el botón de encendido?

androidenea.com/2009/06/android-boot-process-from-power-on.html (Este enlace contiene las partes donde puede intervenir/agregar su propia funcionalidad) El flujo aproximado es Encendido> Cargador de arranque> Kernel> Proceso de inicio > Servidor del sistema > Arranque completo Aquí hay otro enlace sobre el tema con referencias: elinux.org/Android_Booting
@RossC Quizás le gustaría convertir ese comentario en una respuesta.

Respuestas (1)

Este enlace contiene las partes donde puede intervenir / agregar su propia funcionalidad

El flujo aproximado es Encendido > Cargador de arranque > Kernel > Proceso de inicialización > Servidor del sistema > Arranque completo

En la etapa del de arranque , se ejecuta lo siguiente:

R. La primera etapa del cargador de arranque detectará y configurará la memoria RAM externa.

B. Una vez que la RAM externa esté disponible y el sistema esté listo para ejecutar algo más significativo, la primera etapa cargará el cargador de arranque principal y lo colocará en la RAM externa.

C. La segunda etapa del gestor de arranque es el primer programa principal que se ejecutará. Esto puede contener código para configurar sistemas de archivos, memoria adicional, soporte de red y otras cosas. En un teléfono móvil, también puede ser responsable de cargar el código para la CPU del módem y configurar protecciones de memoria de bajo nivel y opciones de seguridad.

D. Una vez que el cargador de arranque haya terminado con cualquier tarea especial, buscará un kernel de Linux para arrancar. Lo cargará desde el medio de arranque (o alguna otra fuente dependiendo de la configuración del sistema) y lo colocará en la RAM. También colocará algunos parámetros de arranque en la memoria para que el kernel los lea cuando se inicie.

E. Una vez que el gestor de arranque haya terminado, realizará un salto al kernel de Linux, generalmente alguna rutina de descompresión, y el kernel asumirá la responsabilidad del sistema.

Aquí hay otro enlace (más en el lado de Linux) sobre el tema con referencias: respuesta del sitio web de eLinux

Este comentario me llamó la atención:

En general, es bastante complicado crear un cargador de arranque para un teléfono existente, ya que a menudo vienen con cargadores de arranque personalizados del fabricante. Para aumentar la dificultad, también tienen funciones de seguridad que tienen como objetivo evitar que descargue su propio gestor de arranque. Sin embargo, si tiene una plataforma abierta, necesita una etapa de cargador de arranque inicial y un cargador de arranque principal capaz de iniciar y/o actualizar el software en el dispositivo. Para el gestor de arranque principal, probablemente desee consultar u-boot, http://www.denx.de/wiki/U-Boot. La etapa inicial del cargador de arranque necesaria para iniciar u-boot debe conocer el protocolo de arranque en el hardware que requiere cierta documentación o ingeniería inversa para crear o descargar uno adecuado. Para resumir, la reprogramación de teléfonos existentes a menudo es más trabajo que valor, a menos que esté realmente interesado, en cuyo caso hay muchos foros dedicados a ese tipo de cosas.