“A inicialização do volume possui apenas 0 bytes de espaço em disco restante”

32

Após uma atualização recente, estou recebendo um alerta dizendo:

The volume boot has only 0 bytes disk space remaining

Mas meu computador tem muito espaço livre em HD. Alguém sabe como eu resolvo isso. (Se for relevante, estou usando o recurso de criptografia de disco inteiro da imagem de instalação alternativa para Ubuntu 12.04).

user924731
fonte
Realmente depende de como você instalou o Ubuntu em sua máquina. Você pode "sudo fdisk -l" no terminal e verificar se há uma pequena partição que está quase cheia?
Paulius Šukys
4
Melhor ainda, execute o comando 'df -H -x tmpfs -x devtmpfs' sem as aspas e cole a saída aqui.
fabricator4
Esta pergunta e respostas estão relacionadas ao problema e podem ajudar.
Elomage
aparentemente um problema conhecido para partição criptografada. resposta askubuntu.com/a/230942/231504 é ótimo - funciona para mim. Além disso, no entanto, aumente a contagem de usuários afetados no rastreador do ubuntu: bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/…
pestófago

Respostas:

48

Para listar todos os kernel:
dpkg --get-selections | grep "linux-image-[[:digit:]].*" | tr "\t" ";" | cut -d ";" -f1

Os resultados são mais ou menos assim:

linux-image-3.19.0-7-generic 
linux-image-3.18.0-13-generic  
linux-image-3.16.0-23-generic

Não apague todos os núcleos, apenas os antigos!

Em seguida, vamos remover o kernel 3.16,
sudo apt-get purge linux-image-3.16.0-23-generic

e, em seguida, todos os pacotes não utilizados do sistema:
sudo apt-get autoclean && sudo apt-get autoremove

Paradiesstaub
fonte
Também tenho alguns chamados extra, por exemplo, ambos linux-image-3.13.0-40-generice linux-image-extra-3.13.0-40-generic. Posso excluir aqueles com extra?
Mads Skjern #
Isso foi extremamente útil, mas não resolveu completamente o meu problema (a limpeza de um kernel antigo ainda estava falhando). Eu tive que remover manualmente alguns arquivos antigos do kernel. Eu encontrei alguns grandes usando find /boot/ -type f | xargs du | sort -n. Meu kernel atualmente em execução é 3.13.0-66-generic, então eu não sou cuidadoso para qualquer coisa de exclusão relacionadas com isso, mas eu fiz remover a seguinte: sudo rm /boot/initrd.img-3.13.0-63-generic /boot/initrd.img-3.13.0-65-generic /boot/vmlinuz-3.13.0-65-generic /boot/vmlinuz-3.13.0-63-generic. Por fim, a limpeza de execução em um kernel antigo é bem-sucedida.
BLONG
4
se você realmente tiver 0 bytes livres, isso não funcionará como o @blong disse. você precisa remover manualmente algum arquivo vmlinuz antigo antes, porque o processo de limpeza precisa criar alguns arquivos e, se restarem 0 bytes, isso falhará.
pomarc 21/06
1
Como sei quais kernels são antigos? Minha saída é linux-image-4.10.0-42-generic linux-image-4.13.0-26-generic linux-image-4.13.0-32-generic linux-image-4.13.0-37-generic linux-image -4.13.0-38-generic linux-image-4.13.0-39-generic linux-image-4.13.0-41-generic linux-image-4.13.0-43-generic linux-image-4.8.0-36 -generic
jacob
25

A causa era de fato imagens antigas do kernel.
Para limpar tudo o que eu precisava fazer era executar uma linha:

sudo apt-get autoclean && sudo apt-get autoremove

Isso reconheceu automaticamente os antigos kernals e os removeu.

Selah
fonte
9

Pode ser que sua /bootpartição tenha acumulado muitas versões do kernel ao fazer atualizações ao longo do tempo. É provável que esta partição seja separada da sua partição de disco grande (montada como /). Você pode verificar o /bootespaço da partição assim (procure a linha com / boot):

df -h

Há uma boa página sobre como remover kernels antigos .

Em resumo, verifique sua versão atual do kernel, obtenha a lista do que está instalado e, em seguida, apt-get remova as versões antigas. Há também um comando de uma linha "mágico" na página que fará tudo isso por você. Mas use-o por sua conta e risco.

Instruções em mais detalhes:

  1. Obtenha a versão atual do kernel, a que você deseja manter :

    uname -r
    
  2. Obtenha a lista de todos os kernels instalados:

    dpkg -l | grep linux-image-
    
  3. Execute o apt-get remove nos kernels que você deseja remover. Não no último ! Por exemplo:

    sudo apt-get remove linux-image-2.6.32-22-generic
    

Mais notas:

  • dpkg -linformará o status do pacote (kernel) antes do nome do pacote. Por exemplo:

    rc  linux-image-3.13.0-39-generic  ...
    ii  linux-image-3.13.0-40-generic  ...
    
    • "RC" significa que o pacote é r emoved e tem c ONFIGURAÇÃO arquivos. Estes você não precisa mais remover.
    • meios "II" que o pacote está marcado para i nstalação e é i nstalled

    Com base nisso, você pode listar apenas os pacotes do kernel que estão instalados:

    dpkg -l | grep "ii.*linux-image-"
    

Solução alternativa , usando a ferramenta GUI Ubuntu Tweak .

Instale e vá para o Computer Janitor, verifique os pacotes Sistema-> Kernel antigo e Sistema-> desnecessários e pressione Limpar.

elomage
fonte
3

Use este script para remover todos os outros kernels antigos que saem da versão atual e anterior (última versão do kernel)

KERNELMAGES=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-image/g'`

KERNELHEADERS=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-headers/g'`

for PURGEKERNEL in `echo $KERNELMAGES $KERNELHEADERS`; do

apt-get autoremove -y && apt-get purge $PURGEKERNEL -y

done
PKumar
fonte
Funcionou perfeito, mesmo quando não consegui responder a "Paradiesstaub" na linha de comando.
bulltorious 29/08
Estou ficando "Permissão negada" ...
Richard Hardy