删除新内核/完整启动


8

我们有一些Ubuntu 16.04服务器。unattended-upgrades从16.04开始自动启用,并且引导分区位于单独的分区上。由于自动安全更新,引导分区的新内核空间不足。

我们不能只重启系统,所以机器仍在使用倒数第二个内核。

我应该删除哪些内核?除了当前的货币以外,所有货币都是最早的和最新的?

你们有一些建议吗?

我还注意到,最新内核的状态为“半配置”。该内核可能无法正常工作,因此我应该删除该内核并使用较旧的内核。

输出dpkg -l | grep linux image

    ii  linux-image-4.4.0-21-generic --> old kernel
    ii  linux-image-4.4.0-34-generic --> current kernel
    ii  linux-image-4.4.0-36-generic --> new kernel
    ii  linux-image-4.4.0-38-generic --> new kernel
    ii  linux-image-4.4.0-42-generic --> new kernel
    ii  linux-image-4.4.0-45-generic --> new kernel
    ii  linux-image-4.4.0-47-generic --> new kernel
    ii  linux-image-4.4.0-51-generic --> new kernel
    ii  linux-image-4.4.0-53-generic --> new kernel
    iF  linux-image-4.4.0-57-generic --> new kernel

Answers:


7

要清除旧内核,可以使用purge-old-kernels命令行工具。

该程序将从系统中删除旧的内核和头文件包,从而释放磁盘空间。它永远不会删除当前正在运行的内核。默认情况下,它将至少保留最新的2个内核,但用户可以使用--keep参数覆盖该值。任何其他参数将直接传递给apt-get

要安装purge-old-kernels,请运行:

sudo apt install byobu

要么

sudo apt install bikeshed

要保持最新的n内核运行:

sudo purge-old-kernels --keep n

e,g:n = 2

sudo purge-old-kernels --keep 2

更新grub

sudo update-grub

2
byobu可能是16.04 Xenuial所需的软件包:虽然现在建议purge-old-kernels将它从Trusty和Xenial 迁移bikeshedbyobu,但除非有没有安装建议,否则仍然可以得到该程序。bikeshedbyobu
沃尔夫冈

4

对于Ubuntu,Grub2自动显示最新的内核并隐藏较旧的内核。如果要查看它们,可以在引导时按Shift。

因此,在删除较旧的内核之前,请使用最新的可用内核进行引导(grub2在引导时默认加载它)。要检查您正在使用哪个内核,可以使用以下命令:

uname -r

推荐至少保留两个或三个内核,包括最新的内核。原因是如果发生无法使用最新内核启动的情况,则至少还有一个/两个其他内核可以启动。

要删除较旧的内核,请打开终端并检查您当前的内核:

uname -r 

然后列出系统上所有已安装的内核。

dpkg --list | grep linux-image 

查找所有低于当前内核的内核。运行以下命令以删除您选择的内核:

sudo apt-get purge linux-image-x.x.x.x-generic 

最后,运行以下命令以更新grub2

sudo update-grub2 

并重新启动系统。


1
从这个问题开始:“我们不能只重启系统”。您的答案需要这样做两次。
Lightness Races in Orbit

3

apt-get autoremove,定期运行,应该能够帮助您完成所需的工作。运行中的内核,先前的内核和两个最新的内核就足够了。


1
给定已安装内核的列表,以及正在运行的内核已旧的事实,我会说“正在运行的内核,先前的内核和两个最新的内核”。
史蒂芬·基特

2

引导以前的内核之一。

第一次尝试 apt autoremove --purge

如果不行 dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

控制将要卸载的内容。

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo dpkg -P 这将从下面的命令中清除列表内核。

sudo apt -f install

当然可以

 sudo update-grub
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.