问题描述
我的启动驱动器上的空间不足,所以我决定删除旧内核。我找到了这个页面,它描述了我应该做的事情:Lubuntu Documentation: Remove Old Kernels。
我手动删除了最老的内核,现在没关系,但我不明白一件事:在文章的最后有一些代码可以删除所有旧的内核版本,但它只标记为高级用户。
我真的不明白这里有什么危险。这听起来很愚蠢,但他们似乎说同时特定机器可能会使用多个内核。
我的Ubuntu机器上的不同应用程序是否可以同时使用不同的内核?为什么删除所有旧内核自动被认为是危险的?
最佳解决方案
删除旧内核本身并不安全,但如果删除所有内核并重新启动,您将被置于愤怒的Grub屏幕上。修复需要significant know-how(就像那样,但最后是apt-get install linux-generic
)。
第一次这样做是非常令人兴奋的,但是想要清理他们的Grub菜单或恢复一些磁盘空间的人并不是在寻找刺激。
用户copy-pasting的危险来自于他们不知道并且不承认风险的代码块 – 不适用。有许多检测旧内核的例子,很少是完美的。甚至my latest effort仍有其缺陷。我们正在讨论一个可以修复的问题;如果使用不当,Ask Ubuntu上的许多帖子都可能导致永久性数据丢失。
我们试图通过标记风险来防止损害,以使用户意识到潜在的问题。在最好的情况下,用户将准备和装备以处理问题,并且在最坏的情况下,至少他们不能抱怨他们没有被警告。
次佳解决方案
旧内核是包的一部分。如果您只是删除/boot/vmlinuz-3.13.0-44-generic
,您将全部留下包裹碎屑。
首先,找出您正在运行的内核。不要删除任何具有此值的名称:
$ uname -r
3.13.0-49-generic
因人而异。然后,问dpkg
它知道什么:
$ dpkg -l linux-*
其中一些包可以删除,但还有什么?使用从dpkg -l linux-*
输出中提取的一行(在MY系统上):
ii linux-image-3.13.0-44-generic 3.13.0-44.73 amd64 Linux kernel image for version 3.13.0 on 64 bit x86 SMP
现在我们将看到其他软件包名称中包含-3.13.0-44
的内容:
$ dpkg -l *-3.13.0-44*
在进行最终检查以确保当前内核(uname -r
)不在包列表中之后,您可以通过所选的包管理系统开始删除它们。