1 votos

Actualizando Android sin el apoyo del fabricante (no con una ROM personalizada sino con un enfoque diferente)

Resumen para el paciente hospitalizado: Quiero ejecutar una nueva versión de Android en un viejo smarphone (s3mini).

(Perdón por el mal inglés, soy alemán. Siéntete libre de corregir mi gramática en los comentarios)

Hola programadores y fans de Android,

Como sabrás, la mayoría de los teléfonos inteligentes Android sólo reciben actualizaciones durante un corto período de tiempo hasta que el fabricante de hardware deja de dar soporte a ese teléfono inteligente. Por ejemplo, mi smartphone (s3mini GT-I8200N) todavía tiene Android 4.2.2, que obviamente no es el ideal.

Por favor, corrígeme si entiendo algo mal aquí, pero AFAIK todos los datos del teléfono, incluyendo los drivers se borran si flasheo una ROM personalizada (por ejemplo, Stock Android 7.0 o LineageOS). Debido a que el fabricante (en este caso Samsung) no publica sus drivers, la comunidad tiene que escribir sus propios drivers para cada smartphone (que obviamente no son tan buenos como los drivers escritos por el fabricante porque conocen mejor el hardware).

Es posible obtener una concha de root en el smartphone / ejecutar mi propio programa como root en el smartphone. Debido a que un proceso Root puede leer/escribir todos los archivos del dispositivo excepto el kernel, y Android 7.0/LineageOS está disponible públicamente, debería ser posible escribir un programa que actualice cada uno de los archivos del sistema Android. Actualizar el kernel con privilegios de root tampoco debería ser un problema ya que el kernel de linux está firmado. Así que ese es el plan:

Paso 1: Descargar y compilar Android 7.0/LineageOS

Paso 2: Copiar CompiledAndroid7.0.tar y el programa en el smartphone

Paso 3: Iniciar el programa con Derechos de root

Paso 4: El programa termina cualquier otro proceso

Paso 5: El programa elimina todos los archivos del smartphone excepto los controladores, el kernel, los módulos del kernel, los archivos relacionados con el cargador de arranque, el propio programa y CompiledAndroid7.0.tar

Paso 6: El programa desempaqueta CompiledAndroid7.0.tar en el directorio root (/) (El programa tiene que ser capaz de desempaquetar un archivo .tar sin ningún otro software excepto el kernel. Pero esto no debería ser difícil de hacer, sólo Copiar+Pegar desde el software de código abierto de desempaquetado).

Paso 7: Instalar el nuevo kernel firmado (vía llamada al sistema) y reiniciar.

Ahora tienes un viejo smartphone con Stock Android 7.0/LineageOS y los drivers originales!

¿Podría funcionar en principio o entendí algo mal en la forma en que funcionan los Smartphones Android?

Un comentario decía que el paso 4 podría hacer que mi teléfono se estropeara. Una buena solución sería que el programa reemplace a init con una copia de sí mismo y luego ejecute "reinicio de sudo"

¿Funcionan los viejos módulos/controladores del núcleo con las nuevas versiones de Linux? Si no, ¿por qué?

ACTUALIZACIÓN

Quiero agradecerles a todos ustedes por su ayuda. La idea de arriba no funcionará, así que tengo que enfadarme con Google por no tener buenos servidores de actualización para Android y no asegurarme de que los viejos módulos del núcleo funcionen y enfadarme con Samsung porque no publican la fuente de los controladores o los controladores actualizados. Si encuentro el tiempo para hacerlo, comprobaré si LineageOS es compatible con mi dispositivo y si no, escribiré los drivers.

0 votos

Cualquier ROM que no sea del fabricante es una ROM personalizada. Las ROM del fabricante son de stock.

0 votos

Sé que cualquier ROM que no sea del fabricante es una ROM personalizada.

0voto

Matthew Read Puntos 35808

El sofoco es ciertamente posible, aunque más difícil de lo que vale.

AFAIK todos los datos del teléfono, incluyendo los drivers se borran si flasheo una ROM personalizada (p.ej. Stock Android 7.0 o LineageOS)

Eso no es correcto. Los datos sólo se borran si el parpadeo de script lo hace o si el dispositivo está encriptado. Del mismo modo, el firmware sólo se sobrescribe/borrará si el script parpadeante lo hace.

Si no estás flasheando un ROM de stock del fabricante (o un Android vainilla en un teléfono Nexus/Pixel), entonces estás flasheando un ROM personalizado. Este enfoque no te dará nada realmente, excepto en un dispositivo con un cargador de arranque muy, muy cerrado.

0 votos

Gracias por corregirme. ¿Es posible copiar los drivers originales del smartphone en mi PC? "Este enfoque no va a ganar nada realmente" Con este enfoque, usted tiene los controladores originales, escritos por Samsung, Si usted flashea su ROM personalizada tiene los controladores escritos por la comunidad que pueden o no funcionar muy bien

1 votos

@Kryptomatrix La mayoría de las ROMs personalizadas que he visto reutilizan los bits binarios de las ROMs OEM, no escriben las suyas propias. Aquí hay un repositorio con manchas para su dispositivo, por ejemplo. El sistema de compilación los incluye en la ROM empaquetada.

0 votos

@eldarerathis Gracias. No lo sabía. Un chico me dijo que no es posible conseguir los drivers originales del smartphone y que por eso las Custom ROMs a veces son inestables o no pueden usar una parte específica del hardware

0voto

Andy Brudtkuhl Puntos 1714

¿Funcionan los viejos módulos/controladores del núcleo con las nuevas versiones de Linux? Si no, ¿por qué?

No, no siempre. Hay dos interfaces en los módulos del kernel: la interfaz del módulo al kernel, y la interfaz del controlador del lado del kernel al controlador del espacio de usuario. La última cambia con más frecuencia, pero la primera también lo hace a veces. En general, encontrarás que algunos controladores están bien, pero otros no pueden funcionar con una versión diferente.

¿Podría funcionar en principio o entendí algo mal en la forma en que funcionan los Smartphones Android?

Las nuevas versiones de Android suelen introducir nuevas funciones que los controladores deben actualizar para que sean compatibles. Por lo tanto, es posible que pueda utilizar el mismo módulo del núcleo en una nueva versión de Android, pero necesitaría (por ejemplo) escribir un nuevo controlador de espacio de usuario para soportar todas las características necesarias para la nueva versión de Android.

En general, es como dijo Matthew. Los ROMs personalizados ya tienen que reutilizar algunas partes binarias de los drivers oficiales, e integrarlas es una gran fuente de dolor. El "borrar los drivers" por el que has preguntado no es la razón por la que es doloroso. Con las partes binarias de los drivers, a menudo no hay nada que puedas hacer para que funcionen con una nueva versión de Android.

Si realmente quieres que tu viejo teléfono tenga soporte, mira ¿Por qué no hay una ROM estable de Cyanogenmod para mi dispositivo? para aprender lo que puedes hacer para ayudar.

0 votos

Gracias por su ayuda. ¿Lo he entendido bien? ¿La comunidad toma los drivers originales, binarios, o los revierte para escribir nuevos drivers que funcionen con las nuevas versiones de Android? Lo siento si esta es una pregunta estúpida, pero si la interfaz de los controladores cambia con las nuevas versiones de Linux, entonces ¿por qué las distros Linux de escritorio (por ejemplo, ubuntu) (casi) siempre funcionan en el hardware antiguo? Nunca he tenido un portátil/sobremesa Linux que no fuera actualizable.

0 votos

Es diferente para los distintos dispositivos. Por lo general, los controladores de GPU tienen una parte binaria y una parte para la que está disponible el código fuente. A veces es posible que terceros actualicen la parte de origen y sigan utilizando la parte binaria sin modificar.

0 votos

En cuanto a la diferencia con los ordenadores de sobremesa, ocurren dos cosas. Primero, la distro se encarga de asegurarse de que todos los controladores de la distro están actualizados si quieren pasar a una nueva versión del kernel. Segundo, las nuevas versiones de Ubuntu no introducen nuevos requisitos de hardware (como "debe soportar Vulkan"), mientras que las nuevas versiones de Android suelen hacerlo.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X