Tenho 200 MB atribuídos para a /boot
partição. Sempre que tento atualizar o kernel, recebo uma mensagem de erro que basicamente diz que /boot
está cheia.
O que posso fazer para /boot
limpar e remover / fazer backup dos kernels antigos?
kernel
boot-partition
koba101
fonte
fonte
Respostas:
Método de linha de comando:
Primeiro verifique sua versão do kernel, para não excluir a imagem do kernel em uso, executando:
Agora execute este comando para obter uma lista dos kernels instalados:
e exclua os kernels que você não deseja / precisa executando:
Substitua VERSION pela versão do kernel que você deseja remover.
Quando você terminar de remover os kernels mais antigos, poderá executar isso para remover todos os pacotes desnecessários:
E, finalmente, você pode executar isso para atualizar a lista do kernel do grub:
fonte
sudo dpkg --list 'linux-image*' | grep ^ii
torna um pouco mais fácil ver apenas os kernels instalados. Também acho queupdate-grub
é inofensivo, mas não estritamente necessário, que é executado automaticamente quando você desinstala um kernel.sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo ""
para obter a lista de nomes de pacotes a serem usadossudo apt-get remove
.head -n -3
é usado para manter os 3 núcleos mais recentes restantes no sistema.apt-get remove `dpkg --list 'linux-image*' |grep ^ii | awk '{print $2}'\ | grep -v \`uname -r\``
sudo apt-get autoremove
deve ser suficiente (geralmente deixando-o com os 3 últimos kernels)/boot
está cheio, porapt-get
isso falhará com algum código de erro ou outro. A resposta abaixo é um pouco "hackier" (Devo confessar que eu tinha que me preparar para emitir querm -rf
em/boot
), mas o único que é provável que trabalhar nesta situação.NOTA: isto é apenas se você não puder usar o apt para limpar devido a uma inicialização 100% completa
Se o apt-get não estiver funcionando porque o seu / boot está em 100%, será necessário limpar / inicializar primeiro. Provavelmente, houve uma atualização do kernel em uma instalação parcial, o que significa que o apt praticamente congelou completamente e continuará dizendo para você executar,
apt-get -f install
mesmo que esse comando continue falhando.Obtenha a lista de imagens do kernel e determine o que você pode fazer sem. Este comando mostrará os kernels instalados, exceto o atualmente em execução
sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`
. Observe as duas versões mais recentes da lista. Você não precisa se preocupar com o que está sendo executado, pois ele não está listado aqui. Você pode verificar isso comuname -r
.Crie um comando para excluir todos os arquivos em / boot para kernels que não importam para você usando a expansão de chaves para mantê-lo saudável. Lembre-se de excluir a atual e as duas imagens mais recentes do kernel. Exemplo:
sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*
. Você também pode usar um intervalo com a sintaxe {80..84}.sudo apt-get -f install
para limpar o que está deixando o apt mal-humorado com uma instalação parcial.Se você encontrar um erro que inclua uma linha como "Erro interno: não foi possível encontrar a imagem (/boot/vmlinuz-3.2.0-56-generic)", execute o comando
sudo apt-get purge linux-image-3.2.0-56-generic
(com a versão apropriada).Finalmente,
sudo apt-get autoremove
para limpar os pacotes antigos de imagens do kernel que ficaram órfãos pela limpeza manual da inicialização.Sugestão, execute
sudo apt-get update
esudo apt-get upgrade
cuide de todas as atualizações que podem ter sido copiadas enquanto aguarda a descoberta da partição completa / inicialização.Sugestão2, reveja https://help.ubuntu.com/community/AutomaticSecurityUpdates e considere configurar a Atualização autônoma :: Remover-Não-Dependências-dependentes como verdadeira em /etc/apt/apt.aptf.d/50unattended-upgrades. Isso equivale a executar a remoção automática após cada atualização de segurança para garantir que você limpe os kernels não utilizados, mas também removerá outras coisas que considera não utilizadas, poupando-o desse problema no futuro.
fonte
dpkg --purge
em um boot completo você terá o seguinte$ sudo dpkg --purge linux-image-3.13.0-65-generic dpkg: dependency problems prevent removal of linux-image-3.13.0-65-generic: linux-image-extra-3.13.0-65-generic depends on linux-image-3.13.0-65-generic. dpkg: error processing package linux-image-3.13.0-65-generic (--purge): dependency problems - not removing Errors were encountered while processing: linux-image-3.13.0-65-generic
df -i
eu descobri que eu também estava ficando sem inodes em/
causa da enorme quantidade de arquivos para o código fonte de kernels mais antigos em/usr/src
Há documentação sobre isso em https://help.ubuntu.com/community/RemoveOldKernels
Em resumo: Use
A
purge-old-kernels
ferramenta pode ser instalada viasudo apt install byobu
. Aqui está a descrição da sua página de manual:Se você deseja uma solução copiar e colar, o ReSearchIT Eng sugeriu o seguinte:
fonte
apt-get autoremove --purge
deveria ser suficiente, no entanto.Eu descobri que é muito mais fácil abandonar a pequena partição e mudar
/boot
para a raiz. Isso também evita problemas de falta de espaço no futuro.Primeiro, mova seus dados da partição de inicialização para raiz (execute como
sudo -s
):Remova (ou comente) a
/boot
entrada em/etc/fstab
:Atualize o grub e verifique se está tudo correto:
apt
agora deve poder atualizar sem problemas.Isso deixa uma partição de 200mb não utilizada (que você pode usar para outra coisa se achar que vale a pena).
fonte
Removendo Kernels antigos (para liberar espaço no / boot), consulte: http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot
Então corra
fonte
sudo apt-get autoremove
Isso remove todos, exceto os 2 últimos kernels. Testado no Ubuntu 16.04 LTS quando
/boot
estava com 100% da capacidade eapt-get upgrade
falhou em sua última atualização do kernel. A remoção automática do kernel é iterativa; portanto, se você tiver vários kernels, eles serão removidos um de cada vez. Então seja paciente.fonte
Por que fazer manualmente quando você pode fazer isso com uma ferramenta? Você sabe que precisará disso novamente em 30 segundos, porque leva 30 segundos para eles enviarem uma nova atualização de kernal hoje em dia = P
Eu recomendo usar esta ferramenta, bootnukem
Então
Remova
--dry-run
quando confirmar que parece segurofonte