Toda vez que instalo um novo kernel Linux, ele fica no grub_config, tornando o menu de inicialização cada vez mais longo.
Eu sei que posso pesquisar manualmente os pacotes instalados e removê-los.
O Ubuntu fornece alguma maneira mais fácil de limpá-los ou impedi-los de aparecer na lista de inicialização?
16.04 e versões mais recentes do Ubuntu
Este comando remove pacotes que foram instalados automaticamente para resolver uma dependência, mas agora não são mais dependentes. Isso inclui versões antigas de
linux-headers-*
elinux-image-*
. (Também é inteligente sobre esse processo, deixando uma versão sobressalente do kernel como substituto!)11.10 e versões mais recentes do Ubuntu
GRUB2 e sua exibição de todos os kernels
As versões mais recentes do Grub2 instaladas no Ubuntu exibem automaticamente o kernel mais recente e ocultam os kernels mais antigos que você pode ter instalado.
Se você não vir seu grub - lembre-se de pressionar Shiftdurante a inicialização.
Como você pode ver, apenas o kernel mais recente é exibido.
Se você selecionar a opção mostrada (pressione Enter), todos os kernels antigos ficarão visíveis e disponíveis para inicialização.
Como excluir permanentemente kernels mais antigos
Primeiro inicialize com o kernel mais recente disponível.
Existem várias maneiras de excluir kernels antigos. Pessoalmente, eu não tocaria no Computer Janitor, pois isso é reconhecido por quebrar seu computador com suas sugestões.
sináptica
An alternative is Synaptic (
sudo apt install synaptic
)search for linux-image, right-click a kernel and choose complete removal and finally click the Apply button to delete the kernel.
Repeat the search but this time for linux-header - you can delete the associated headers for the kernel image chosen previously.
Synaptic though will not attempt to verify what you are trying to remove... you could inadvertently delete your newest kernel - or even delete all of your kernels via this tool leaving you with an unbootable Ubuntu!.
Remember to check which kernel you are using type:
The result would be similar to:
Remember the result and the number - make sure you don't delete the corresponding image or header.
Recommendation
My recommendation is to keep at least two or preferably three kernels including the latest. The reason for the recommendation is that you will have at least one/two other kernels to boot with, if for what-ever reason the latest kernel you are unable to boot with or introducing a regressed capability such as broken wireless.
First, reboot your System to be sure it is using the latest kernel. Then open terminal and check your current kernel:
DO NOT REMOVE THIS KERNEL!
Next, type the command below to view/list all installed kernels on your system.
Find all the kernels that lower than your current kernel. When you know which kernel to remove, continue below to remove it. Run the commands below to remove the kernel you selected.
Finally, run the commands below to update grub2
Reboot your system.
My one-liner to remove old kernels (this also frees up disk space)
Explanation (remember,
|
uses the output of the previous command as the input to the next)dpkg --list
lists all installed packagesgrep linux-image
looks for the installed linux imagesawk '{ print $2 }'
just outputs the 2nd column (which is the package name)sort -V
puts the items in order by version numbersed -n '/'`uname -r`'/q;p'
prints the lines before the current kernelxargs sudo apt-get -y purge
purges the found kernelsUnwinding the
sed
invocation:-n
tellssed
to be quiet`uname -r`
outputs the current installed kernel release - we include it in backticks so that the output is includes as part of the command (you might also see this as$(uname -r)
/something/q
says stop when you match 'something' (in this case, something is output ofuname -r
) - the/
surround a regular expressionp
is print;
is the command separtor, so/something/q;p
says quit when you match something, else printaltogether,
sed -n '/'`uname -r`'/q;p'
is print the lines until it matches with the current kernel name.If you're paranoid (like me), you can make the last part
xargs echo sudo apt-get -y purge
so that the command to purge the old kernels is printed, then you can check that nothing unexpected is included before you run it.Modified version to remove headers:
Note: the
sed
invocation is modified."$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"
extracts only the version (e.g. "3.2.0-44") , without "-generic" or similar fromuname -r
All-in-one version to remove images and headers (combines the two versions above):
Ubuntu 16.04+:
Ubuntu 15.10 and below:
I find this to be the easiest and quickest way. It keeps the latest kernel as well as two more:
To change the number of additional kernels that are kept:
Removendo entradas do Grub 2 As entradas devem ser removidas editando ou removendo arquivos na pasta /etc/grub.d. O arquivo /boot/grub/grub.cfg é somente leitura e normalmente não deve exigir edição.
Muitos Kernels?
Se você não tem certeza do kernel que está usando atualmente, em um terminal digite uname -r .
Kernels removidos via APT (Synaptic, "apt-get remove", etc.) atualizarão automaticamente o grub.cfg e nenhuma ação do usuário é necessária.
Uma ótima ferramenta para remover kernels (e entradas de menu) é o Ubuntu-Tweak, um aplicativo GUI seguro e fácil de usar.
Instale o ajuste do Ubuntu
O Ubuntu-Tweak estará disponível em Aplicativos > Ferramentas do Sistema.
Remover entradas mais antigas do kernel
Selecione “Package Cleaner” à esquerda e “Clean Kernel” no painel direito.
Pressione o botão "Desbloquear" no canto inferior direito, digite sua senha.
Selecione na lista exibida as imagens e cabeçalhos do kernel que você deseja remover. O kernel em uso não está listado.
Pressione o botão "Limpar" no canto inferior direito para remover as imagens e cabeçalhos do kernel selecionados.
Remover sistemas operacionais do menu Grub
Outros sistemas operacionais que foram removidos do computador também serão removidos do menu assim que "update-grub" for executado como root.
Os itens de menu são colocados no menu Grub2 por scripts. Se você não quiser que outros sistemas operacionais sejam inseridos no menu, desative /etc/grub.d/30_osprober
Execute este comando para interromper a execução do script
sudo chmod -x /etc/grub.d/30_os-prober
DISABLE_30_OS-PROBER='true' em /etc/default/grub
Remova o Memtest86+ do menu Grub
sudo chmod -x /etc/grub.d/20_memtest86+
Fonte
Nota: Após as atualizações do kernel, uma nova entrada é adicionada ao menu GRUB. Você pode remover a mais antiga, se desejar. precisa inicializar uma versão mais antiga do kernel para fins de solução de problemas.
Maneira alternativa de remover entradas do Kernel (antes de 10.04)
para GRUB não GRUB2
gerente de startup
Você pode encontrá-lo em System>>Administration>>
Você vê na segunda captura de tela que pode selecionar quantos kernels mostrar? Eu geralmente apenas o mantenho em 1, mas quando recebo uma atualização do kernel, sempre o mudo para 2 antes de reiniciar, para que eu possa selecionar o kernel mais antigo se o novo kernel tiver problemas com meu hardware. Uma vez que eu sei que o novo kernel está funcionando bem, eu o mudo de volta para 1.
Puramente linha de comando, isso removerá todos, exceto o atual e o segundo mais atual (através do "-2" no comando head abaixo):
Update:
purge-old-kernels
is deprecated nowadays.I made a script to purge kernels even in tricky conditions. It is called
linux-purge
and you can find it here.If you just want to purge the kernels (and the related packages) that are older than the currently used kernel, when system is not broken, you could use this script.
There is also an Ubuntu documentation page that I have contributed to concerning removing old kernels here.
You can follow the Using the "unattended-upgrades" package section of Automatic Security Updates article on Ubuntu Wiki to perform this.
You need to change the following line in /etc/apt/apt.conf.d/50unattended-upgrades file;
with
to automatically remove old packages, including kernels.
Also remove or comment the line
in the "NeverAutoRemove" section of the file /etc/apt/apt.conf.d/01autoremove.
The fastest/simpler way (Applicable at least since 12.04) possible that already comes with Ubuntu is
apt-get
. Do the following if you wish to remove all older kernel versions that are not in use (Except the previous one that you are no using. This is to make sure that if the current kernel version fails in some way, you have a way to go back to a previous state). Do the following:This will eliminate any old files (Including kernel versions) you may have. Note that if you have many old versions, it will take a while since it has to make sure that removing the kernel version has no issues. For me, removing the last 12 kernel versions took about 2 minutes. You can also do the following:
Which will eliminate everything downloaded and stored in the cache folder of apt. Lastly you have:
which would check for any unused packages and remove them if necessary. This is great for those libraries and dependency packages that are no longer needed byt any app installed.
Para descobrir quais kernels e cabeçalhos estão instalados, use
Você pode removê-los um por um ou juntos, apenas certifique-se de manter o mais recente.
Existem também alguns comandos e scripts úteis para automatizar a remoção.
http://ubuntuforums.org/showthread.php?t=1658648
As seguintes reivindicações para remover todos os kernels e cabeçalhos não utilizados:
(use
apt-get -y
para remover sem questionar)Aqui está o que acontece quando executado em 18.04.1: