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


36

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

我已经手动删除了最旧的内核,现在可以了,但是我不明白一件事:在文章的末尾有一些代码可以删除所有旧的内核版本,但是标记为仅适用于高级用户。

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

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


8
实际上,该文章中没有单词“危险”和“不安全”。您是如何得出如此严重夸大的结论的?
mikewhatever,2015年

2
几次,我已经升级到最新的内核,并在重新引导之前删除了旧的内核,却发现(在我的特定系统上)内核不起作用并且系统无法引导。现在,我先进行重新引导,然后在一切正常的情况下删除旧内核。
马修(Matthew)阅读

Answers:


50

删除旧内核并不是天生不安全的,但是如果删除所有内核并重新启动,您将被惹恼Grub屏幕。修复需要大量专业知识(像那样,但最后要有一个apt-get install linux-generic技巧)。

第一次执行此操作非常令人兴奋,但是希望清理Grub菜单或恢复某些磁盘空间的人们并没有为此感到兴奋。

危险来自用户的复制粘贴的代码块-unbeknownst他们并没有承认risks-不适用。检测旧内核的例子很多,而完美的例子很少。甚至我最近的努力仍然有其陷阱。我们正在谈论可以解决的问题;如果使用不当,Ask Ubuntu上的许多帖子可能会导致永久性数据丢失。

我们试图通过警告风险来使用户意识到潜在的问题,以防止损坏。在最佳情况下,用户将准备好并有能力处理问题,而在最坏的情况下,至少他们不能抱怨自己没有受到警告。


11
(显然)不要删除所有内核,也不要删除当前正在运行的内核,如果您刚刚安装了更新的内核并且尚未重启。为什么?如果更新的内核中有问题,则始终可以在Grub中选择以前的内核,然后恢复工作。否则,您将无法启动系统,而不得不玩“ LiveCD游戏”(不是娱乐游戏,顺便说一句)。
内森·奥斯曼

1
几乎和一样有趣dd if=/dev/zero of=/dev/sda bs=512 count=1。我不记得自己在做什么(关于多个启动管理器使我的生活烦恼)。我在LiveCD上花费了大约七个小时,试图修复分区表。
phyrfox

1
就是这么简单,保持(至少)一个经过测试并且可以正常工作的内核。我猜,有人-@NathanOsman-必须把它实际写成文字。在这里学到的第二个重要教训是,不要做一些你不知道后果的事情。
Nicolai 2015年

1
我不会使用“刺激”一词,但是当我这样做时,这种感觉是强烈的。
MDeBusk 2015年

过去已经解决了内核问题,所以我很乐意留下三个内核。我通常会选择当前正在运行的内核,最新的内核以及当前内核之前的那个。这为我提供了最新的重启信息,已知可以正常工作的信息,以及如果由于某种原因而失败的信息,则为最新信息。这可能是多余的,但CYA已批准。
flickerfly

4

旧的内核是软件包的一部分。如果您只是移走,/boot/vmlinuz-3.13.0-44-generic您将把面包屑留在各处。

首先,找出您正在运行的内核。请勿删除任何具有此值的名称:

$ uname -r  
3.13.0-49-generic  

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

$ dpkg -l linux-*

这些软件包中的一些可以删除,但是还有什么呢?使用从MY的输出中提取的一行(在MY系统上)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)不在软件包列表中,就可以开始通过所选的软件包管理系统删除它们。


0

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

简而言之,它很容易被弄乱,导致系统难以恢复。


0

这不是不安全的。使用Linux,如果知道正确的命令,则可以完全执行所需的操作。

/boot目录中,您可以简单ls -la地列出长长的清单,以及查找任何隐藏的文件或目录(如果有的话不应该存在!)。

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

在某个时候,我在想,如果您从源代码编译了内核,则可能需要调整一个新内核。根据.config您的解释,我认为情况并非如此,该文件将保留在该文件中。

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

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

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.