¿Qué significa gestor de arranque bloqueado?

Todos se quejan de los gestores de arranque bloqueados en los teléfonos. Al leer el cargador de arranque, parece haber un código almacenado en la partición en la que está montado /boot. Una vez que el teléfono está rooteado, ¿por qué no se puede simplemente eliminar lo que está en /boot y poner sus propias cosas allí? Cuando realiza una OTA y actualiza el cargador de arranque, asumo que solo escribe archivos en esta partición.

En una distribución de Linux, puedo reemplazar grub que está almacenado en el arranque con LILO o lo que sea, simplemente reemplazando los archivos en /boot y escribiendo el PBR en el encabezado de esa partición para luego arrancar en LILO. Cuando la PC arranca, mira el MBR que le dice que mire la partición activa (supuestamente la que tiene /boot), encadene eso y lea el código LILO en el encabezado que luego hace cosas con todos los otros archivos en /boot .

¿Cómo se inician los dispositivos Android de manera diferente que evita eso?

@KaranRajBaruah - Gracias, lo leí hace un tiempo. Todavía no veo por qué una vez que tienes un dispositivo rooteado no puedes reemplazar la partición /boot. El cargador de arranque no está grabado en el teléfono. No creo que sea comparable con reescribir el BIOS, más comparable a reescribir lo que hay en esa partición montable.

Respuestas (1)

El cargador de arranque generalmente no está en la /bootpartición, está en una separada, aunque ese no es realmente el quid de la cuestión.

El problema ocurre cuando el cargador de arranque está firmado criptográficamente, lo que tiene como objetivo evitar que lo reemplaces por el tuyo. El dispositivo verificará la firma del gestor de arranque al inicio y se negará a iniciar uno con una firma no válida. Después de eso, el cargador de arranque verifica la firma de lo que sea que esté en /boot, negándose a arrancar si no está firmado de manera válida. Por lo tanto, no puede sobrescribir ninguna partición sin hacer que el dispositivo no se pueda iniciar.

Cuando un cargador de arranque está desbloqueado, no verificará la firma de las otras imágenes de partición, razón por la cual puede instalar ROM personalizadas. Esto significa que no necesita reemplazar el gestor de arranque para modificar /boot, solo necesita desbloquearlo para que omita la verificación de firma en /boot. Si el gestor de arranque está bloqueado y firmado, entonces básicamente está atascado, a menos que se produzca un exploit que le permita omitir uno de los pasos de verificación de la firma.

Esto también significa que los cargadores de arranque bloqueados, en sí mismos, no son necesariamente un problema. El verdadero problema son los gestores de arranque firmados que no proporcionan un mecanismo de desbloqueo.

El proceso es (más o menos) análogo al arranque seguro de UEFI , aunque probablemente no sea exactamente la misma implementación arquitectónica. Por cierto, siguiendo con su ejemplo de Linux, una de las principales críticas del arranque seguro UEFI es que podría usarse para evitar la instalación de sistemas operativos alternativos en PC tradicionales a través del mismo esquema de verificación de firmas.

Tomemos el GS4. Hay lo que está grabado a fuego en el teléfono. Esto es similar a EFI o BIOS y NO se puede cambiar. Está codificado para verificar la firma en BL. Al principio, Samsung fue genial y proporcionó un BL (¿firmado?) Que no le importaba qué ROM cargaba en /boot (desbloqueado). Como Samsung tiene las claves, pueden actualizar BL y firmarlo. Decidieron actualizar el BL OTA y hacer cumplir la verificación de firmas en la ROM. Esto esencialmente bloqueó el gestor de arranque. Lo que sea que esté bloqueado o desbloqueado en la partición BL debe estar firmado con código porque el teléfono tiene un código difícil de verificar y no se puede deshabilitar
¿Es eso correcto? Si es así, ¿por qué no se puede simplemente poner el antiguo código desbloqueado en la partición BL? También es posible cambiar lo que carga el BL, similar a la actualización del BIOS, o está directamente codificado en la placa. Gracias por la respuesta informativa por cierto.
En teoría, la degradación sería una opción, y es el ángulo que la mayoría de los modders probablemente investigarían. En la práctica, puede que no sea del todo fácil de hacer. No sé sobre Samsung específicamente, pero otros fabricantes han implementado restricciones de software para evitar que desactualices tu cargador de arranque por medios normales. Ese también puede ser el problema en su ejemplo, y requeriría encontrar una manera de escribir el gestor de arranque fuera de los métodos admitidos.
Con respecto a la modificación de la etapa anterior al cargador de arranque: de nuevo, en teoría puede ser posible. El Kindle Fire tenía un cargador de primera etapa en el que se podía escribir. Sin embargo, es posible que el código para dicho cargador no esté disponible públicamente (la mayoría de los cargadores de arranque son propietarios), por lo que probablemente sería difícil modificar la primera etapa. Tampoco estoy seguro de si todos los teléfonos usan un cargador de primera etapa de la misma manera, o si es de solo lectura en aquellos que lo usan. Probablemente sería razonable que viviera en la memoria de solo lectura, ya que sería poco probable que necesitara actualizarlo.
¿Cómo no sería escribible el BL? ¿No son estas solo particiones en el flash interno (una tarjeta SD interna glorificada)?
Lo son, pero sin permiso de root no puedes montarlo. Si pudiera obtener la raíz y tuviera acceso a un cargador de arranque más antiguo, desbloqueado (pero aún firmado), entonces imagino que probablemente podría lograr degradarlo de alguna manera. Como dije, no estoy muy interesado en la situación S4 específicamente, por lo que no sé si puede haber otros factores en juego allí.