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

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

我手动删除了最老的内核,现在没关系,但我不明白一件事:在文章的最后有一些代码可以删除所有旧的内核版本,但它只标记为高级用户。

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

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

删除旧内核本身并不安全,但如果删除所有内核并重新启动,您将被置于愤怒的Grub屏幕上。 修复需要大量的技术诀窍 (就像那样,但最后使用apt-get install linux-generic )。

第一次这样做是非常令人兴奋的,但是想要清理他们的Grub菜单或恢复一些磁盘空间的人并不是在寻找刺激。

这种危险来自用户复制粘贴一段代码 – 他们不知道的代码而不承认风险 – 不适用。 有许多检测旧内核的例子,很少是完美的。 即便是我最近的努力仍有其缺陷。 我们正在讨论一个可以解决的问题; 如果使用不当,Ask Ubuntu上的许多post都可能导致永久性数据丢失。

我们试图通过标记风险来防止损害, 以使用户意识到潜在的问题 。 在最好的情况下,用户将准备和装备以处理问题,并且在最坏的情况下,至少他们不能抱怨他们没有被警告。

旧内核是包的一部分。 如果您只是删除/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 -runame -r软件包列表中之后,您可以通过所选的软件包管理系统开始删除它们。

我最后一次删除旧内核时,借用了一段旧的代码片段。 好吧,这段代码片段要求我在安装新内核后重新启动,所以我没有内核。 幸运的是,我在重新启动之前已经抓住了这个,但正如其他人所说,我可能已经离开了“愤怒的grub屏幕”。

简而言之,它只是容易搞砸的东西,导致一个难以恢复的砖砌系统。

这不是不安全的。 使用Linux,如果您知道正确的命令,就可以完全按照自己的意愿行事。

/boot目录中,你可以做一个简单的ls -la来获得一个很长的列表,以及找到任何隐藏的文件或目录(如果有的话,它们不应该存在!)。

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

在某些时候,我认为,如果你从源代码编译了内核,那么你可能需要调整一个新内核。 .config文件,根据你的解释我不认为是这种情况,将保留在那里。

因此,如果在删除与单个版本相对应的旧文件并重新启动计算机后,可能会遇到内核崩溃。

简单的解决方案是使用实时USB或CD / DVD Linux启动计算机。 chroot进入它,并使用dracut工具重新构建内核。