问题描述
当计算机启动时,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 文件并删除那里的菜单选项,而不删除实际的旧内核。这样你就可以拥有它们以防万一。而且内核也没有那么大,不用担心呵呵。