¿Cuál es la diferencia entre el kernel de Linux y el kernel de Android?
18
¿Cuáles son las modificaciones realizadas en el kernel de Linux para convertirlo en un kernel de Android? Con esta pregunta quiero decir, ¿cuáles son las diferencias entre el kernel de Linux y el kernel de Android?
Las diferencias cambian de una versión a otra (tanto de Linux como de Android), y el núcleo exacto es diferente para cada dispositivo. Un kernel para Android es un kernel de Linux convencional, con controladores adicionales para el dispositivo específico y otras funcionalidades adicionales, como administración de energía mejorada o soporte gráfico más rápido.
Muchas características en el kernel de Android se agregan más tarde a Linux ascendente después de que la comunidad de código abierto las haya aceptado (y tal vez modificado), pero otras nunca se han actualizado, ya sea porque no son aceptables para los desarrolladores del kernel de Linux o porque ' solo se aplica a Android o hardware específico.
La mayoría de los controladores para hardware específico de Android se aceptaron en el núcleo de la línea principal; pero algunas características, como el bloqueo de activación que causó una gran controversia hace algún tiempo, sigue siendo problemático porque la línea principal y el desarrollador del kernel de Android no están de acuerdo si es una buena idea.
Lie Ryan
"Un kernel para Android es un kernel de Linux convencional, con controladores adicionales para el dispositivo específico y otras funcionalidades adicionales, como administración de energía mejorada o soporte gráfico más rápido", ¿entonces son principalmente controladores? ¿No ha cambiado el código fuente?
Guerlando OCs
@GuerlandoOCs No estoy seguro de qué crees que son los controladores si no es un cambio en el código fuente, pero independientemente de eso, la "otra funcionalidad adicional" que mencioné es bastante grande en estos días. Hay muchos cambios en el código fuente.
Dan Hulme
@DanHulme, ¿son los parches de los cambios de origen o simplemente el código cambiado a mano? ¿Cómo puedo ver las cosas que cambiaron? He leído que puedes parchear tu kernel de Linux para que sea compatible con Android, pero ¿dónde están esos parches para que pueda leerlos?
Guerlando OCs
5
Además de las diferencias específicas del dispositivo y el bloqueo de activación que Dan Hulme y Lie Ryan mencionan, Android eliminó las características de System V IPC (colas de mensajes, segmentos de memoria compartida, semáforos) que podrían provocar pérdidas de recursos ( http://www.kandroid.org/ndk /docs/system/libc/SYSV-IPC.html ). Esto probablemente es solo una cuestión de configurar la construcción del núcleo. Además, el IPC de Android elegido, llamado Binder, tiene cierto soporte en el núcleo que, que yo sepa, no está incluido en los núcleos estándar de Linux.
Respuestas:
Las diferencias cambian de una versión a otra (tanto de Linux como de Android), y el núcleo exacto es diferente para cada dispositivo. Un kernel para Android es un kernel de Linux convencional, con controladores adicionales para el dispositivo específico y otras funcionalidades adicionales, como administración de energía mejorada o soporte gráfico más rápido.
Muchas características en el kernel de Android se agregan más tarde a Linux ascendente después de que la comunidad de código abierto las haya aceptado (y tal vez modificado), pero otras nunca se han actualizado, ya sea porque no son aceptables para los desarrolladores del kernel de Linux o porque ' solo se aplica a Android o hardware específico.
fuente
Además de las diferencias específicas del dispositivo y el bloqueo de activación que Dan Hulme y Lie Ryan mencionan, Android eliminó las características de System V IPC (colas de mensajes, segmentos de memoria compartida, semáforos) que podrían provocar pérdidas de recursos ( http://www.kandroid.org/ndk /docs/system/libc/SYSV-IPC.html ). Esto probablemente es solo una cuestión de configurar la construcción del núcleo. Además, el IPC de Android elegido, llamado Binder, tiene cierto soporte en el núcleo que, que yo sepa, no está incluido en los núcleos estándar de Linux.
fuente
Creo que esta fuente de Android es una excelente documentación para entenderlo.
Y aquí hay una lista de cambios realizados desde el núcleo de la línea principal para el núcleo de Android 4.14.
Las características más importantes incluyen:
Diferencias de LTS
En comparación con LTS (4.14.0), el núcleo común de Android tiene 355 cambios, 32266 inserciones y 1546 eliminaciones (a partir de febrero de 2018).
fuente