web-dev-qa-db-fra.com

Comment libérer plus d'espace dans / boot?

Ma partition /boot est presque pleine et je reçois un avertissement chaque fois que je redémarre mon système. J'ai déjà supprimé les anciens paquets du noyau (linux-headers ...), en fait je l'ai fait pour installer une version plus récente du noyau fournie avec les mises à jour automatiques.

Après avoir installé cette nouvelle version, la partition est presque pleine à nouveau. Alors quoi d'autre puis-je supprimer? Existe-t-il d'autres fichiers associés aux anciennes images du noyau?

Voici une liste des fichiers qui se trouvent sur ma partition /boot:

:~$ ls /boot/
abi-2.6.31-21-generic         lost+found
abi-2.6.32-25-generic         memtest86+.bin
abi-2.6.38-10-generic         memtest86+_multiboot.bin
abi-2.6.38-11-generic         System.map-2.6.31-21-generic
abi-2.6.38-12-generic         System.map-2.6.32-25-generic
abi-2.6.38-8-generic          System.map-2.6.38-10-generic
abi-3.0.0-12-generic          System.map-2.6.38-11-generic
abi-3.0.0-13-generic          System.map-2.6.38-12-generic
abi-3.0.0-14-generic          System.map-2.6.38-8-generic
boot                          System.map-3.0.0-12-generic
config-2.6.31-21-generic      System.map-3.0.0-13-generic
config-2.6.32-25-generic      System.map-3.0.0-14-generic
config-2.6.38-10-generic      vmcoreinfo-2.6.31-21-generic
config-2.6.38-11-generic      vmcoreinfo-2.6.32-25-generic
config-2.6.38-12-generic      vmcoreinfo-2.6.38-10-generic
config-2.6.38-8-generic       vmcoreinfo-2.6.38-11-generic
config-3.0.0-12-generic       vmcoreinfo-2.6.38-12-generic
config-3.0.0-13-generic       vmcoreinfo-2.6.38-8-generic
config-3.0.0-14-generic       vmcoreinfo-3.0.0-12-generic
extlinux                      vmcoreinfo-3.0.0-13-generic
grub                          vmcoreinfo-3.0.0-14-generic
initrd.img-2.6.31-21-generic  vmlinuz-2.6.31-21-generic
initrd.img-2.6.32-25-generic  vmlinuz-2.6.32-25-generic
initrd.img-2.6.38-10-generic  vmlinuz-2.6.38-10-generic
initrd.img-2.6.38-11-generic  vmlinuz-2.6.38-11-generic
initrd.img-2.6.38-12-generic  vmlinuz-2.6.38-12-generic
initrd.img-2.6.38-8-generic   vmlinuz-2.6.38-8-generic
initrd.img-3.0.0-12-generic   vmlinuz-3.0.0-12-generic
initrd.img-3.0.0-13-generic   vmlinuz-3.0.0-13-generic
initrd.img-3.0.0-14-generic   vmlinuz-3.0.0-14-generic

Actuellement, j'utilise le noyau 3.0.0-14-generic.

552
user6722

Vous avez beaucoup de noyaux inutilisés. Supprimez tous les noyaux sauf les derniers avec:

Sudo apt-get purge linux-image-{3.0.0-12,2.6.3{1-21,2-25,8-{1[012],8}}}

Ceci est un raccourci pour:

Sudo apt-get purge linux-image-3.0.0-12 linux-image-2.6.31-21 linux-image-2.6.32-25 linux-image-2.6.38-10 linux-image-2.6.38-11 linux-image-2.6.38-12 linux-image-2.6.38-8

Supprimer le package linux-image-x.x.x-x aura également pour effet de supprimer linux-image-x.x.x-x-generic.

Les en-têtes sont installés dans /usr/src et sont utilisés lors de la construction de modules du noyau en dehors de l’arbre (comme le pilote nvidia et la virtualbox propriétaires). La plupart des utilisateurs doivent supprimer ces packages d'en-tête si le package de noyau correspondant (linux-image-*) n'est pas installé.

Pour lister tous les noyaux installés, lancez:

dpkg -l linux-image-\* | grep ^ii

Une commande pour afficher tous les noyaux et en-têtes pouvant être supprimés, à l’exclusion du noyau actuel en cours d’exécution:

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

Il sélectionne tous les packages nommés commençant par linux-headers-<some number> ou linux-image-<some number>, affiche les noms des packages pour les packages installés, puis exclut le noyau noyau chargé/en cours d'exécution actuel (pas nécessairement le noyau dernière!). Cela correspond à la recommandation de tester un nouveau noyau avant de supprimer les anciens noyaux connus pour fonctionner.

Ainsi, après avoir mis à niveau les noyaux et redémarré pour le tester, vous pouvez supprimer tous les autres noyaux avec:

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

Votre partition de démarrage est pleine. Comme il s’agit d’une mise à jour du noyau, ces fichiers seront copiés sur la partition d’amorçage. Vous devez donc les nettoyer. Voici un article de blog qui vous montrera comment effacer les anciennes images du noyau avec une seule commande. Je vais donner un résumé de base de la méthode. Utilisez cette commande pour imprimer la version actuelle de votre noyau:

uname -r

Puis utilisez cette commande pour imprimer tous les noyaux que vous avez installés et qui ne sont pas votre dernier noyau:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

Assurez-vous que votre noyau actuel ne figure pas sur cette liste. Remarquez comme il s’agit de la majorité de la commande finale (en bas). Pour désinstaller et supprimer ces anciens noyaux, vous souhaitez diriger ces arguments vers:

Sudo apt-get -y purge

Maintenant, nous pouvons faire tout ce que nous voulons en combinant ces deux dernières commandes dans ce désordre impie:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs Sudo apt-get -y purge

Et cette commande prendra soin de tout pour vous. Je confirmerai que cela fonctionne parfaitement, mais ne faites jamais confiance à quiconque sur Internet. :) Pour plus d'informations, l'article de blog fournit une très bonne explication de la lecture de chaque partie de la commande, de sorte que vous êtes convaincu qu'elle fait ce que vous voulez.

212
dward
Sudo apt-get autoremove

Cette commande fait le travail automatiquement.

103
karan

Le gestionnaire de paquets Synaptic peut être utilisé pour sélectionner et supprimer facilement les anciennes images du noyau. Screenshot of Synaptic Package Manager

Si vous n'avez pas encore installé Synaptic:

Sudo apt-get install synaptic

Démarrez l'application et sélectionnez les options affichées.

Vous devriez pouvoir mettre en surbrillance tous les paquets "linux" avec la version "2.6.x" où x est compris entre 31 et 38 en fonction des fichiers de votre dossier/boot.

Cliquez avec le bouton droit de la souris sur chacun de ces packages linux et choisissez l'option "Marquer pour suppression complète". Enfin, cliquez sur le bouton Appliquer. Cela supprimera tous les fichiers et tous les fichiers associés. Votre dossier /boot devrait maintenant être un peu plus ordonné.

39
fossfreedom

Merci pour votre message détaillé de votre problème, cela m'a permis d'aller dans la bonne direction. Bien qu'il soit utile de conserver les fichiers du noyau précédents, vous pouvez tous les supprimer en une fois, consultez ce post:
Comment supprimer tous les en-têtes, images et modules du noyau Linux non utilisés

Fait en ligne de commande. Si vous le faites via une utilisation à distance, utilisez quelque chose comme WINSCP pour ouvrir une session de terminal et collez-le simplement, cela fonctionne très bien.

Ici, il est copié du lien de l'article, je vous suggère de lire l'article complet:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs Sudo apt-get -y purge
24
Omni

Ceci est une nouvelle réponse à une vieille question, mais un moyen facile de nettoyer cette chose (et plus) est d'installer buntu Tweak . Pour l'installer :

Sudo add-apt-repository ppa:tualatrix/ppa
Sudo apt-get update
Sudo apt-get install ubuntu-Tweak

ensuite, vous pouvez exécuter Ubuntu Tweak, en allant sur l'onglet "concierge", et à partir d'ici, il suffit de trois clics:

Ubuntu Tweak janitor for old kernels

Il est préférable de laisser le dernier noyau (on ne sait jamais) ou un noyau qui fonctionne bien pour des raisons de sécurité; mais c'est facilement personnalisable.

Vous pouvez utiliser le même outil pour nettoyer beaucoup de choses - rappelez-vous simplement que si vous nettoyez le cache de vignettes ou le cache TB, le système devra les reconstruire si nécessaire.

22
Rmano

J'ai pu résoudre le problème en utilisant dpkg pour supprimer directement les packages. Bien que les packages soient toujours répertoriés dans dpkg -l, les fichiers sont supprimés de /boot, ce qui libère de l'espace.

phrogz@planar:/boot$ Sudo dpkg --remove linux-image-2.6.32-30-server
(Reading database ... 145199 files and directories currently installed.)
Removing linux-image-2.6.32-30-server ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-35-server
Found linux image: /boot/vmlinuz-2.6.32-34-server
Found initrd image: /boot/initrd.img-2.6.32-34-server
Found linux image: /boot/vmlinuz-2.6.32-33-server
Found initrd image: /boot/initrd.img-2.6.32-33-server
Found linux image: /boot/vmlinuz-2.6.32-32-server
Found initrd image: /boot/initrd.img-2.6.32-32-server
Found linux image: /boot/vmlinuz-2.6.32-31-server
Found initrd image: /boot/initrd.img-2.6.32-31-server
Found memtest86+ image: /memtest86+.bin
done

# Repeat for kernels -31 and -32 and -33, up to (but not including)
# the version listed by `uname -a`

Ensuite, apt-get -f install a corrigé mes problèmes de dépendance et tout allait bien dans le monde.

Cependant, je n'accepterai pas cette réponse car je dois encore savoir si je devrais augmenter ma taille /boot ou faire autre chose.

18
Phrogz

Vous pouvez cesser d'utiliser une partition/boot distincte pour ne pas disposer d'un espace aussi limité. Pour ce faire, démontez la partition, montez-la ailleurs, copiez tous les fichiers dans le répertoire/boot de votre partition racine, supprimez l'entrée de/etc/fstab et réinstallez grub. Par exemple (vous devrez utiliser la partition correcte):

Sudo -s
umount /boot
mount /dev/sda2 /mnt
cp -a /mnt/* /boot/
umount /mnt
gedit /etc/fstab
grub-install /dev/sda

Vous pouvez ensuite utiliser gparted pour supprimer l'ancienne partition/boot et éventuellement étendre la partition racine pour utiliser cet espace. Pour étendre la partition racine, vous devez démarrer à partir du livecd et l’espace libre doit être immédiatement à droite. Si la partition/boot se trouve actuellement à gauche de la partition racine, vous devrez d'abord déplacer la partition racine vers la gauche, puis l'étendre, mais cela peut prendre très, très longtemps, de sorte que cela ne vaut peut-être pas la peine. difficulté.

14
psusi

Prenant le meilleur des réponses ci-dessus, mon approche éprouvée est la suivante:

  • uname -a pour trouver le noyau en cours d'exécution.
  • dpkg -l linux-{headers,image}-\* | grep ^ii pour répertorier tous les packages liés au noyau actuellement installés. Cela inclura le noyau en cours d'exécution.
  • Sudo apt-get purge linux-{image,headers}-3.16.0-{xx,yy,zz} pour supprimer les anciens noyaux. Remplacez xx,yy,zz par la liste des versions du noyau que vous souhaitez supprimer. Il s’agit de toutes les versions répertoriées par la commande précédente qui sont plus anciennes que le noyau en cours d’exécution. Assurez-vous de ne pas supprimer le noyau en cours d'exécution - votre système ne pourra plus être démarré. Vous devrez peut-être également changer la version du noyau de 3.16.0 pour tout ce qui est installé sur votre système.
  • Faites éventuellement un Sudo apt-get autoremove supplémentaire - cela supprimera toutes les dépendances restantes des anciens noyaux qui ne sont plus nécessaires par celui-ci, libérant ainsi davantage d'espace.

Vous pouvez avoir des fichiers d'en-tête sans que les versions du noyau correspondantes soient installées, ou inversement - incluez simplement toutes ces versions dans la commande. APT se plaindra que certains packages ne peuvent pas être supprimés car ils ne sont pas installés, mais cela ne leur causera aucun préjudice.

Si quelque chose échoue ...

  • Si la commande apt échoue à cause d'une erreur , il ne reste plus d'espace sur le périphérique , utilisez plutôt la commande dpkg correspondante: Sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz}.
  • Si la commande dpkg ne fonctionne toujours pas car les packages linux-image sont requis par les packages linux-headers de la même version (que vous souhaitez également désinstaller), il est possible que dpkg n’ait pas résolu ce problème. Vérifiez à nouveau le résultat de dpkg -l et spécifiez les suffixes de nom de package sur la ligne de commande. Par exemple, sur l'un de mes systèmes, la commande qui a finalement fonctionné était Sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz}-generic-pae.
  • Si vous rencontrez une autre erreur, demandez de l'aide, votre problème pourrait être différent de celui que vous pensiez.
6
user149408

Pour moi, apt-get purge et dpkg --remove ont tous deux échoué. J'ai donc dû supprimer quelques images plus anciennes du noyau de/boot avec rm -f.

4
orkoden

J'ai déjà supprimé les anciens paquets du noyau (linux-headers ...)

linux-headers-* ne sont pas des noyaux. Les packages de noyau sont ceux nommés linux-image-*. Ceux nommés linux-headers-* sont des packages de développement pour la compilation de modules du noyau: ils ne résident pas dans le répertoire/boot et ne sont pas nécessaires pour une utilisation quotidienne au quotidien de votre système.

Les fichiers que vous avez répertoriés dans/boot do incluent plusieurs anciennes images du noyau (vmlinuz*) et des images initrd compilées (initrd.img*) pour ces noyaux, ce qui indique que de nombreux anciens packages du noyau sont toujours installés.

Vous devriez pouvoir lister vos noyaux installés avec

aptitude search ~ilinux-image

(Notez que ceci retournera probablement les paquets qui ne sont pas des noyaux, aussi).

Il n’est généralement pas nécessaire d’installer plus de deux noyaux - celui qui est actuellement utilisé et celui qui le précède (en tant que solution de secours). Vous pouvez donc commencer à supprimer les anciens, un à un, comme ceci:

Sudo apt-get autoremove linux-image-3.2.0-23-generic

Assurez-vous de remplacer "3.2.0-23-generic" par la version du noyau que vous souhaitez supprimer! En outre, ne supprimez pas les packages tels que linux-image-generic. Vous devez faire très attention de ne pas supprimer le noyau en cours d’exécution ou vous ne pourrez pas démarrer (Ubuntu peut ou non vous en avertir).

Vous pouvez trouver votre noyau en cours d'exécution avec:

uname -r
2
thomasrutter

Lister tous les noyaux:

dpkg --list 'linux-image*'

Afficher le noyau actuel:

uname -r

Liste tous les noyaux SAUF courant:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

Assurez-vous que votre noyau actuel ne figure pas sur cette liste.

Supprimer tous les noyaux SAUF courant:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs Sudo apt-get -y purge

Effacer les autres trucs:

Sudo apt-get autoremove

Si cela vous donne toujours une erreur d’espace disque de démarrage pour installer/désinstaller des fichiers, supprimez directement l’un des OLD image du répertoire/boot,

ls -lh /boot/*-3.13.0-119*;

rm /boot/*-3.13.0-119*; 

NOTE: Veuillez revoir l’image actuelle du noyau avant de supprimer une image.

2
Hemant Thorat

Je montre que, même en 2017, cette question a de nouveaux commentaires et réponses mais manque une réponse qui me semble très utile ici:

buntu en tant que système d'exploitation simple d'utilisation quotidienne n'a pas de raison d'être installé avec une partition\boot distincte et quelque chose comme ceci n'offrira pas quelque chose à un "utilisateur commun" ... Une solution est donc une nouvelle installation sans\partition de démarrage et de cette façon vous n'aurez jamais un tel problème

PS: Ma réponse peut être supprimée ou ajoutée à la réponse acceptée ... (Je pense que cela aidera certaines personnes de cette façon)

1
koleygr

J'ai eu ce problème et plus encore lorsque j'ai supprimé manuellement certains fichiers initrd-img-xxx du répertoire/boot et que ces anciennes versions étaient toujours générées et remplies dans le dossier /boot. Pour résoudre ce problème, j'ai suivi ce qui suit:

  • J'ai supprimé manuellement l'ancienne version du noyau générée afin de libérer de l'espace.
  • Vous allez éditer un fichier de configuration texte en tant que superutilisateur. Collez donc les éléments suivants dans un terminal:

    Sudo gedit /etc/initramfs-tools/update-initramfs.conf
    
  • Recherchez la ligne update_initramfs=yes et remplacez-la par update_initramfs=no. Enregistrez et quittez le fichier, puis exécutez:

    Sudo dpkg --configure -a
    

Cela a résolu mon problème. C'était basé sur ce blog

Espérons que tout se passera bien lorsque vous redémarrerez. Vous pourrez ensuite essayer de remplacer le no par le yes dans le update-initramfs.conf.

1
aibrahim

tilitaire super utile qui effacera votre partition de démarrage

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

Utilisez à vos risques et périls, mais cela a fonctionné pour moi:

Sudo bootnukem
1
Jonathan

J'ai écrit ceci script bash pour purger sélectivement tous les anciens noyaux:

rm kernels real size

Tout le code bash et les instructions sont inclus dans le lien.

0
WinEunuuchs2Unix

J'ai écrit ci-dessous un script bash qui rend le processus un peu plus convivial.

YMMV - c'était fait pour Mint 14. J'apprends toujours BASH, alors c'est probablement un peu maladroit. Utilisez à vos risques et périls, mais cela fonctionne pour moi!

#!/bin/bash

endCol='\e[0m'
bold_red='\e[1;31m'
bold_green='\e[1;32m'
bold_yellow='\e[1;33m'

title_color='\e[0;30;47m'

function show_kernel_info {
clear
current_kernel=$(uname -r)
echo "Current ACTIVE kernel is:"
echo -e "  "$bold_yellow$current_kernel$endCol
echo "This kernel will be TOTALLY EXCLUDED from all actions in this script."
echo "Also, one fallback non-active kernel will be always left untouched."
echo ""
echo "These are the non-active kernels stored in /boot:"
count_of_old_kernels_in_boot=$(ls -o /boot/initrd* | grep -c -v "$current_kernel")
if [ $count_of_old_kernels_in_boot = 0 ]; then
  echo " * No non-active kernels found! *"
else
  ls -o /boot/initrd* | grep -v "$current_kernel"
fi
echo ""
list_of_old_kernels=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic")
current_old_kernel=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic" | head -n 1)
count_of_old_kernels_installed=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -c -v "linux-image-generic")
echo "Listing of all unused kernels still installed in the system (these may not exist in /boot):"
if [ $count_of_old_kernels_installed = 0 ]; then
  echo " * No unused kernel installs found! *"
else
  dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic"
fi
echo ""
}

function exit_script {
free_space_after=$(df -BM /boot | tail -n 1 | awk -F' ' '{ print $4 }' | tr -d M)
let freed_space=$free_space_after-$free_space_before
echo ""
echo "Results (in MB)"
echo "---------------"
echo "Free space in /boot before script was run: "$free_space_before
echo "Free space now: "$free_space_after
echo ""
echo "Amount of space freed up = "$freed_space
echo ""
echo "Press any key to exit."
read -s -n 1
echo ""
exit
}

# Main code
echo ""
echo -e $title_color" --------------------------- "$endCol
echo -e $title_color" -   Kernel Cleanup v1.0   - "$endCol
echo -e $title_color" --------------------------- "$endCol
echo ""
echo "Maximise this window for readability."
echo "Press any key to continue."
read -s -n 1
echo ""
echo "This script will remove old unused kernels, but it will Prompt you before removing each one."
echo "It will never remove the current running kernel, and will also leave one fallback kernel."
echo "It can also remove source files from /usr/src for each kernel removed."
echo "This is normally safe to do and will free up lots more space."
echo ""
echo "Do you want that done as well? (y/n, enter=yes)"
valid_input=0
while [ "$valid_input" = "0" ]; do
  read -s -n 1 YesNo_input
  if [ "$YesNo_input" = "" ]; then
    YesNo_input="y"
  fi
  case $YesNo_input
  in
    y)
    RemoveSource="y"
    valid_input=1
    ;;

    Y)
    RemoveSource="y"
    valid_input=1
    ;;

    n)
    RemoveSource="n"
    valid_input=1
    ;;

    N)
    RemoveSource="N"
    valid_input=1
    ;;
  esac
done

free_space_before=$(df -h /boot | tail -n 1 | awk -F' ' '{ print $4 }' | tr -d M)
show_kernel_info
while [ $count_of_old_kernels_in_boot -gt 1 ]; do
  # failsafe check if somehow the current kernel is about to be removed!
  if [ "$current_old_kernel" = "$current_kernel" ]; then
    echo -e $bold_red"ERROR!"$endCol" Somehow the current kernel has crept into the removal process!"
    echo "I refuse to do that! Aborting script."
    exit_script
  fi
  # failsafe check if somehow a linux-image-generic entry is about to be removed
  if [ "$current_old_kernel" = "linux-image-generic" ]; then
    echo -e $bold_red"ERROR!"$endCol" Somehow one of the linux-image-generic entries has crept into the removal process!"
    echo "I refuse to do that! Aborting script."
    exit_script
  fi
  echo "Command about to be executed is:"
  echo "  $ Sudo apt-get purge \"$current_old_kernel\""
  check_in_boot=$(echo $current_old_kernel | sed 's/linux-image/initrd.img/g')
  if [ -e /boot/$check_in_boot ]; then
    echo -e $bold_yellow"Note:"$endCol" This kernel exists in /boot but it NON-active, so it's OK to remove."
  else
    echo -e $bold_green"Totally safe to remove:"$endCol" This kernel does NOT exist in /boot."
  fi
  echo ""
  echo "Are you sure you want to remove this kernel?"
  echo "(*upper case* Y=yes / any other key will exit the script)"
  read -s -n 1 yes_no
  echo ""
  # Only entering a single upper case Y will work!
  if [ "$yes_no" != "Y" ]; then
    echo "Aborting script."
    exit_script
  fi
  echo "Removing kernel "$current_old_kernel"..."
  sleep 1
  Sudo apt-get -y purge $current_old_kernel
  if [ "$RemoveSource" = "y" ]; then
    current_old_source=$(echo $current_old_kernel | sed 's/linux-image/linux-headers/g')
    current_old_source=$(echo $current_old_source | sed 's/-generic//g')
    current_old_source=$(echo $current_old_source | sed 's/-pae//g')
    Sudo apt-get -y purge $current_old_source
  fi
  show_kernel_info
done

if [ $count_of_old_kernels_in_boot = 0 ]; then
  echo -e $bold_red"There are no NON-active kernels to remove!"$endCol
else
  echo -e $bold_red"There is only one NON-active kernel left in /boot!"$endCol
  echo "This script will not remove the last non-active kernel so that you have at least one backup kernel."
fi
echo "Aborting script."
exit_script
0
wibbynut

[En tant que membre de AskUbuntu, je ne peux pas commenter avant d'avoir la réputation = 50. Ne votez donc pas à cause de cela.]

Mon serveur faisait cela aussi. Aucune des réponses attendues n’a littéralement fonctionné, car elles nécessitent de la place sur/boot pour pouvoir être complétées. Si la partition de démarrage est pleine, elle se termine brusquement sans supprimer aucune des images.

La seule chose qui a fonctionné pour moi a été d'examiner l'image actuelle, puis manuellement Sudo rm filename pour les fichiers d'image les plus anciens (chacun d'entre eux avait - 3.16.0- dans leurs noms). Une fois cela fait, alors Sudo apt-get autoremove avait la marge de manœuvre dont il avait besoin pour faire son travail. Il a mis en évidence certaines erreurs associées à cette version, par exemple: "depmod: FATAL: impossible de charger /boot/System.map-3.16.0-30-generic: Aucun fichier ou répertoire de ce type", mais il faut s'y attendre.

Une fois l'opération terminée, df a renvoyé 42% des utilisateurs de/boot pour indiquer qu'ils sont à nouveau en bon état.

0
Justin Case

La partition/boot peut être un peu étrange parfois

ne commencez pas directement à supprimer les fichiers kernal.

Étapes à suivre

  1. Recherchez le kernal actuellement utilisé et utilisé par le système linux.

    uname -r

    cela devrait vous donner le nom de l'image kernal actuellement installée sur le système

  2. Maintenant, commencez à supprimer des fichiers supplémentaires, sauf celui qui est installé sur votre système

    apt-get remove linux-image-XXXXX

  3. Supprimez également le fichier d'en-tête.

    apt-get remove linux-headers-XXXXX

  4. Il peut également y avoir une condition où apt a cessé de fonctionner, dans ce cas, basculez vers/boot

    cd /boot

  5. Commencez à supprimer les fichiers manuellement, mais en veillant également à ne pas supprimer les fichiers installed one's kernal de votre système.

    rm linux-image-XXXXX

    rm linux-image-extra-XXXXXX

  6. Après avoir supprimé les fichiers corrects, installation partielle, le cas échéant

    apt-get -f install

  7. Supprimez les fichiers supplémentaires qui se trouvent là, car les fichiers de démarrage sont nettoyés manuellement

    apt-get autoremove

  8. Mettre à jour grub

    update-grub

  9. Enfin mettre à jour vos paquets système

    apt-get update

0
user225

Dans aptitude ou synaptic il y a une section "vieux ou emballé manuellement". Il devrait y avoir les anciens paquets linux.

0
Martin Ueding

Enregistrez ce script sous /usr/local/bin/remove_kernels.sh (n'oubliez pas de donner les autorisations d'exécution Sudo chmod 755 /usr/local/bin/remove_kernels.sh):

#!/bin/sh
if test $(id -u) != 0; then
 echo Error: You must be root to run this script!
 exit 1
fi
apt purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )
update-grub

Ensuite, pour supprimer tous les anciens noyaux, tapez simplement: Sudo remove_kernels.sh

0
Anthony Kelly