¿Qué kernel estable debería usar?

Recibo muchas preguntas sobre personas que me preguntan qué kernel estable deberían usar para su producto/dispositivo/ laptop/servidor/etc. todo el tiempo.

Especialmente dado el extenso período de tiempo en que algunos núcleos están siendo soportados varias comunidades, esto no siempre es algo muy obvio de determinar.

Entonces esta publicación es un intento de escribir mis opiniones sobre el asunto. Por supuesto, puede usar la versión de kernel que desee, pero esto es lo que recomiendo. 

Como siempre, las opiniones escritas aquí son mías, no hablo por nadie más que por mí mismo.
Qué núcleo elegir

Aquí está mi breve lista de qué kernel debes usar, ordenadas de las mejores a las peores opciones. Iré a los detalles de todos estos a continuación, pero si solo quiere el resumen de todo esto, aquí está:

Jerarquía de qué núcleo usar, desde la mejor solución hasta la peor:

  • Kernel compatible de su distribución de Linux favorita
  • Última versión estable
  • La última versión de LTS
  • Una versión anterior de LTS que aún se mantiene

Qué kernel nunca usar:

  • Lanzamiento de kernel no mantenido

Para dar números a los anteriores, hoy, a partir del 26 de agosto de 2018, la página principal de kernel.org se ve así:

Por lo tanto, según la lista anterior, eso significaría que:

  • 4.18.5 es la última versión estable
  • 4.14.67 es la última versión de LTS
  • 4.9.124, 4.4.152 y 3.16.57 son las versiones anteriores de LTS que aún se mantienen
  • 4.17.19 y 3.18.119 son núcleos de “fin de vida útil” que se han lanzado en los últimos 60 días y, como tales, continúan en el sitio kernel.org para aquellos que aún deseen usarlos.

Muy fácil, ¿verdad?

Ok, ahora para alguna justificación para todo esto:

Kernels de la  distribución

La mejor solución para casi todos los usuarios de Linux es simplemente usar el kernel de su distribución de Linux favorita.

Personalmente, prefiero las distribuciones de Linux basadas en la comunidad que constantemente funcionan junto con el núcleo actualizado más reciente y es compatible con esa comunidad de desarrolladores.

Las distribuciones en esta categoría son Fedora, openSUSE, Arch, Gentoo, CoreOS y otras.

Todas estas distribuciones usan la última versión estable del kernel upstream y se aseguran de que las correcciones de errores necesarias se apliquen regularmente. Ese es uno de los núcleos más sólidos y mejores que puede usar cuando se trata de tener las últimas correcciones (recuerde que todas las correcciones son soluciones de seguridad).

Hay algunas distribuciones de la comunidad que tardan un poco más en pasar a una nueva versión del kernel, pero eventualmente llegan y admiten el kernel que funciona bastante bien. También son geniales para usar y actualizar, y ejemplos de estos son Debian y Ubuntu.

El hecho de que no haya enumerado su distribución favorita aquí no significa que su kernel no sea bueno. Busque en el sitio web la distribución y asegúrese de que el paquete kernel se actualice constantemente con los parches de seguridad más recientes, y todo debe estar bien.

A mucha gente parece gustarle el viejo modelo “tradicional” de distribución y uso RHEL, SLES, CentOS o el lanzamiento de Ubuntu “LTS”.

Esas distribuciones eligen una versión de kernel específica y luego acampan en ella durante años, si no décadas.

Hacen un montón de trabajo respaldando las últimas correcciones de errores y, a veces, nuevas características de estos kernels, todo en una búsqueda de Quixote para evitar que el número de versión se modifique, a pesar de tener muchos miles de cambios sobre esa versión anterior del kernel.

Este trabajo es realmente un trabajo ingrato, y los desarrolladores asignados a estas tareas hacen un trabajo maravilloso para lograr estos objetivos.

Si te gusta no ver nunca el número de versión de tu kernel, utiliza estas distribuciones. Por lo general, cuestan algo de dinero para usarlas, pero el apoyo que recibe de estas empresas lo vale cuando algo sale mal.

Entonces, de nuevo, el mejor kernel que puede usar es uno que otra persona apoya, y puede buscar ayuda. Use ese soporte, generalmente ya está pagando por él (para las distribuciones de la empresa), y esas empresas saben lo que están haciendo.

Pero, si no quiere confiar en que otra persona administre su kernel, o si tiene hardware que una distribución no admite, entonces debería ejecutar la última versión estable:

Última versión estable

Este kernel es el último de la comunidad de desarrolladores de Kernel de Linux que declaran como “estable”.

Aproximadamente cada tres meses, la comunidad lanza un nuevo kernel estable que contiene todo el soporte de hardware más nuevo, las últimas mejoras de rendimiento, así como las últimas correcciones de errores para todas las partes del kernel.

En los próximos 3 meses, las correcciones de errores que se incluyen en la próxima versión del kernel que se realizará serán transferidas a esta versión estable, para que los usuarios de este kernel las obtengan lo antes posible.

Este suele ser el kernel que la mayoría de las distribuciones de la comunidad utilizancen también, por lo que puede estar seguro de que está probado y tiene una gran audiencia de usuarios.

Además, la comunidad Kernel (los más de 4000 desarrolladores) está dispuesta a ayudar a los usuarios de esta versión, ya que es la más reciente que crearon.

Después de 3 meses, se lanza un kernel nuevo y debe moverse hacia él para asegurarse de estar al día, ya que el soporte para este kernel generalmente se descarta unas semanas después de que ocurre la versión más reciente.

Si tiene un hardware nuevo comprado después de que salió la última versión de LTS, casi tiene la garantía de tener que ejecutar este kernel para que sea compatible.

Por lo tanto, para los escritorios o los servidores nuevos, este suele ser el kernel recomendado para ejecutar.

La última versión de LTS

Si su hardware depende de un parche fuera de árbol de proveedores para que funcione correctamente (como casi todos los dispositivos incorporados en la actualidad), entonces el siguiente mejor núcleo para usar es la última versión de LTS.

Esa versión obtiene todas las últimas correcciones del kernel que se incluyen en las versiones estables cuando corresponde, y muchos usuarios las prueban y usan.

Tenga en cuenta que nunca se agregan nuevas características y casi ninguna nueva compatibilidad de hardware a estos kernels, por lo que si necesita usar un nuevo dispositivo, es mejor usar la última versión estable, no esta versión.

Además, esta versión es común para usuarios a los que no les gusta preocuparse por las actualizaciones “importantes” que se realizan cada 3 meses. Por lo tanto, se mantienen fieles a este lanzamiento y actualizan cada año, lo cual es una buena práctica a seguir.

Las desventajas de usar esta versión es que no obtiene las mejoras de rendimiento que suceden en los kernels más nuevos, excepto cuando se actualiza al próximo kernel LTS, posiblemente en un período de una año.

Eso podría ser significativo para algunas cargas de trabajo, así que sea muy consciente de esto.

Además, si tiene problemas con esta versión del kernel, lo primero que cualquier desarrollador a quien le informe sobre el problema le va a pedir que haga es: “¿tiene este problema la última versión estable?”. Por lo tanto, deberá tener en cuenta ese soporte puede no ser tan fácil de conseguir como con las últimas versiones estables.

Ahora, si tiene un patchset grande y no puede actualizar a un nuevo kernel LTS una vez al año, tal vez quiera las versiones anteriores de LTS:

El lanzamiento más viejo del kernel LTS

Estas versiones han sido tradicionalmente respaldadas por la comunidad durante 2 años, a veces más tiempo para cuando una distribución importante se basa en esto (como Debian o SLES).

Sin embargo, en el último año, gracias a una gran cantidad de apoyo e inversión en pruebas e infraestructura de Google, Linaro, las empresas miembro de Linaro, kernelci.org y otros, estos núcleos están comenzando a admitirse por mucho más tiempo.

Aquí están los últimos lanzamientos de LTS y por cuánto tiempo serán admitidos, como se muestra en http://kernel.org/category/releases.html el 26 de agosto de 2018:

La razón por la cual Google y otras compañías quieren tener estos kernels por más tiempo se debe al modelo de desarrollo loco (algunos dirán roto) de casi todos los chips SoC actualmente.

Esos dispositivos inician su ciclo de vida de desarrollo unos años antes de que se libere el chip, sin embargo, ese código nunca se fusiona en sentido ascendente, lo que da como resultado la publicación de un nuevo chip basado en un núcleo de 2 años.

Estos árboles SoC suelen tener más de 2 millones de líneas agregadas a ellos, lo que los convierte en algo que he comenzado a llamar núcleos “similares a Linux”.

Si los lanzamientos de LTS dejan de suceder después de 2 años, el soporte de la comunidad se detiene instantáneamente, y nadie termina haciendo correcciones de errores para ellos.

Esto da como resultado millones de dispositivos muy inseguros que flotan en el mundo, no algo que sea bueno para ningún ecosistema.

Debido a esta dependencia, estas empresas ahora requieren nuevos dispositivos para actualizar constantemente a las últimas versiones de LTS a medida que suceden para su versión de lanzamiento específica (es decir, cada versión 4.9.y que suceda).

Un ejemplo de esto son los requisitos del núcleo de Android para los nuevos dispositivos que actualizan para la “O” y ahora las versiones “P” especificaron la versión mínima del kernel permitida, y las versiones de seguridad de Android podrían comenzar a requerir que esas versiones “.y” ocurran con mayor frecuencia en los dispositivos.

Notaré que algunos fabricantes ya están haciendo esto hoy. Sony es un gran ejemplo de esto, actualizándose al último lanzamiento 4.4.y en muchos de sus nuevos teléfonos para su lanzamiento de seguridad trimestral.

Otro buen ejemplo es la pequeña compañía Essential que ha estado siguiendo las versiones 4.4.y más rápido que cualquiera que yo sepa.

Hay una gran advertencia al usar un kernel como este. La cantidad de soluciones de seguridad que se respaldan no es tan buena como con la última versión de LTS, porque el modelo tradicional de los dispositivos que usan estos núcleos LTS antiguos es un modelo de usuario mucho más reducido.

Estos kernels no se deben usar en ningún tipo de modelo de “computación general” en el que haya usuarios o máquinas virtuales que no sean de confianza, ya que la capacidad de aplicar algunos de los arreglos recientes del tipo Spectre para versiones anteriores se reduce enormemente, si está presente en algunas ramas

Así que de nuevo, solo use versiones anteriores de LTS en un dispositivo que controle completamente o bloquee con un modelo de seguridad muy sólido (como Android exige el uso de SELinux y el aislamiento de aplicaciones).

Nunca use estas versiones en un servidor con usuarios, programas o máquinas virtuales que no sean de confianza.

Además, el soporte de la comunidad para estas versiones anteriores de LTS se reduce en gran medida incluso de las versiones normales de LTS, si es que están disponibles.

Si usa estos núcleos, realmente está solo, y necesita ser capaz de soportar el kernel por su cuenta, o puede confiar en que su proveedor de SoC le proporcionará ese soporte (tenga en cuenta que casi ninguno brinda ese soporte, así que tenga cuidado …)

Lanzamientos de kernels no mantenido

Sorprendentemente, muchas compañías simplemente toman una versión aleatoria del núcleo, la introducen en su producto y lo envían en cientos de miles de unidades sin pensarlo dos veces.

Un ejemplo loco de esto serían los sistemas Lego Mindstorm que enviaron una versión aleatoria de un Kernel en su dispositivo por algún motivo desconocido. Una versión de CR es una versión de desarrollo que ni siquiera los desarrolladores del kernel de Linux están listos para que todos la usen todavía, y mucho menos millones de usuarios.

Por supuesto, puede hacerlo si lo desea, pero tenga en cuenta que realmente está solo aquí. La comunidad no puede apoyarlo ya que nadie está mirando todas las versiones del núcleo para problemas específicos, por lo que tendrá que confiar en el soporte interno para todo lo que pueda salir mal. Lo cual para algunas compañías y sistemas, podría estar bien, pero tenga en cuenta el costo “oculto” que esto podría causar si no planifica esto por adelantado.

Resumen

Entonces, aquí hay una breve lista de diferentes tipos de dispositivos, y lo que recomendaría para sus kernels:

  • Laptop/Escritorio: la última versión estable
  • Servidor: la última versión estable o la última versión de LTS
  • Dispositivo integrado: versión más reciente de LTS o versión anterior de LTS si el modelo de seguridad utilizado es muy sólido y ajustado.

Y en cuanto a mí, ¿qué manejo en mis máquinas? Mis computadoras portátiles ejecutan el kernel de desarrollo más reciente (es decir, el árbol de desarrollo de Manjaro)  y mis servidores ejecutan la última versión estable.

Confío en el desarrollo y las últimas versiones estables para garantizar que mis máquinas estén ejecutando las versiones más rápidas y seguras que sabemos cómo crear en este momento.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.