¿Cuál es la relación entre Android y Linux?
Cita:
El mantenedor del kernel de Linux, Greg Kroah-Hartman, anunció que el código de Android se eliminará de la base del código del kernel de Linux. Esto significa que el equipo de desarrollo del kernel de Linux no reconoce la contribución de Android y existe un conflicto entre ambos.
Greg Kroyer-Hartman escribió un artículo detallado explicando la decisión. Echemos un vistazo a lo que dijo y qué tipo de sistema es Android. Antes de hacer eso, será mejor que sepas quién es Greg Croyer-Hartman. Actualmente es desarrollador principal del kernel de Linux y es responsable de las versiones de paquetes estables. En otras palabras, cada nueva versión del kernel de Linux fluye por sus manos. Además, es responsable de la implementación de controladores de hardware. Y su teléfono móvil es el HTC G1, que utiliza todos los días. Por lo tanto, definitivamente está calificado para hablar sobre este tema y sus puntos de vista representan los puntos de vista de la comunidad Linux sobre Android. Primero, señaló que Android es diferente de otras distribuciones de Linux: "Google usa el kernel de Linux, no el sistema Linux "tradicional".
Google sólo usa el kernel y nada más. En otras palabras, bastante En comparación con las distribuciones tradicionales de Linux como Ubuntu, Debian y Redhat, en Android solo la estructura del sistema subyacente es la misma y todo lo demás es diferente, especialmente la interfaz de programación del programador. Por lo tanto, las aplicaciones de Android deben reescribirse y los programas de Linux existentes. No se puede reescribir. Así que, estrictamente hablando, Android es un sistema completamente nuevo y está aún más lejos de Linux que Mac OS. Entonces, Greg Croyer-Hartman afirmó que Android hizo esto.
"Android también resuelve un problema que los fabricantes de teléfonos han tenido durante años: una versión gratuita de Java y una capa de aplicación unificada con la que los programadores pueden trabajar en todas las plataformas telefónicas que la integran.
Resuelve un viejo dolor de cabeza para los fabricantes de teléfonos móviles: la falta de máquinas virtuales Java de código abierto e interfaces de programas de aplicación unificadas en la industria. Ahora los programadores pueden escribir un programa una vez y usarlo en varias plataformas de hardware de teléfonos móviles. Este pasaje explica por qué todas las aplicaciones de Android deben desarrollarse en lenguaje Java. Porque si no haces eso, no podrás hacer que el hardware del programa sea independiente. Espera, ¿es esto realmente una razón? ¡Los sistemas Linux tradicionales no dependen de hardware específico! Siempre que el código fuente se compile según diferentes plataformas, ¿no se puede utilizar el mismo programa en diferentes arquitecturas de hardware y diferentes distribuciones de Linux? Entonces, ¿cuál es la verdadera razón por la que Android sólo utiliza el kernel y sólo permite programar en Java? El blog de ciencia de Taiwán MMDays dio en el clavo: "El copyright del kernel de Linux es GPL.
Aquí viene el problema: si usted es un fabricante de hardware y desea que su hardware funcione bajo el kernel de Linux, entonces debe tener un controlador. Si el código del programa del controlador se hace público, significa que las especificaciones del hardware casi se hacen públicas. Muchos fabricantes no están dispuestos a hacer esto, por lo que proporcionan controladores de programación, pero no proporcionan el código fuente. de Android son aplicaciones comerciales, y Google ha adoptado algunos métodos para solucionar este problema, movieron el controlador al "espacio de usuario", es decir, convirtieron el controlador en algo que se ejecuta en el kernel de Linux en lugar de ejecutarse juntos, por lo tanto. evitando la GPL Luego, la abrieron en el lado del kernel. Una pequeña puerta que permite que los programas de "espacio de usuario" que no pueden controlar directamente el hardware accedan a ella, así que simplemente publiquen el código del programa que "abre la pequeña puerta". Lo que este pasaje significa es que Google jugó un truco y creó una capa intermedia entre el kernel y la aplicación, que no viola la licencia GPL e impide que el mundo exterior vea el controlador de hardware y el código fuente de la aplicación. Esto puede ayudar a promover Android y atraer a fabricantes y desarrolladores de software para que se unan, pero también trae problemas al kernel de Linux. Greg Croyer-Hartman dejó clara su insatisfacción. …cualquier controlador escrito para la plataforma de hardware Android no se puede fusionar en el árbol del kernel principal porque dependen de código que solo existe en el árbol del kernel de Google, lo que hace que no se construya en el árbol de kernel.org.
Todos los controladores de hardware escritos para Android no se pueden fusionar en el kernel. Porque solo funcionan en el código de Google y no se pueden usar en el kernel en absoluto.
Debido a esto, Google ahora ha bloqueado una gran cantidad de controladores de hardware y código de plataforma para que no se fusionen en el árbol principal del kernel. Creando efectivamente una bifurcación del kernel de la que ahora dependen muchos proveedores diferentes.
Por esta razón, Google nunca ha enviado una gran cantidad de controladores de hardware y código fuente de plataforma al kernel. De hecho, crea una bifurcación del kernel y una gran cantidad de desarrolladores dependen de esa rama. Eso es lo que hace Android: modifica el kernel pero no proporciona los detalles de las modificaciones, construyendo un sistema cerrado por sí solo. Para decirlo sin rodeos, se está aprovechando de la comunidad de código abierto y permitiéndole contribuir a ella, pero no está dispuesto a ofrecer beneficios. Por lo tanto, es realmente normal que el kernel de Linux expulse a Android. El artículo completo está aquí:/Dongfeng Xiao/blog/item/5722821e 3418da 12403417e 6. html/cmtid/a8b7f 61b 52 f 892 dbad 6 e 75 a 0.