为什么删除旧内核是不安全的?

为什么删除旧内核是不安全的?

我的启动驱动器空间不足,因此我决定删除旧内核。我发现这个页面准确描述了我应该做什么:Lubuntu 文档:删除旧内核

我已经手动删除了最旧的内核,现在没问题了,但有一件事我不明白:文章最后有一些代码可以删除所有旧内核版本,但它被标记为仅供高级用户使用。

我真的不明白这有什么危险。这听起来很傻,但他们似乎说一台特定的机器可能同时使用多个内核。

我的 Ubuntu 机器上的不同应用程序是否可以同时使用不同的内核?为什么自动删除所有旧内核被认为是危险的?

答案1

删除旧内核本身并不危险,但如果你删除全部你的内核并重新启动,你会看到一个愤怒的 Grub 屏幕。修复该问题需要重要技术诀窍(类似但apt-get install linux-generic末尾带有)。

第一次这样做时会非常刺激,但那些想要清理 Grub 菜单或恢复一些磁盘空间的人并不寻求刺激。

危险来自于用户复制粘贴一段不适用的代码——他们不知道并且没有意识到风险。有很多检测旧内核的例子,但很少有是完美的。即使我最近的努力仍然有缺陷。我们讨论的是可以修复的问题;如果使用不当,Ask Ubuntu 上的许多帖子可能会导致永久性数据丢失。

我们试图防止损害标明风险,让用户意识到潜在的问题在最好的情况下,用户将做好准备并配备处理问题的装备,而在最坏的情况下,至少他们不会抱怨没有收到警告。

答案2

旧内核是软件包的一部分。如果你直接移除,/boot/vmlinuz-3.13.0-44-generic软件包的残渣就会到处残留。

首先,找出您正在运行的内核。不要删除任何带有此值的内容:

$ uname -r  
3.13.0-49-generic  

YMMV。然后,询问dpkg它知道什么:

$ dpkg -l linux-*

其中一些软件包可以删除,但还有什么呢?使用从输出中提取的一行(在我的系统上)dpkg -l linux-*

 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)不在软件包列表中,您就可以开始通过您选择的软件包管理系统删除它们。

答案3

上次我删除旧内核时,借用了一个旧代码片段。好吧,这个代码片段要求我在安装新内核后重新启动,所以我没有内核。幸运的是,我在重新启动之前发现了这个问题,但正如其他人所说,我可能只剩下“愤怒的 grub 屏幕”。

长话短说,这只是一件很容易被搞乱的事情,导致系统崩溃,难以恢复。

答案4

这并不危险。使用 Linux,只要您知道正确的命令,您就可以做您想做的事情。

/boot目录中,您可以进行简单的操作ls -la来获得长列表以及查找任何隐藏的文件或目录(如果有的话,它们就不应该在那里!!)。

通过这些信息,您可以评估日期和旧版本的文件。不要删除所有文件,而是删除与同一版本相对应的最旧文件。

有一次,我在想,如果你从源代码编译了内核,那么你可能需要调整一个新的内核。.config根据你的解释,我认为文件不会保留在那里。

因此,如果删除了与单个版本相对应的旧文件并重新启动机器后,可能会遇到内核恐慌。

简单的解决方案是使用实时 USB 或 CD/DVD Linux 启动机器,chroot然后使用类似的工具重新构建内核dracut

相关内容