Sua partição / boot está cheia de kernels antigos. Faz isso às vezes, não tenho certeza porque nunca é consertado. Você pode facilmente remover os kernels antigos se souber em quais pacotes eles vieram.
Primeiro, verifique uname -a
para verificar sua versão atual.
Em seguida, execute o seguinte comando:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d'
Este comando listará todos os pacotes que você não precisa mais. Eu não gosto de removê-los automaticamente, eu gosto de estar no controle quando se trata de remover os kernels. Portanto, para cada pacote listado, faça o seguinte:
sudo apt-get -y purge some-kernel-package
Intermezzo
Este intermezzo descreve em mais detalhes como os comandos funcionam e tenta corrigir um problema com linux-libc-dev:amd64
. A maioria dos usuários pode pular este parágrafo.
-
dpkg -l 'linux-*'
lista todos os pacotes que têm um nome começando com 'linux -' -
sed '/^ii/!d; remove all lines that do *not* start with
ii ' -
uname -r | sed "s/\(.*\)-\([^0-9]\+\)//"
encontra a versão atual do kernel em execução -
/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d
Remove todas as linhas, exceto as que contêm o número atual da versão do kernel em execução -
s/^[^ ]* [^ ]* \([^ ]*\).*//
Para cada linha, liste apenas o nome do pacote -
/[0-9]/!d
Remove linhas que não contêm números.
Para corrigir a questão de Frederick Nord , acho que o comando pode ser alterado da seguinte forma:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d;/^linux-\(headers\|image\)/!d'
Basicamente adiciona um filtro extra:
- / ^ linux- (cabeçalhos \ | imagem) /! d Exclua todas as linhas que não iniciam com
linux-headers
oulinux-image
/ Intermezzo
Em que some-kernel-package
pode ser substituído por um dos pacotes listados. Apenas tome cuidado para não remover os pacotes do kernel que estão em uso atual (como listado pelo uname -a
), por exemplo. sudo apt-get purge -y linux-headers-3.0.0-12
etc.
Ele pode ser automatizado usando o comando xargs, mas eu não gosto disso. É uma coisa pessoal. No entanto, aqui está o comando para fazer isso:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d' | xargs sudo apt-get -y purge
Este é o meu /boot
, um kernel sobressalente (2.6.38-11) para o caso e 3.2.0-24 sendo atual:
$ ls -l /boot
total 59388
-rw-r--r-- 1 root root 730545 Sep 13 2011 abi-2.6.38-11-generic
-rw-r--r-- 1 root root 791023 Apr 25 13:51 abi-3.2.0-24-generic
-rw-r--r-- 1 root root 130326 Sep 13 2011 config-2.6.38-11-generic
-rw-r--r-- 1 root root 140341 Apr 25 13:51 config-3.2.0-24-generic
drwxr-xr-x 3 root root 5120 May 27 17:46 grub
-rw-r--r-- 1 root root 20883146 Oct 1 2011 initrd.img-2.6.38-11-generic
-rw-r--r-- 1 root root 22474219 May 5 09:04 initrd.img-3.2.0-24-generic
drwxr-xr-x 2 root root 12288 Apr 16 2009 lost+found
-rw-r--r-- 1 root root 176764 Nov 27 11:00 memtest86+.bin
-rw-r--r-- 1 root root 178944 Nov 27 11:00 memtest86+_multiboot.bin
-rw------- 1 root root 2656297 Sep 13 2011 System.map-2.6.38-11-generic
-rw------- 1 root root 2884358 Apr 25 13:51 System.map-3.2.0-24-generic
-rw------- 1 root root 1369 Sep 13 2011 vmcoreinfo-2.6.38-11-generic
-rw------- 1 root root 4526784 Sep 13 2011 vmlinuz-2.6.38-11-generic
-rw------- 1 root root 4965776 Apr 25 13:51 vmlinuz-3.2.0-24-generic
E uso do sistema de arquivos:
$ df -h /boot
Filesystem Size Used Avail Use% Mounted
/dev/sda5 228M 63M 154M 29% /boot