Por qué no actualizo el kernel de Ubuntu

Aprovechando que llueve a mares en este viernes, el peque está en el cole y mi mujer ejerciendo de madre/profesora de apoyo – nueva figura propiciada por los recortes en materia de Educación en esta caricatura de país que llamamos España – me he propuesto explicar el motivo por el cual no tengo a bien actualizar el kernel de mi Ubuntu Precise a uno más moderno. El artículo lleva algún tiempo en el tintero de temas futuribles, y tras leer la acertada reflexión del blog de Yoyo, con la que no creo que haga falta puntualizar que estoy totalmente de acuerdo, me ha parecido un buen momento para tratar el asunto.

Empecemos por el resultado que arroja el comando “uname -r” en mi sistema: 3.2.0-58-generic. El primer y más importante motivo por el que me mantengo en esta versión tan antigua – que enseguida veremos que no lo es tanto – es que FUNCIONA. Así, en mayúsculas, funciona y lo hace realmente bien. El sistema va fluido y rápido, de modo que lo más sensato es atender a la máxima que tan a menudo se nos olvida y que nos recordaba Juan Carlos Senar en los comentarios de un artículo anterior: “si no esta roto, no lo arregles”. Y en mi caso, no solo no está roto, sino que me permite hacer mis tareas cotidianas perfectamente, amén de algunas otras que demandan más recursos, como jugar alguna partida a Left 4 Dead 2, Steam mediante, sin molestos “lags” ni problema alguno que reseñar.

Obviamente, de presentar algún tipo de problema ya me habría planteado actualizar. O algo peor, tan saturado como estoy a estas alturas de practicar distro hopping… Ahora bien, esto no ocurre por casualidad. Si bien el kernel 3.2.0 fue lanzado allá por los albores de 2012, lo que en Informática lo convierte automáticamente en obsoleto, debemos prestar atención a ese último numerito: el 58. Canonical no solo da soporte al kernel 3.2, considerado LTS (soporte a largo plazo), hasta Abril de 2017, sino que lo va mejorando e incorporando parches (imagino que tomados de versiones más nuevas del kernel), para aumentar el rendimiento, corregir vulnerabilidades y ampliar el reconocimiento de hardware a nuevos dispositivos.

Para entendernos: no estamos usando un kernel de enero de 2012. Usamos la base de dicho kernel, estable y sólido, escogido, además de por Canonical, por Debian y Slackware como núcleo de las últimas versiones de sus distribuciones. Y, sobre esa base que proporciona estabilidad, nos beneficiamos de los parches añadidos que mejoran el rendimiento. Por esta razón, no veo preciso actualizar el kernel de mi sistema.

Esos son mis únicos motivos, pero hay quien va más allá. El mes pasado encontré una opinión que, aunque apunta en el mismo sentido, incide en otro aspecto que considera importante: no todo el mundo está capacitado para actualizar el kernel y resolver las posibles consecuencias negativas que se pueden derivar de dicha acción. El artículo se refiere a Elementary OS, pero es perfectamente extendible a Ubuntu, no en vano la primera se basa en la versión LTS de la segunda. Es un artículo de Sergey “Shnatsel” Davidoff titulado “Por qué NO debes actualizar el kernel de Elementary OS Luna (y cómo hacerlo bien si no tienes más remedio)“, que os traduzco a continuación:


Comenzaré con una introducción. He trabajado como desarrollador de Elementary Luna, siendo requerido por el resto de desarrolladores para explicar por qué no se debe tocar el kernel, y cómo hacerlo bien cuando no queda más remedio.


No creas todo lo que se publica
Me han pedido que escriba esto porque ha habido un frenesí de artículos muy peligrosos últimamente sobre “Actualizar tu kernel en Luna”. Los métodos que se describen permitirían a un atacante tomar el control completo de tu sistema de modo furtivo en el momento de actualizar. Dichos métodos, además, te dejarían sin actualizaciones de seguridad, por no mencionar que supondrían una ruleta rusa, en términos de estabilidad y desempeño.

Si te topas con un artículo que menciona “wget” o “mainline kernel ppa”, pídele al autor que lo retire de inmediato, y dile de mi parte que, o bien es un incompetente o un capullo que debería mantenerse alejado de la tarea de escribir tutoriales.


(De hecho, puedes pedirle que retire cualquier artículo referido a actualizaciones del kernel y las reemplace con un enlace a este artículo, ya que no vas a necesitar ningún otro artículo sobre actualizaciones del kernel).


El kernel no es un juego
El kernel es, probablemente, la pieza fundamental del software de un sistema operativo. A menos que sepas realmente lo que haces (es decir, lo opuesto a seguir una guía cualquiera en Internet), no le metas mano. En serio. Estás subestimando la complejidad de la tarea.

¿Te crees lo suficientemente hábil con la tecnología como para atreverte con el kernel? ¡Ja! Coño, yo soy el principal desarrollador del sistema operativo, estoy escribiendo pruebas de regresión para el kernel (en colaboración con el equipo del kernel de Ubuntu), y ni siquiera yo estoy capacitado para tocar el kernel. Nadie lo está, excepto puede que alguno de sus mantenedores con mayor nivel de conocimientos, como el propio Linus. No es una tarea que una sola persona pueda llevar a cabo con éxito. Se necesita un equipo de profesionales dedicados a ello y un montón de recursos, como ocurre en Ubuntu o en Red Hat.


Y, bueno, si piensas que nuestro kernel “3.2” es viejo, te equivocas. Ubuntu 12.04 LTS y Elementary OS tienen un kernel derivado del 3.2, pero con un montón de elementos incorporados de kernels posteriores. Los cambios giran, en su mayoría, alrededor de la corrección de errores y el soporte de hardware.


Pero, y esto es lo más importante, nuestro kernel de base es estable comparado con los nuevos. No completamente estable, lo advierto, de lo contrario no estaría escribiendo pruebas de regresión, pero aún así supone una ventaja considerable. Y la estabilidad es preferible al rendimiento siempre. Así es. Créeme, yo también he sufrido desilusiones a este respecto.


Cuando no te queda más remedio…
Por desgracia, no todo el soporte de hardware puede hacerse mediante “backports” y no todo el hardware funcionará “out-of-the-box” en Luna, al igual que nuestro kernel base no es perfectamente estable en todo el hardware que existe. Así que hay unos pocos casos en los que una actualización del kernel puede ser necesaria, pero nunca cuando tienes un sistema que funciona.


Debes considerar la posibilidad de actualizar el kernel solamente si experimentas varios problemas graves relacionados con el kernel, como “kernel panics“, o cuando tu sistema no inicia después de la instalación. ¡El “rendimiento” no es una excusa, lee más arriba!

Si realmente no te queda otra que actualizar el kernel, simplemente ejecuta “sudo apt-get install linux-generic-lts-saucy” y reinicia. Eso es todo. ¡No necesitas ninguna guía!

Si el kernel actualizado se comporta incluso peor que el de base, puedes iniciar con un kernel antiguo escogiéndolo en el cargador de arranque. Mantén pulsada “Mayúsculas” al inicio del proceso de arranque en caso de que dicha opción no aparezca.


Para eliminar el kernel que has instalado, ejecuta “sudo apt-get purge linux-generic-lts-saucy” mientras estás usando el kernel antiguo, lee más arriba. ¡Eliminar un kernel cuando se está usando no me funcionó la última vez que lo intenté! (sí, mi labor incluye hacer cosas así de raras).


¡¡¡No a la información errónea!!!

El autor termina su artículo recomendando enlazarlo y revisarlo de vez en cuando en busca de actualizaciones. Igualmente pide que si alguien tiene alguna duda la publique en los comentarios, con objeto de poder responderle directamente. Dichos comentarios incluyen alguna que otra observación a sus palabras, tachadas por algunos de tremendistas. En lo personal no he tenido excesivos problemas cuando me ha dado por actualizar el kernel (lo hice cuando tuve instalado Elementary OS en el portátil, precisamente). Al menos, que yo sepa, pues su comentario referente al “atacante malicioso” que toma control del sistema me ha dejado poco menos que perplejo.

En cualquier caso, en lo que a mí respecta, la complejidad de la tarea no parece tanta como para generar tal alarma. De hecho, me da la impresión de que se equipara el simple acto de instalar un kernel con compilarlo, o programar parches para él… Pero claro, queda la duda, igual creo saber más de lo que realmente sé, y todo lo expuesto por el señor Davidoff es rigurosamente cierto. Como de costumbre, os invito a la reflexión y al comentario crítico, faltaría más. ¿Este hombre exagera hasta el punto de pretender que se debe ser el mismísimo Linus Torvalds para instalar un kernel? ¿O, tal vez, no exagera en absoluto? Habemus debate.

Anuncios