Supprimer les nouveaux noyaux / démarrage complet

8

Nous avons des serveurs Ubuntu 16.04. unattended-upgradessont automatiquement activés depuis 16.04 et la partition de démarrage se trouve sur une partition distincte. En raison des mises à jour de sécurité automatiques, la partition de démarrage manque d'espace avec de nouveaux noyaux.

Nous ne pouvons pas simplement redémarrer les systèmes, donc la machine utilise toujours l'avant-dernier noyau.

Quels noyaux dois-je retirer? Tout sauf le courant, le plus ancien et le plus récent?

Avez-vous des recommandations?

J'ai également remarqué que le dernier noyau a le statut "Half Configured". Ce noyau ne fonctionnerait probablement pas, je devrais donc supprimer celui-ci et utiliser un noyau plus ancien.

Sortie de dpkg -l | grep linux image:

    ii  linux-image-4.4.0-21-generic --> old kernel
    ii  linux-image-4.4.0-34-generic --> current kernel
    ii  linux-image-4.4.0-36-generic --> new kernel
    ii  linux-image-4.4.0-38-generic --> new kernel
    ii  linux-image-4.4.0-42-generic --> new kernel
    ii  linux-image-4.4.0-45-generic --> new kernel
    ii  linux-image-4.4.0-47-generic --> new kernel
    ii  linux-image-4.4.0-51-generic --> new kernel
    ii  linux-image-4.4.0-53-generic --> new kernel
    iF  linux-image-4.4.0-57-generic --> new kernel
user83026
la source

Réponses:

7

Pour purger l'ancien noyau, vous pouvez utiliser l' purge-old-kernelsoutil de ligne de commande.

Ce programme supprimera les anciens paquets de noyau et d'en-tête du système, libérant ainsi de l'espace disque. Il ne supprimera jamais le noyau en cours d'exécution. Par défaut, il conservera au moins les 2 derniers noyaux, mais l'utilisateur peut remplacer cette valeur à l'aide du paramètre --keep. Tous les paramètres supplémentaires seront transmis directement àapt-get

Pour installer purge-old-kernels, exécutez:

sudo apt install byobu

ou

sudo apt install bikeshed

Pour conserver la dernière nexécution du noyau:

sudo purge-old-kernels --keep n

e, g: n = 2

sudo purge-old-kernels --keep 2

Mise à jour grub:

sudo update-grub
GAD3R
la source
2
byobuest probablement le paquet que vous voulez pour 16,04 Xenuial: purge-old-kernelsse est passé de bikeshedà byobuquelque temps entre Trusty et Xenial, mais bikeshedrecommande maintenant de byobusorte que vous aurez toujours le programme à moins que vous n'avez pas-install-recommande.
Wolfgang
4

Pour Ubuntu, Grub2 affiche automatiquement le dernier noyau et masque les noyaux plus anciens. Si vous voulez les voir, vous pouvez appuyer sur Shift pendant le démarrage.

Donc, avant de supprimer les noyaux plus anciens, démarrez avec le dernier noyau disponible (grub2 le charge par défaut au démarrage). Pour vérifier le noyau que vous utilisez, vous pouvez utiliser la commande:

uname -r

La recommandation est de conserver au moins deux ou de préférence trois noyaux, y compris le dernier. La raison en est que vous aurez au moins un / deux autres noyaux avec lesquels démarrer s'il vous est impossible de démarrer avec le dernier noyau.

Pour supprimer les noyaux plus anciens, ouvrez le terminal et vérifiez votre noyau actuel:

uname -r 

Ensuite, pour répertorier tous les noyaux installés sur votre système.

dpkg --list | grep linux-image 

Trouvez tous les noyaux inférieurs à votre noyau actuel. Exécutez les commandes ci-dessous pour supprimer le noyau que vous avez sélectionné:

sudo apt-get purge linux-image-x.x.x.x-generic 

Enfin, exécutez les commandes ci-dessous pour mettre à jour grub2

sudo update-grub2 

Et redémarrez votre système.

Dababi
la source
1
De la question: "nous ne pouvons pas simplement redémarrer les systèmes" . Votre réponse nécessite de le faire deux fois.
Courses de légèreté en orbite
3

apt-get autoremove, exécuté périodiquement, devrait pouvoir vous aider à accomplir ce que vous voulez. Le noyau en cours d'exécution, le noyau précédent et les deux derniers noyaux devraient suffire.

Schaiba
la source
1
Compte tenu de la liste des noyaux installés et du fait que le noyau en cours d'exécution est ancien, je dirais "le noyau en cours d'exécution, le noyau précédent et les deux derniers noyaux".
Stephen Kitt
2

Démarrez l'un des noyaux précédents.

Premier essai apt autoremove --purge

Si ça ne marche pas dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Contrôlez ce qui sera désinstallé.

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo dpkg -P Cela purge le noyau listet de la commande ci-dessous.

sudo apt -f install

et c'est sûr

 sudo update-grub

la source