web-dev-qa-db-fra.com

Quel est le moyen le plus sûr de nettoyer la partition / boot?

J'ai 200 Mo assignés pour la partition /boot. Chaque fois que j'essaie de mettre à jour le noyau, je reçois un message d'erreur indiquant que le code /boot est saturé.

Que puis-je faire pour nettoyer /boot et supprimer/sauvegarder les anciens noyaux?

270
koba101

Méthode en ligne de commande:

Tout d’abord, vérifiez la version de votre noyau pour ne pas supprimer l’image du noyau en cours d’utilisation:

uname -r

Maintenant, lancez cette commande pour obtenir la liste des noyaux installés:

dpkg --list 'linux-image*' | grep ^ii

et supprimez les noyaux dont vous ne voulez plus/n'avez plus besoin en lançant ceci:

Sudo apt-get remove linux-image-VERSION

Remplacez VERSION par la version du noyau que vous souhaitez supprimer.

Lorsque vous avez fini de supprimer les anciens noyaux, vous pouvez le lancer pour supprimer tous les paquets dont vous n’avez plus besoin:

Sudo apt-get autoremove

Et enfin, vous pouvez exécuter ceci pour mettre à jour la liste du noyau grub:

Sudo update-grub
328
PeppeDAlterio

NOTE: Ceci est seulement si vous ne pouvez pas utiliser apt à nettoyer en raison d'un/boot 100% complet

Si apt-get ne fonctionne pas parce que votre/boot est à 100%, vous devrez d'abord nettoyer/boot. Cela a probablement attrapé une mise à niveau du noyau dans une installation partielle, ce qui signifie qu'apt a pratiquement totalement gelé et continuera à vous dire d'exécuter apt-get -f install même si cette commande échoue.

Obtenez la liste des images du noyau et déterminez ce que vous pouvez faire sans. Cette commande affichera les noyaux installés à l'exception de celui en cours d'exécution Sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`. Notez les deux dernières versions de la liste. Vous n'avez pas besoin de vous inquiéter à propos de la course car elle n'est pas listée ici. Vous pouvez vérifier cela avec uname -r.

Créez une commande pour supprimer tous les fichiers dans/boot pour les noyaux qui ne comptent pas pour vous en utilisant le développement d'accolades pour vous garder sain d'esprit. N'oubliez pas d'exclure les images du noyau actuelles et les deux plus récentes. Exemple: Sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*. Vous pouvez également utiliser une plage avec la syntaxe {80..84}.

Sudo apt-get -f install pour nettoyer ce qui rend grogny à propos d’une installation partielle.

Si vous rencontrez une erreur comportant une ligne du type "Erreur interne: impossible de trouver une image (/boot/vmlinuz-3.2.0-56-generic)", exécutez la commande Sudo apt-get purge linux-image-3.2.0-56-generic (avec la version appropriée).

Enfin, Sudo apt-get autoremove pour effacer les anciens packages d’image du noyau devenus orphelins par le nettoyage manuel au démarrage.

Suggestion: exécutez Sudo apt-get update et Sudo apt-get upgrade pour prendre en charge les mises à niveau éventuellement sauvegardées en attendant la découverte de la partition/boot complète.

Suggestion2, Review https://help.ubuntu.com/community/AutomaticSecurityUpdates et envisagez de définir la valeur Unatended-Upgrade :: Remove-Unused-Dependencies sur true dans /etc/apt/apt.conf.d/ 50unattended-upgrades. Ce sera l'équivalent d'exécuter autoremove après chaque mise à jour de sécurité pour vous assurer de nettoyer les noyaux inutilisés, mais supprimera également d'autres éléments qu'il pense inutilisés pour vous éviter ce problème à l'avenir.

275
flickerfly

Il existe une documentation à ce sujet sur https://help.ubuntu.com/community/RemoveOldKernels

En résumé: utiliser

Sudo apt-get autoremove --purge
# and/or:
Sudo purge-old-kernels

L'outil purge-old-kernels peut être installé via Sudo apt install byobu. Voici la description de sa page de manuel:

Ce programme supprimera les anciens packages 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 conserve au moins les 2 derniers noyaux, mais l'utilisateur peut remplacer cette valeur à l'aide du paramètre --keep.

Si vous souhaitez une solution de copier-coller, ReSearchIT Eng a suggéré ce qui suit:

Sudo apt install -y byobu
Sudo purge-old-kernels -y --keep 1
Sudo apt-get -y autoremove --purge
49
peq

J'ai trouvé qu'il est beaucoup plus facile d'abandonner la petite partition et de déplacer /boot à la racine. Cela évite également les problèmes de manque d'espace à l'avenir.

Déplacez d'abord vos données de la partition de démarrage vers la racine (exécutez la commande sous Sudo -s):

cp -a /boot /boot2
umount /boot
rmdir /boot
mv /boot2 /boot

Supprimez (ou commentez) l'entrée /boot dans /etc/fstab:

vim /etc/fstab

Mettez à jour grub et assurez-vous que tout est correct:

update-grub

apt devrait maintenant pouvoir être mis à niveau sans problèmes.

Cela laisse une partition inutilisée de 200 Mo (que vous pouvez utiliser pour autre chose si vous trouvez que cela en vaut la peine).

7
laktak

Suppression des anciens noyaux (pour libérer de l’espace sur/boot), voir: http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot

Sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")

Puis courir

Sudo apt-get update
4
Amos Folarin

Sudo apt-get autoremove

Cela supprime tous les noyaux sauf les 2 derniers. Testé sur Ubuntu 16.04 LTS lorsque /boot avait une capacité de 100% et que apt-get upgrade avait échoué lors de la dernière mise à niveau du noyau. Le retrait automatique du noyau est itératif, donc si vous avez plusieurs noyaux, ils seront supprimés un par un. Alors soyez patient.

3
DeepSpace101

Pourquoi le faire à la main quand on peut le faire avec un outil? Vous savez que vous en aurez de nouveau besoin dans 30 secondes, car il leur faut 30 secondes pour envoyer une nouvelle mise à jour kernal ces jours-ci = P

Je recommande d'utiliser cet outil, bootnukem

git clone https://github.com/erichs/bootnukem.git
cd bootnukem
Sudo ./install.sh

Ensuite

Sudo bootnukem --dry-run

Supprimez --dry-run une fois que vous confirmez qu'il semble sans danger

1
Jonathan