1 votos

¿Construcción de ROMs y Kernels?

Llevo un tiempo usando ROMs y Kernels customs en mi GS5, pero quiero que me expliquen bien cómo funciona. Aquí hay algunas preguntas:

  1. ¿Qué es "construir" en Android? He oído que el sistema de construcción es diferente de otros sistemas Linux.
  2. ¿Cuál es la diferencia entre una ROM y un Kernel?
  3. ¿Están separadas la "parte de la ROM" y la "parte del Kernel"? Entonces, ¿puedo construirlas por separado e instalarlas por separado?
  4. ¿Cómo puedo añadir controladores de dispositivos (como dongles WiFi) a mi Kernel?
  5. Dentro de un archivo zip de una ROM personalizada, ¿se incluye el Kernel junto con la ROM?
  6. ¿Son los núcleos compatibles con diferentes ROMs? (Por ejemplo, utilizando un kernel construido a partir de las fuentes oficiales de stock en CyanogenMod)

Puede que sean preguntas muy de novato, pero tengo mucha, mucha curiosidad.

5voto

Rémi Cohen-Scali Puntos 91

1) Construir en Android podría significar - construir una entrega en el árbol de construcción de Android - crear un producto en una plataforma Android que tenga instaladas las herramientas de creación - construir el AOSP (Android OpenSource Project) Un poco más de contexto puede ayudar. Según la siguiente pregunta "el sistema de construcción es diferente de otros sistemas Linux" podría ser el AOSP. En realidad Android es una distro para teléfono. Entonces construir un firmware de Android para una plataforma móvil es equivalente a construir una distribución de linux para un ordenador de sobremesa. Se construye el cargador de arranque, el kernel, el sistema de archivos root y algunos entregables extra (por ejemplo, el sistema de archivos de recuperación que es un sistema especial de Android, la imagen del sistema de archivos del proveedor, el SDK, el NDK, el CTS de Android, etc...). La forma de construir todo esto es diferente a cualquier otro sistema de construcción existente. Todo esto está muy bien documentado en el sitio web de Android Sitio web de Android Source . Échale un vistazo :)

2) Una ROM no es un término muy preciso. Puede significar varias cosas. Generalmente la ROM designa la parte del SISTEMA del firmware completo de Android para una plataforma móvil, siendo el kernel otra parte de este firmware. Pero a veces, una ROM contiene el conjunto: el SISTEMA, los DATOS, el BOOTLOADER, los Parámetros del BOOTLOADER, la RECUPERACIÓN y la parte del KERNEL.

3) Si la ROM designa el firmware completo, el Kernel es parte de él, entonces el kernel está incluido en la ROM y la construcción de la ROM => la construcción del kernel. Si la ROM designa la parte del SISTEMA de Android, entonces ambos están separados y pueden ser construidos e instalados por separado.

4) Android es una plataforma móvil y, como tal, funciona en los teléfonos. La instalación de los controladores del dispositivo es posible, pero es un poco complicada, ya que depende en gran medida del diseño de la plataforma de hardware. Para las placas de referencia (plataformas de desarrollo), estos procedimientos están bien documentados por los fabricantes, lo que permite a los desarrolladores hacerlo por sí mismos. Para una plataforma cerrada (como un teléfono HTC o SAMSUNG), la documentación es mucho más difícil de obtener (la mayoría de las veces se requiere al menos un NDA, y a veces no hay ninguna documentación disponible ya que sigue siendo información confidencial de la empresa).

5) Supongo que, por archivo zip de la ROM, te refieres al paquete de actualización OTA. Este paquete puede contener cualquier cosa que la plataforma necesite actualizar y esto incluye (pero no se limita a) el kernel, el bootloader, el firmware de la radio, el firmware del TEE, etc. Estos paquetes se basan en un lenguaje de scripting (llamado edify) que permite realizar algunas operaciones muy complejas de actualización.

6) El núcleo está vinculado a la plataforma de hardware (un teléfono <=> un núcleo). Sin embargo, algunos SISTEMAS pueden requerir que algunas características específicas sean habilitadas a nivel del kernel. Entonces generalmente sí, los kernels son compatibles con cualquier partición del SISTEMA (asumiendo que el término ROM se utiliza aquí con el significado de la partición del SISTEMA de Android).

Espero que esto haya ayudado ;-)

0 votos

Objeción al punto 6): los núcleos suelen ser no compatibles entre sí, incluso si están construidos para el mismo dispositivo pero para diferentes ROMs. El resto está bien según mi punto de vista. +1 sólo por el esfuerzo de escribir una respuesta tan larga.

0 votos

Con la restricción que he mencionado (algunas características del proveedor pueden depender de las del núcleo), los núcleos son perfectamente compatibles entre sí. Un kernel es un kernel y no hay un kernel cyanogen o un kernel AOSP. En realidad todos los kernels de Android están basados en hikey linux. Consulte source.Android.com/source/devices.html#hikey-boards si necesitas que te convenzan.

0 votos

Tengo que moderar lo que he dicho. En realidad binder y otras modificaciones de linux específicas para Android introducen algunas adherencias entre la versión de Android y la versión de linux. Entonces el kernel no es compatible de una versión a otra pero en la misma versión, sea cual sea la 'distro' (ROM como la llamas tú), el kernel es interchageanble (creo que podríamos comprobarlo pero deberían usar el mismo kernel para la misma plataforma).

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