当前位置: 首页>>技术教程>>正文


从 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)

/etc/grub/menu.lst 中删除那些额外的“Ubuntu 10.10,内核”行是否安全?目前我有 commented-out 从第三个到(不包括)memtest86。但我想知道是否出于特定原因需要它们?

最佳答案

安全但毫无意义。下次 update-grub 运行时,它们可能会弹出。

内核作为软件包安装,因此可以像其他软件包一样删除。\n与仅使用 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

注意:这仍然会克服棘手的情况。如果您安装了 HWE 堆栈,它将删除 linux-image-generic 之类的内容。这对您来说可能是大问题,也可能不是大问题。这些软件包(尽管它们看起来很重要)不会 cascade-delete 您的整个桌面。您将保留当前(因为它可以工作)和最高版本的内核。如果您最近重新启动,这可能是一样的。

次佳答案

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14053.html,未经允许,请勿转载。