2. Conceptos generales - MRodzDirect/4toCiclo_CustomROM_ForAll GitHub Wiki
1. Introducción general
¿Qué es Android?
Android es un sistema operativo basado en Linux, diseñado principalmente para dispositivos móviles como smartphones, tablets, televisores y wearables. Su arquitectura modular permite adaptarse a diferentes configuraciones de hardware gracias a su núcleo Linux, capas de abstracción (HAL), bibliotecas, frameworks de aplicaciones y las propias apps.
¿Qué es Odin y qué es el modo recovery?
En el ecosistema Android, especialmente en dispositivos Samsung, se utilizan herramientas especiales como Odin y el modo recovery para flashear firmware, restaurar el sistema, instalar ROMs personalizadas o realizar mantenimientos avanzados. Estas herramientas permiten al usuario interactuar con el dispositivo a nivel bajo, brindando opciones de recuperación y personalización.
2. Arquitectura del dispositivo Android
Los dispositivos Android utilizan un almacenamiento dividido en particiones, cada una con un propósito específico. A continuación, se explican las más relevantes:
- Bootloader: Carga inicial que se ejecuta antes del sistema operativo. Verifica y lanza el arranque seguro.
- Boot: Contiene el kernel de Linux y el ramdisk necesario para iniciar el sistema.
- Recovery: Permite acceder a opciones de restauración, instalación y diagnóstico.
- System: Alojamiento del sistema operativo Android y sus componentes principales.
- Data (userdata): Guarda datos del usuario y apps instaladas.
- Cache: Almacena datos temporales usados durante el arranque o actualizaciones.
- Vendor y ODM: Contienen drivers y configuraciones específicas del fabricante.
- Metadata, Misc, Radio, entre otras: Particiones auxiliares para configuración, radiofrecuencia, cifrado, etc.
Los sistemas modernos como Android 11+ incorporan particiones dinámicas, que permiten redimensionar secciones durante actualizaciones OTA. Además, el tipo de almacenamiento puede ser eMMC o UFS, ambos tipos de memorias flash integradas.
3. Proceso de arranque (Boot Process)
El arranque de un dispositivo Android sigue una secuencia estructurada:
-
BootROM: Código embebido en el procesador que localiza y carga el bootloader.
-
Bootloader: Ejecuta dos fases:
- Primera: detecta RAM y configura el entorno.
- Segunda: carga el kernel y pasa parámetros esenciales.
-
Kernel de Linux: Inicializa dispositivos, memoria, controladores y ejecuta el primer proceso de usuario (
init
). -
Init: Monta sistemas de archivos y ejecuta scripts como
init.rc
para lanzar servicios. -
Zygote: Carga la máquina virtual (Dalvik/ART) y precarga clases del sistema.
-
System Server: Inicia servicios clave como ActivityManager, NotificationManager, etc.
-
BOOT_COMPLETED: El sistema está listo para el uso del usuario.
El proceso incluye herramientas como Little Kernel (pre-boot) y formatos como ELF para cargar binarios de forma segura.
4. Recovery: definición y funciones
¿Qué es el recovery?
El recovery es un entorno de arranque alternativo ubicado en su propia partición, diseñado para solucionar problemas del sistema. Se accede comúnmente mediante una combinación de botones en el dispositivo.
Tipos de recovery:
- Stock recovery: Incluido por el fabricante. Permite restaurar el sistema, aplicar actualizaciones o limpiar datos.
- Custom recovery (ej. TWRP, CWM): Permite realizar copias de seguridad completas, flashear ROMs personalizadas, administrar particiones y ejecutar comandos avanzados mediante una interfaz táctil.
Funciones principales:
- Wipe (borrar datos, caché).
- Flash (instalación de firmware/ROMs).
- Restauración de sistema o backups.
- Herramientas de diagnóstico (logs, pruebas gráficas).
- Acceso ADB o shell.
Se recomienda precaución, ya que una mala operación podría dañar el sistema.
Bibliografia:
https://cyber0asis.com/arquitectura-de-android/
https://source.android.com/docs/core/architecture/partitions?hl=es-419
https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/The-Android-Booting-process/ta-p/1129182