El proceso de arranque de los dispositivos Android comienza al encender el SoC ( sistema en un chip ) y termina cuando se muestra la pantalla de inicio o modos especiales como recuperación , fastboot o el modo Odin para dispositivos Samsung. [ a ] El proceso de arranque de los dispositivos que ejecutan Android está influenciado por el diseño del firmware de los fabricantes del SoC.
Fondo
A partir de 2018, el 90% de los SoC del mercado Android son suministrados por Qualcomm , Samsung o MediaTek . [ 1 ] Otros proveedores incluyen UNISOC , Rockchip , Marvell , Nvidia y anteriormente Texas Instruments .
Historia
El arranque verificado, una medida de seguridad de arranque , se introdujo con Android KitKat . [ 2 ]
Etapas
Cargador de arranque principal
El cargador de arranque principal (PBL), que se almacena en la ROM de arranque [ 3 ], es la primera etapa del proceso de arranque. Este código lo escribe el fabricante del chipset. [ 4 ]
El PBL verifica la autenticidad de la siguiente etapa.
En los smartphones Samsung, la ROM de arranque utiliza la clave de arranque seguro de Samsung (SSBK) para verificar las siguientes etapas. [ 5 ]
En los SoC de Qualcomm, es posible acceder al modo de descarga de emergencia de Qualcomm desde el gestor de arranque principal.
Si la verificación del cargador de arranque secundario falla, entrará en EDL. [ 6 ] [ 7 ]
Cargador de arranque secundario
Debido a que el espacio en la ROM de arranque es limitado, se utiliza un cargador de arranque secundario en la eMMC o eUFS . [ 8 ] El cargador de arranque secundario inicializa TrustZone . [ 8 ] [ 9 ]
En el Qualcomm MSM8960, por ejemplo, el cargador de arranque secundario 1 carga el cargador de arranque secundario 2. El cargador de arranque secundario 2 carga TrustZone y el cargador de arranque secundario 3. [ 10 ]
Qualcomm ahora denomina a SBL como XBL, que es una implementación UEFI , y en dispositivos tipo smartphone y tableta, XBL suele ser una implementación EDK2 .
Qualcomm anteriormente usaba LK (Little Kernel) más Aboot, o ahora usa XBL (eXtensible Bootloader) más ABL; Samsung Exynos usa S-Boot; los SoC MediaTek muy antiguos usan Das U-Boot y los SoC MediaTek recientes usan UEFI. [ 1 ] Little Kernel es un microkernel para dispositivos integrados , que ha sido modificado por Qualcomm y MediaTek para usarlo como gestor de arranque. [ 11 ] El gestor de arranque de Android (Aboot o ABL) implementa la interfaz fastboot . El gestor de arranque de Android verifica la autenticidad de las particiones de arranque y recuperación. [ 4 ] Al presionar una combinación de teclas específica, los dispositivos también pueden arrancar en modo de recuperación . El gestor de arranque de Android luego transfiere el control al kernel de Linux.
Núcleo e initramfs
El initramfs es un archivo cpio comprimido con gzip que contiene un pequeño sistema de archivos raíz. Contiene init , que se ejecuta. El kernel de Android es una versión modificada del kernel de Linux. Init monta las particiones. dm-verity verifica la integridad de las particiones especificadas en el archivo fstab . dm-verity es un módulo del kernel de Linux introducido por Google en Android desde la versión 4.4. La implementación estándar solo admite la verificación basada en bloques, pero Samsung ha añadido compatibilidad con archivos. [ 9 ]
Cigoto
Zygote se inicia mediante el proceso init, responsable de iniciar las aplicaciones y los servicios de Android. Carga e inicializa en la memoria dinámica las clases que se utilizan con frecuencia, como las estructuras de datos dex de las bibliotecas. Una vez iniciado, Zygote escucha los comandos en un socket. Cuando se inicia una nueva aplicación, se envía un comando a Zygote, que ejecuta la llamada al sistema fork() .
Diseño de partición
El sistema Android está dividido en diferentes particiones . [ 12 ]
La plataforma Qualcomm utiliza la tabla de particiones GUID . Esta especificación forma parte de la especificación UEFI , pero no depende del firmware UEFI. [ 13 ]
Véase también
Notas explicativas
- ↑ Estos modos suelen admitir una función para reanudar el arranque normal.
Referencias
- 1 2 Garri, Khireddine; Kenaza, Tayeb; Aissani, Mohamed (octubre de 2018). "Un nuevo enfoque para la detección de bootkits en la plataforma Android" . Conferencia Internacional de 2018 sobre Comunicaciones Inteligentes en Tecnologías de Red (SaCoNeT) . IEEE. págs. 277–282 . doi : 10.1109/saconet.2018.8585583 . ISBN 978-1-5386-9493-0. S2CID 56718094 .
- ↑ Edge, Jake (abril de 2015). "Arranque verificado de Android [ LWN.net ] " . LWN.net . Archivado del original el 22 de abril de 2015 . Recuperado el 25 de septiembre de 2021 .
- ↑ Yuan, Pengfei; Guo, Yao; Chen, Xiangqun; Mei, Hong (marzo de 2018). "Optimización del kernel de Linux específica para dispositivos Android". 2018 6.ª Conferencia Internacional IEEE sobre Computación Móvil en la Nube, Servicios e Ingeniería (MobileCloud) . págs. 65–72 . doi : 10.1109/MobileCloud.2018.00018 . ISBN 978-1-5386-4879-7. S2CID 13742883 .
- 1 2 Hay, Roee (2017-08-14). "vulnerabilidad de fastboot oem: vulnerabilidades del gestor de arranque de Android en personalizaciones del proveedor" . Actas de la 11.ª Conferencia USENIX sobre Tecnologías Ofensivas . WOOT'17. Vancouver, BC, Canadá: Asociación USENIX: 22.
- ↑ Alendal, Gunnar; Dyrkolbotn, Geir Olav; Axelsson, Stefan (2018-03-01). "Adquisición forense: análisis y elusión del modo de criterios comunes de arranque seguro de Samsung" . Investigación digital . 24 : S60– S67. doi : 10.1016/j.diin.2018.01.008 . hdl : 11250/2723051 . ISSN 1742-2876 .
- ↑ "Explotando a los programadores de Qualcomm EDL (1): Obtención de acceso y detalles internos de PBL" . alephsecurity.com . 22 de enero de 2018. Consultado el 13 de septiembre de 2021 .
- ↑ "Documentación de Qualcomm" . Consultado el 26 de febrero de 2025 .
- 1 2 Yuan, Pengfei; Guo, Yao; Chen, Xiangqun; Mei, Hong (marzo de 2018). "Optimización del kernel de Linux específica para dispositivos Android" . 2018 6.ª Conferencia Internacional IEEE sobre Computación en la Nube Móvil, Servicios e Ingeniería (MobileCloud) . IEEE. págs. 65–72 . doi : 10.1109/mobilecloud.2018.00018 . ISBN 978-1-5386-4879-7. S2CID 13742883 .
- 1 2 Kanonov, Uri; Wool, Avishai (24 de octubre de 2016). "Contenedores seguros en Android" . Actas del 6.º Taller sobre Seguridad y Privacidad en Teléfonos Inteligentes y Dispositivos Móviles . SPSM '16. Nueva York, NY, EE. UU.: ACM. págs. 3–12 . doi : 10.1145/2994459.2994470 . ISBN 9781450345644. S2CID 8510729 .
- ^ Tao, Chen, Yue Zhang, Yulong Wang, Zhi Wei (17 de julio de 2017). "Ataque de degradación en TrustZone" . OCLC 1106269801 .
{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Tang, Qinghao (2021). Seguridad en el Internet de las cosas: principios y práctica . Fan Du. Singapur. pág. 166. ISBN 978-981-15-9942-2OCLC 1236261208
{{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace ) - ↑ Alendal, Gunnar; Dyrkolbotn, Geir Olav; Axelsson, Stefan (marzo de 2018). "Adquisición forense: análisis y elusión del modo de criterios comunes de arranque seguro de Samsung" . Investigación digital . 24 : S60– S67. doi : 10.1016/j.diin.2018.01.008 . hdl : 11250/2723051 . ISSN 1742-2876 .
- ↑ Zhao, Longze; Xi, Bin; Wu, Shunxiang; Aizezi, Yasen; Ming, Daodong; Wang, Fulin; Yi, Chao (2018). "Extracción de espejos físicos en dispositivos móviles Android basados en Qualcomm" . Actas de la 2.ª Conferencia Internacional sobre Ciencias de la Computación e Ingeniería de Aplicaciones . CSAE '18. Nueva York, Nueva York, EE. UU.: ACM Press. págs. 1–5 . doi : 10.1145/3207677.3278046 . ISBN 9781450365123. S2CID 53038902 .
Enlaces externos
- Android.com - Proceso de arranque
- Gestionar el tiempo de arranque
- Cargadores de arranque de Qualcomm
- Cadena de confianza de Qualcomm
- Arranque seguro y autenticación de imágenes
- Arranque seguro en Snapdragon 410
- Análisis de las cadenas de arranque seguras de Qualcomm
- msm8916-mainline/qhypstub
- Análisis completo del proceso de inicio del sistema Android y del archivo init.rc.
- Lenguaje de inicialización de Android
- Android (sistema operativo)
- Procesos de arranque
- Cargadores de arranque