¿Por qué no es seguro eliminar los núcleos antiguos?

36

Me he quedado sin espacio en mi unidad de arranque, así que decidí eliminar los núcleos antiguos. Encontré esta página que describe exactamente lo que debo hacer: Documentación de Lubuntu: Eliminar kernels viejos .

He eliminado el kernel más antiguo manualmente y ahora está bien, pero no entiendo una cosa: al final del artículo hay un código que puede eliminar todas las versiones antiguas del kernel, pero está marcado como solo para usuarios avanzados.

Realmente no entiendo cuál es el peligro aquí. Suena tonto, pero parecen decir que podría haber más de un núcleo utilizado por una máquina específica al mismo tiempo.

¿Es posible que diferentes aplicaciones en mi máquina Ubuntu puedan usar diferentes núcleos simultáneamente? ¿Por qué eliminar automáticamente todos los núcleos antiguos se considera peligroso?

Sergei
fuente
8
En realidad, el artículo no contiene las palabras "peligro" e "inseguro". ¿Cómo llegaste a una conclusión tan exagerada?
mikewhatever
2
Un par de veces me actualicé al kernel más reciente y eliminé mi kernel anterior antes de reiniciar, solo para descubrir que (en mi sistema en particular) el kernel no funcionaba y el sistema no arrancaba. Ahora hago el reinicio primero y luego elimino el núcleo antiguo si todo está bien.
Mateo leyó el

Respuestas:

50

Eliminar los núcleos antiguos no es inherentemente inseguro, pero si elimina todos los núcleos y reinicia, se quedará en una pantalla enojada de Grub. Arreglo que requiere un know-how significativo (así, pero con un apt-get install linux-generical final).

La primera vez que haces esto es bastante emocionante, pero las personas que buscan limpiar su menú Grub o recuperar algo de espacio en disco no buscan emociones.

El peligro proviene de que los usuarios copien y peguen un bloque de código que, sin que ellos lo sepan y sin reconocer los riesgos, no se aplique. Hay muchos ejemplos de detección de núcleos antiguos y pocos son perfectos. Incluso mi último esfuerzo todavía tiene sus trampas. Y estamos hablando de un problema que se puede solucionar; muchas publicaciones en Ask Ubuntu podrían conducir a la pérdida permanente de datos si se usan incorrectamente.

Intentamos protegernos contra daños señalando el riesgo para que los usuarios sean conscientes de los posibles problemas . En el mejor de los casos, el usuario estará preparado y equipado para enfrentar un problema y, en el peor de los casos, al menos no puede quejarse de que no se le advirtió.

Oli
fuente
11
No elimine todos los núcleos (obviamente), pero tampoco elimine el núcleo que se está ejecutando actualmente si acaba de instalar un núcleo actualizado y aún no ha reiniciado. ¿Por qué? Si algo se rompe en el núcleo actualizado, siempre puede seleccionar su núcleo anterior en Grub y volver a trabajar. De lo contrario, se quedará atascado con un sistema que no se puede iniciar y tendrá que jugar el "juego LiveCD" (no es un juego divertido, por cierto).
Nathan Osman
1
Eso es casi tan divertido como dd if=/dev/zero of=/dev/sda bs=512 count=1. No recuerdo lo que estaba tratando de hacer (algo sobre los múltiples gestores de arranque que me hacen la vida molesta). Pasé unas siete horas con un LiveCD tratando de reparar mis tablas de partición.
phyrfox
1
Es así de fácil, mantenga (al menos) un kernel que esté probado y que definitivamente funcione. Alguien, @NathanOsman, tuvo que ponerlo en palabras, supongo. Segunda lección importante aprendida aquí, no hagas cosas de las que no sepas las consecuencias.
Nicolai
1
No usaría la palabra "emocionante", pero la sensación fue intensa cuando lo hice.
MDeBusk
Habiendo solucionado los problemas del kernel en el pasado, estoy mucho más feliz de dejar tres kernels. En general, elijo el kernel que se está ejecutando actualmente, el kernel más nuevo y el que está justo antes del actual. Esto me da lo último en reinicio, el que se sabe que funciona y el anterior si eso falla por alguna razón. Probablemente sea exagerado, pero está aprobado por CYA.
flickerfly
4

Los viejos núcleos son parte de los paquetes. Si solo quitas /boot/vmlinuz-3.13.0-44-generic, dejarás migas de paquete por todas partes.

Primero, averigüe qué núcleo está ejecutando. NO elimine nada con este valor es su nombre:

$ uname -r  
3.13.0-49-generic  

YMMV. Luego, pregunte dpkgqué sabe:

$ dpkg -l linux-*

Algunos de esos paquetes se pueden eliminar, pero ¿qué más hay? Usando una línea extraída (en MI sistema) de la salida de dpkg -l linux-*:

 ii  linux-image-3.13.0-44-generic       3.13.0-44.73           amd64                  Linux kernel image for version 3.13.0 on 64 bit x86 SMP

Ahora veremos qué otros paquetes tienen -3.13.0-44en sus nombres:

$ dpkg -l *-3.13.0-44*

Una vez que realice una verificación final para asegurarse de que el kernel actual ( uname -r) NO esté en la lista de paquetes, puede comenzar a eliminarlos a través del sistema de administración de paquetes que elija.

Waltinator
fuente
0

La última vez que eliminé mis núcleos antiguos, tomé prestado un fragmento de código antiguo. Bueno, este fragmento de código me había requerido reiniciar después de instalar el nuevo núcleo, así que me quedé sin un núcleo. Afortunadamente, había captado esto antes de reiniciar, pero como otros dijeron, es posible que me haya quedado con la "pantalla de comida enojada".

En pocas palabras, es simplemente algo que se puede estropear fácilmente, lo que resulta en un sistema bloqueado que puede ser difícil de recuperar.

alfonsojon
fuente
0

No es inseguro. Con Linux, puede hacer exactamente lo que quiera si conoce los comandos correctos.

En el /bootdirectorio, puede hacer un simple ls -lapara tener una lista larga, así como para encontrar los archivos o directorios ocultos (que no se supone que estén allí si hay alguno !!).

A partir de esta información, puede evaluar las fechas y los archivos de las versiones anteriores. No elimine todos ellos, sino los archivos más antiguos que corresponden a la misma versión.

En algún momento, estaba pensando que podría ser posible que, si compiló su núcleo desde la fuente, necesitara modificar uno nuevo. El .configarchivo, que no creo que sea el caso según su explicación, permanecerá allí.

Entonces, si sucede que después de eliminar los archivos antiguos correspondientes a una única versión y después de reiniciar su máquina, es posible que encuentre un kernel panic.

La solución simple es arrancar la máquina con un USB en vivo o un CD / DVD Linux. chrooten él, y reconstruir el núcleo con herramientas como dracut.

Nitin J Mutkawoa
fuente