升级到新版本后如何删除旧内核?

在Grub引导菜单中包含这些内核条目很烦人。

评论

这是askubuntu.com/questions/2793/…的副本。

使用这些技术后,您可能需要运行:sudo rm -rf / lib / modules / <_ unused_kernels_modules_dirs_> ...

#1 楼

始终建议您保留2个最新版本的内核,但是要删除其他内核版本,我使用了以下命令:

dpkg -l | fgrep linux-image-




切勿删除uname -rlinux-image-generic-lts-utopic中显示的内核。 。

评论


对删除linux-image-generic-lts-utopic感到担忧,目前它还没有出现任何问题,但也许不要删除它。

–约翰·格雷罗(John Guerreiro)
15年7月1日在10:35

那是获取最新更新的元软件包,没有它,您将不会收到新的内核补丁。

–路易斯·戈达德♦
15年7月1日在10:40

谢谢,编辑以反映这一点。如果有人删除了此软件包,那么sudo apt-get install linux-image-generic-lts-utopic linux-headers-generic-lts-utopic应该可以修复它

–约翰·格雷罗(John Guerreiro)
2015年7月1日在10:50



顺便说一句,代码的每一端只需要1`,而不是3。

–user3
15年7月2日在10:04

#2 楼

您可以使用这种单行自动清除所有旧内核(如果您刚刚更新了内核,请确保在重新启动计算机之前执行此操作):它的作用是卸载(sudo apt purge $( dpkg --list | grep -P -o "linux-(headers|image)-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") ))已安装的软件包(apt purge),这些软件包的名称与“ linux-headers- [number]”或“ linux-image- [number]”(dpkg --list)相匹配,但(grep -P -o "linux-(headers|image)-\d\S+")与当前内核相对应版本(grep -v)。


来源:



CommandLineFu.com-原始灵感

问Ubuntu-使用apt的“清除”而不是“删除”)

询问Ubuntu-确保返回的条目可以安全地删除

堆栈溢出-在uname -r | grep -P -o ".+\d"grep中使用PCRE ,\d等)并使用\S选项

超级用户-使用-P使-o仅返回匹配的内容


评论


linux-image-extra呢?谢谢。

–金权
2015年9月19日15:38

@JinKwon这些似乎不太常用,但是您可以将“ linux-(headers | image)-\ d \ S +”替换为“ linux-(headers | image(-extra)?)-\ d \ S +”,该命令也将包括它们。

–waldyrious
2015年9月19日在16:35



#3 楼

您只需运行

sudo apt-get autoremove


即可“删除所有未使用的软件包”,其中包括较旧的内核。新内核有效!

更安全地保留John在其回答中指出的2个最新版本。

评论


不幸的是,autoremove默认情况下不会删除孤立的内核版本,其原因可能是它们可能无法使用,但可以通过包名将其传递,如下所示:help.ubuntu.com/community/Lubuntu/Documentation/ …

–路易斯·戈达德♦
15年7月8日在19:31

@LewisGoddard你是对的。我今天测试了它。我以为我过去曾经这样做过。所以我删除我的答案。可接受的答案效果很好

– davidak
2015年7月9日下午13:17

在32位系统上,我可以使用apt-get autoremove删除较旧的内核。我安装了3.16.0-43,安装了-41,并提出了自动删除38、39的建议。它还更新了grub配置。因此,也许也没有必要对上述答案中的任务进行手动操作。

– davidak
15年7月11日在17:24

#4 楼

要删除旧内核,您还可以使用synaptic

安装突触:显示并随后

右键单击选定的旧内核,然后选择linux-image







注意:屏幕截图只是我系统中的示例。我已经删除了旧内核。请根据您的系统选择旧内核。



#5 楼

删除旧内核:

(建议引导至最新内核)


手动删除:

首先列出当前内核:

uname -r


示例输出:3.19.0-28-generic
列出所有内核:

dpkg --list | grep linux-image


现在手动清除旧内核,(请确保不要清除当前内核)

例如:

sudo apt-get purge linux-image-3.16.0-34 linux-image-3.16.0-46 linux-image-3.16.0-48 linux-image-3.16.0-49 


注意:通常删除旧内核内核使用linux-image-x.x.x-x将x替换为数字。

自动:

-这里的输出不包括当前已加载/正在运行的内核。因此,请引导至最新内核。

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print }' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")


参考此处



#6 楼

UKUU是用于管理内核的基于GUI的优秀工具

 sudo apt-add-repository -y ppa:teejee2008/ppa
 sudo apt update
 sudo apt install ukuu


#7 楼

有一个更简单的方法:

sudo apt install byobu
sudo purge-old-kernels


就这样,它将保留2个内核版本并删除所有其他内核版本

评论


为什么拜by应该怎么办?

– RolandiXor
17年8月31日在19:47

仅仅因为命令/脚本purge-old-kernels包含在byobu软件包中,并且byobu默认安装在Ubuntu服务器上

–Jiab77
17年9月1日在6:50

我发现运行sudo apt autoremove --purge还会删除较旧的内核,并在清理后仅保留一个或两个版本。

–Jiab77
18年5月11日在17:08