从 menu.lst 中删除旧内核是否安全?

从 menu.lst 中删除旧内核是否安全?

当计算机启动时,GRUB 除了显示通常的内容外,还会显示一长串以前的内核,例如

Ubuntu 10.10, kernel 2.6.35-23-generic
Ubuntu 10.10, kernel 2.6.35-23-generic (recovery mode)
Ubuntu 10.10, kernel 2.6.35-22-generic
Ubuntu 10.10, kernel 2.6.35-22-generic (recovery mode)
[6 more similar]
Ubuntu 10.10, memtest86+
Other operating systems:
Dell Utility Partition
Windows Vista (loader)

从中删除那些额外的“Ubuntu 10.10,内核”行是否安全/etc/grub/menu.lst?目前,我已将第三行注释掉,直到 memtest86(不包括)。但我想知道是否出于某种原因需要它们?

答案1

安全但毫无意义。下次update-grub跑步时,它们可能会再次出现。

内核作为软件包安装,因此可以像其他软件包一样被删除。与只使用 grub 相比,它的巨大优势在于您可以释放数百兆的磁盘空间。

它们以前是作为非自动安装的,但现在可以使用以下方法安全地删除:

sudo apt-get autoremove

如果你手动安装了内核和各种辅助包,则可以用以下命令查看安装的内核版本:

dpkg -l | awk '$2~/linux-(im|he|to).+[0-9]/ {print $2}'

这将向您显示类似这样的内容:

linux-headers-3.13.0-24
linux-headers-3.13.0-24-generic
linux-image-3.13.0-24-generic
linux-image-extra-3.13.0-24-generic

从那里你可以使用删除东西sudo apt-get purge <package-name>。只要确保你不要删除当前或最新的内核uname -a查看您使用的是什么版本)并且我同意其他人所说的,保留下一个最新版本以防出现问题。

这是我检测和执行此操作的最大努力安全地

current=$(uname -r)
kernels=( /lib/firmware/[0-9].* )

dpkg -l | awk '$2~/linux-(im|he|to).+[0-9]/ {print $2}' \
| grep -Ev "$current|${kernels[-1]##*/}" \
| xargs sudo apt-get purge

笔记:这仍然会破坏棘手的情况。它会删除诸如linux-image-generic是否安装了 HWE 堆栈之类的东西。这对你来说可能是也可能不是个大问题。那些包(虽然它们看起来很重要)惯于级联删除整个桌面。您将只剩下当前版本(因为它有效)和最高版本的内核。如果您最近重新启动过,那么它们可能是同一个。

答案2

是的。但我建议保留前一个,以防默认版本出现任何奇怪的问题。如果你碰巧至少有整整一周的测试没有问题,你可以删除旧版本并更新 grub 的配置。或者,如果你只是不想看到其他版本,那么只需编辑 grub.cfg 文件并删除那里的菜单选项,而无需删除实际的旧内核。这样你就可以以防万一。此外,内核并不大,不用担心,呵呵。

答案3

是的,这是安全的。但只有当您确定最新内核工作正常时才这样做。同时保留旧内核,以便在出现问题时可以手动启动它们。

答案4

从包管理器中删除它们,它们将自动消失

例如:

apt-get remove linux-image-2.6.35-22-generic

相关内容