Tras algunas actualizaciones se nos puede instalar un nuevo kernel (núcleo) de Linux a una versión más moderna. Tras reiniciar habréis comprobado que en el grub os aparecen varias entradas de distintos kernels, esto es debido a que el kernel no se actualiza tal cual, sino que nos instala una nueva versión conservando la antigua.
Si lleváis mucho tiempo con el mismo sistema y habéis actualizado el kernel varias veces tendréis una lista bastante larga en el grub, algo que puede resultar molesto. ¿Queréis eliminar las versiones antiguas?
Antes de comenzar |
He de avisaros que para los novatillos es recomendable tener al menos dos versiones distintas instaladas, la más actual que se nos haya podido instalar ayer mismo, y la previa que usábamos hasta entonces. El motivo es simple: si por cualquier circunstancia nos cargamos el último kernel (que normalmente es el que usaréis), siempre tendréis el previo disponible para iniciar el ordenador y enmendar el error.
Los usuarios medios o avanzados que se vean con conocimientos suficientes para enfrentar esa posible situación, pueden quedarse con uno sólo si así lo desean, o bien ocultar la versión previa como os mostraré al final.
Eliminar kernel antiguo |
Es sencillo. Vamos a la consola y buscamos los kernels que tenemos instalados:
$ sudo dpkg -l | grep linux-image
Nos saldrá una lista parecida a esta (según vuestro sistema operativo x86, 64bits, versión del kernel…):
linux-image-2.6.20-15-generic
linux-image-2.6.20-16-generic
linux-image-generic
He acortado la salida, os saldrá también la versión completa (junto con su revisión) y una breve descripción, por cada paquete. Bien, ahora vamos a desinstalar el kernel 2.6.20-15 que es el más antiguo:
$ sudo aptitude purge linux-image-2.6.20-15-generic
Recordad que tenéis el tabulador para que os vaya complementando el nombre, acostumbraros a usarlo pues es muy práctico en el uso de la consola.
Ahora vamos a desinstalar las cabeceras del kernel eliminado. Al igual que antes vemos cuales tenemos instaladas:
$ sudo dpkg -l | grep linux-headers
Y nos dará una salida similar a esta (salvando versiones como comenté antes):
linux-headers-2.6.20-15
linux-headers-2.6.20-15-generic
linux-headers-2.6.20-16
linux-headers-2.6.20-16-generic
linux-headers-generic
Vemos que tenemos dos paquetes por cada versión, pero sólo desinstalaremos uno, el otro se desinstalará sólo al ser dependiente del primero:
$ sudo aptitude purge linux-headers-2.6.20-15
Una vez hecho esto, se habrá eliminado automáticamente del grub las dos entradas que correspondían a la versión 2.6.20-15 del kernel.
Como siempre todo esto podéis hacerlo también gráficamente. El proceso es el mismo pero usando Synaptic. Buscáis los nombres que os he indicado (linux-image y linux-headers) y os aparecerá con un cuadro en verde los instalados. Os fijáis en la versión y desinstaláis la que queráis.
Ocultar la kernel antiguo del menú de grub sin desinstalarlo |
Esta es una buena alternativa para los que sólo queráis el último kernel en el menú de grub y a la vez queráis conservar el antiguo por si hay algún problema con el más nuevo.
Abrid con derechos de administrador el archivo /boot/grub/menu.lst, bien sea con «Alt+F2» y tecleando dentro «gksu gedit /boot/grub/menu.lst» o bien desde consola:
$ sudo gedit /boot/grub/menu.lst
Ahora iros al final del fichero e id subiendo. Veréis que están las distintas entradas que os aparece en el menú ordenadas en secciones. Buscad las dos que contienen la versión del kernel que queréis ocultar. Siguiendo con el ejemplo sería la 2.6.20-15. Podréis identificarlo porque dicha versión aparece en el title, kernel e initrd.
Una vez localizadas las dos secciones, ponemos una almohadilla (#) al comienzo de cada línea de cada sección. Os quedará algo parecido a esto:
#title Ubuntu, kernel 2.6.20-15-generic
#root (hd0,1)
#kernel /boot/vmlinuz-2.6.20-15-generic
#root=UUID=......
#initrd /boot/initrd.img-2.6.20-15-generic
#title Ubuntu, kernel 2.6.20-15-generic (recovery mode)
#root (hd0,1)
#kernel /boot/vmlinuz-2.6.20-15-generic
#root=UUID=......
#initrd /boot/initrd.img-2.6.20-15-generic
Lo que hemos hecho es comentarlo para que grub no lo interprete y no lo muestre. Cuando lee estas líneas y ve la almohadilla, pasa automáticamente a la siguiente, no lo considera como parte del «código«.
Si algún día os cargáis el kernel actual y queréis iniciar este otro que está oculto, tan sólo tenéis que iniciar con un Live CD, montar la partición y quitar las almohadillas para que vuelva a aparecer en el grub la próxima vez que iniciéis el ordenador.
Más tips entre tuxes y pepinos |
no lo he leido entero pero en ubuntu feisty son 4 paquetes por kernel y solo hablar del nucleo y los headers, faltan los restricted por ejemplo que los usa muchisima gente
Buenas marcgenou.
Los «restricted» son dependientes del «image». Cuando haces el «aptitude purge» los primeros se eliminarán junto a los segundos, y si no me equivoco con Synaptic también, por lo que no hace falta ir uno por uno. Los «headers» sin embargo sí hay que hacerlo aparte.
Saludos.
Me resulta útil, yo de tantos kernels que tengo ya no veo ni el Windows en la pantalla del grub… ups, se me ha escapado que también tengo Windows 😉
Que grande… todo muy bien, excelente tio!
Buenas… como actualizo el kernel?
al hacer un uname -r me dice
2.6.20-16-generic
entre en la pagina http://www.kernel.org/
y baje 2.6.22-rc6-mm1.bz2
me conviene actualizar el kernel?
El kernel se actualiza sólo mediante las actualizaciones automáticas (te avisará al lado del reloj) o bien mediante un «sudo aptitude upgrade» en consola. Una vez bajado te pedirá que reinicies.
Saludos.
Hola, he hecho lo que dices y me sale un mensaje diciendo que el directorio /lib/modules/2.6.10-5-386 no está vacío. Dentro de dicho directorio sólo hay un archivo llamado modules.seriomap. ¿Se puede borrar? Gracias y felicidades por el blog.
Hola Jose.
¿En qué momento exactamente te da ese mensaje?
Saludos.
Hola a todos,
me sale el mismo mensaje que a Jose, pero a mi con el kernel linux-image-2.6.22-14-generic
C&P:
…
Updating /boot/grub/menu.lst … done
rmdir: No se pudo eliminar `/lib/modules/2.6.22-14-generic’: El directorio no está vacío
dpkg – atención: al desinstalar linux-image-2.6.22-14-generic, el directorio /lib/modules/2.6.22-14-generic/kernel/drivers/char/drm’
no está vacío, no se borra.
dpkg – atención: al desinstalar linux-image-2.6.22-14-generic, el directorio /lib/modules/2.6.22-14-generic/kernel/drivers/char’
no está vacío, no se borra.
dpkg – atención: al desinstalar linux-image-2.6.22-14-generic, el directorio /lib/modules/2.6.22-14-generic/kernel/drivers’
no está vacío, no se borra.
dpkg – atención: al desinstalar linux-image-2.6.22-14-generic, el directorio /lib/modules/2.6.22-14-generic/kernel’
no está vacío, no se borra.
dpkg – atención: al desinstalar linux-image-2.6.22-14-generic, el directorio /lib/modules/2.6.22-14-generic’
no está vacío, no se borra.
…
Sospecho que es debido a que se recompiló el kernel al instalar los drivers de algunos componentes como la tarjeta gráfica nvidia… y creo que no pasa nada por borrarlos, ya que no voy a volver a usar el kernel que estoy eliminando, pero me gustaría contrastar.
Gracias y un saludo
Si el driver que necesitas ya está compilado y funcionando con el kernel que usas normalmente, puedes borrar sin miedo el otro.
Saludos.
[…] este sencillo tip que he leido en Entre Tuxes y Pepinos sera pan comido eliminas u ocultar las versiones del kernel que no nos interese tener (recuerda, yo […]
HOla ceec. el borrar versiones antiguas de kernel, ¿implica liberar espacio significativo en disco rígido?
saludos.
Perdón por la reiteración. Pregunté antes de realizar esta tarea y luego de hacerla me doy cuenta que sí se libera espacio significativo en el disco. Mi nueva pregunta es: al aceptar esta «desinstalación» de kernel antiguo me pregunta «si, no, cancelar» o algo así, pero también coloca una puntuación. ¿a qué se refiere la puntuación esta?
Hola feryx.
Es la proposición de resolución de dependencias. Si estás seguro que estás eliminado el kernel que quieres desinstalar, simplemente dile que sí.
Saludos.
lo único malo es que ahora vuelvo a ver a windows en mi GRUB :@
Gracias Ceec. Ya tengo mi grub andando a mil!!!
[…] el que te funciona bien y cuando hagas una actualizacin te fijas para no volver a instalarlo … Tip: Eliminar un kernel antiguo Entre tuxes y pepinos pd: me sorprende que le quieras dar soporte a un ubuntu user… jajajaja… chao enfermo […]
Una pregunta por interes, despues de borrarme el kernel mas antiguo, cuando voy a borrar las cabeceras del kernel, no estan, solo aparecen las del kernel que deje, es normal?
PD: Uso Ubuntu 9.04
PD2: Deje los dos kernel’s mas nuevos, esto no tiene nada q ver, solo lo puse y ya!
PD3: No me baneen por la PD2.
Grax amigo, excelente tu blog, me gusta mucho.
No sé desde qué versión pero creo que al borrar el kernel ahora también se borran las cabeceras automáticamente.
En la versión 10.04 hay que desistalar a mano tanto ‘image’ como ‘headers’
Contestando a «darkmaster4130», la primera imagen de kernel (la mas antigua), no tiene headers porque por defecto, cuando instalas ubuntu, no las incluye.
¿Cómo sé cuál kernel se está usando? Tengo varias versiones y la que acabo de actualizar fue ii linux-image-2.6.35-24-generic.
Las otras que me aparecen son:
rc linux-image-2.6.32-21-generic
rc linux-image-2.2.32-25-generic
rc linux-image-2.6.32-26-generic
ii linux-image-2.6.35-23-generic
Un punto importante es que la anterior versión del kernel antes de actualizar fue la 2.6.35-23-generic
Debo desinstalar todas las que me aparecen? (Claro, sin desinstalar la actualizada)
gracias sirvió al pelo!! jejejej buen blog 😉
linux se la come doblada
Hola a todos!!…….tengo Ubuntu 10.04 con las ultimas actualizaciones del kernel hasta la fecha de hoy y he hecho todos los pasos para eliminar mis antiguos kernels de mi grub………….pero no ha funcionado, sigo viéndolos al reiniciar el sistema(aunque parece que si se desinstalaron del disco duro)……después quise ocultarlos en la lista del grub……pero no encuentro el dichoso archivo menu.lst dentro de la carpeta Grub………..así que tampoco pude ocultarlos 😦
Alguien sabe por que ocurre esto?…….. por cierto soy novata en Ubuntu pero aprendo bien rápido. 🙂
[…] del siguiente paso te recomiendo que leas: Ocultar la kernel antiguo del menú de grub sin desinstalarlo para prevenir posibles borrados accidentales del kernel que te funcionaba […]
[…] del siguiente paso te recomiendo que leas: Ocultar la kernel antiguo del menú de grub sin desinstalarlo para prevenir posibles borrados accidentales del kernel que te funcionaba […]