¿Cuál es la diferencia entre el kernel de Linux y el kernel de Android?

¿Cuáles son las modificaciones realizadas en el kernel de Linux para convertirlo en un kernel de Android? Con esta pregunta me refiero a cuáles son las diferencias entre el kernel de Linux y el kernel de Android.

Respuestas (3)

Creo que esta fuente de Android es una gran documentación para entenderlo.

Y aquí hay una lista de los cambios realizados desde el kernel de la línea principal para el kernel de Android 4.14.

Las características más grandes incluyen:

  • 19,8 % Programación consciente de la energía (núcleo/programación)
  • 13,8% Redes (net/netfilter)
  • 13,5 % tarjetas SD (fs/tarjeta SD)
  • 9,4% USB (controladores/usb)
  • SoC del 7,2 % (arco/brazo64, arco/x86)
  • 6,2% f2fs (fs/f2fs -- backports desde upstream)
  • 6,1 % de entrada (controladores/entrada/varios)
  • 5.4% Depurador FIQ (controladores/puesta en escena/android/fiq_debugger)
  • 3.6% Goldfish Emulator (controladores/plataforma/goldfish)
  • 3,4 % de verdad (conductores/md)
  • 11,6% Otros

Diferencias de LTS

En comparación con LTS (4.14.0), el kernel común de Android tiene 355 cambios, 32266 inserciones y 1546 eliminaciones (hasta febrero de 2018).

ingrese la descripción de la imagen aquí

Las diferencias cambian de una versión a otra (tanto de Linux como de Android), y el kernel 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 funciones adicionales, como administración de energía mejorada o compatibilidad con gráficos más rápidos.

Muchas funciones 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 actualizan, ya sea porque no son aceptables para los desarrolladores del kernel de Linux o porque solo se aplica a Android o a hardware específico.

La mayoría de los controladores para hardware específico de Android se aceptaron en el núcleo principal; pero algunas características, como el bloqueo de activación que causó una gran controversia hace algún tiempo, siguen siendo problemáticas porque la línea principal y el desarrollador del kernel de Android no están de acuerdo sobre si es una buena idea.
"Un kernel para Android es un kernel de Linux convencional, con controladores adicionales para el dispositivo específico y otras funciones adicionales, como administración de energía mejorada o compatibilidad con gráficos más rápidos", ¿entonces se trata principalmente de controladores? ¿No ha cambiado el código fuente?
@GuerlandoOCs No estoy seguro de qué cree que son los controladores si no es un cambio de código fuente, pero independientemente, la "otra funcionalidad adicional" que mencioné es bastante grande en estos días. Hay muchos cambios en el código fuente.
@DanHulme ¿son los parches de cambios de fuente o simplemente el código se cambió 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?

Además de las diferencias específicas del dispositivo y el bloqueo de activación que mencionan Dan Hulme y Lie Ryan, Android eliminó las características de System V IPC (colas de mensajes, segmentos de memoria compartida, semáforos) que podrían provocar fugas de recursos ( http://www.kandroid.org/ndk /docs/system/libc/SYSV-IPC.html ). Esto probablemente sea solo una cuestión de configurar la compilación del kernel. Además, el Android IPC de elección, llamado Binder, tiene cierto soporte en el kernel que, según mi conocimiento, no está incluido en los kernels estándar de Linux.