Proceso de arranque de dispositivos Android

Arranque para dispositivos Android

El proceso de arranque de los dispositivos Android comienza con el encendido del SoC ( sistema en un chip ) y finaliza con la visibilidad de la pantalla de inicio o modos especiales como recuperación y fastboot . [a] El proceso de arranque de los dispositivos que ejecutan Android está influenciado por el diseño del firmware de los fabricantes de SoC.

Fondo

A partir de 2018, el 90% de los SoC del mercado de Android son suministrados por Qualcomm , Samsung o MediaTek . [1] Otros proveedores incluyen 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 primario (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 teléfonos inteligentes Samsung, la ROM de arranque utiliza la clave de arranque segura de Samsung (SSBK) para verificar las siguientes etapas. [5]

En los SoC de Qualcomm, es posible ingresar al modo de descarga de emergencia de Qualcomm desde el gestor de arranque principal.

Si falla la verificación del cargador de arranque secundario, ingresará a EDL. [6] [ se necesita una mejor fuente ]

Cargador de arranque secundario

Debido a que el espacio en la ROM de arranque es limitado, se utiliza un cargador de arranque secundario en el eMMC o eUFS . [7] El cargador de arranque secundario inicializa TrustZone . [7] [8]

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. [9]

Qualcomm ahora llama SBL a XBL y es una implementación de UEFI .

Qualcomm utiliza LK (Little Kernel) o XBL (eXtensible Bootloader), MediaTek utiliza Das U-Boot . [1] Little Kernel es un microkernel para dispositivos integrados , que ha sido modificado por Qualcomm para usarlo como gestor de arranque. [10]

Acerca de

El gestor de arranque de Android (Aboot), que implementa la interfaz fastboot (que no está presente en los dispositivos Samsung), verifica la autenticidad de las particiones de arranque y recuperación. [4] Al pulsar una combinación de teclas específica, los dispositivos también pueden arrancar en modo de recuperación . Aboot luego transfiere el control al núcleo de Linux.

Kernel y initramfs

El initramfs es un archivo comprimido cpio 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 que se especifican en el archivo fstab. dm-verity es un módulo del kernel de Linux que Google introdujo en Android desde la versión 4.4. La implementación estándar solo admite la verificación basada en bloques, pero Samsung ha agregado compatibilidad con archivos. [8]

Cigoto

Zygote es generado por el proceso init, que es responsable de iniciar aplicaciones y procesos de servicio de Android. Carga e inicializa clases que se supone que se usan con mucha frecuencia en el montón. Por ejemplo, estructuras de datos dex de bibliotecas. Una vez que Zygote se ha iniciado, escucha comandos en un socket. Cuando se debe iniciar una nueva aplicación, se envía un comando a Zygote que ejecuta una llamada al sistema fork() . [ cita requerida ]

Disposición de la partición

El sistema Android está dividido en diferentes particiones . [11]

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. [12]

Véase también

Notas explicativas

  1. ^ Estos modos tienden a admitir una función para reanudar el arranque normal.

Referencias

  1. ^ ab 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. Número de identificación del sujeto  56718094.
  2. ^ "Arranque verificado de Android [LWN.net]". LWN.net . Archivado desde el original el 2015-04-22 . Consultado el 2021-09-25 .
  3. ^ Yuan, Pengfei; Guo, Yao; Chen, Xiangqun; Mei, Hong (marzo de 2018). "Optimización del núcleo de Linux específica del dispositivo para teléfonos inteligentes Android". 2018 6th IEEE International Conference on Mobile Cloud Computing, Services, and Engineering (MobileCloud) . págs. 65–72. doi :10.1109/MobileCloud.2018.00018. ISBN 978-1-5386-4879-7. Número de identificación del sujeto  13742883.
  4. ^ ab Hay, Roee (14 de agosto de 2017). "fastboot oem vuln: vulnerabilidades del cargador de arranque de Android en personalizaciones de proveedores". Actas de la 11.ª Conferencia USENIX sobre tecnologías ofensivas . WOOT'17. Vancouver, BC, Canadá: Asociación USENIX: 22.
  5. ^ Alendal, Gunnar; Dyrkolbotn, Geir Olav; Axelsson, Stefan (1 de marzo de 2018). "Adquisición forense: análisis y elusión del modo de criterios comunes aplicado por el arranque seguro de Samsung". Investigación digital . 24 : S60–S67. doi :10.1016/j.diin.2018.01.008. hdl : 11250/2723051 . ISSN  1742-2876.
  6. ^ "Explotación de programadores de Qualcomm EDL (1): obtención de acceso y aspectos internos de PBL". alephsecurity.com . 2018-01-22 . Consultado el 2021-09-13 .
  7. ^ ab Yuan, Pengfei; Guo, Yao; Chen, Xiangqun; Mei, Hong (marzo de 2018). "Optimización del núcleo de Linux específica del dispositivo para teléfonos inteligentes 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. Número de identificación del sujeto  13742883.
  8. ^ ab 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. Número de identificación del sujeto  8510729.
  9. ^ 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 )
  10. ^ Tang, Qinghao (2021). Seguridad de Internet de las cosas: principios y práctica. Fan Du. Singapur. pág. 166. ISBN 978-981-15-9942-2.OCLC 1236261208  .{{cite book}}: Mantenimiento de CS1: falta la ubicación del editor ( enlace )
  11. ^ Alendal, Gunnar; Dyrkolbotn, Geir Olav; Axelsson, Stefan (marzo de 2018). "Adquisición forense: análisis y elusión del modo de criterios comunes aplicado por el arranque seguro de Samsung". Investigación digital . 24 : S60–S67. doi :10.1016/j.diin.2018.01.008. hdl : 11250/2723051 . ISSN  1742-2876.
  12. ^ Zhao, Longze; Xi, Bin; Wu, Shunxiang; Aizezi, Yasen; Ming, Daodong; Wang, Fulin; Yi, Chao (2018). "Extracción de espejo físico 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. Número de identificación del sujeto  53038902.
  • Android.com - Flujo de arranque
  • Administrar el tiempo de arranque
  • Cargadores de arranque de Qualcomm
  • La 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-línea principal/qhypstub
  • Análisis completo del inicio del proceso init del sistema Android y del archivo init.rc
  • Lenguaje inicial de Android
Obtenido de "https://es.wikipedia.org/w/index.php?title=Proceso_de_arranque_de_dispositivos_Android&oldid=1252926220"