从/boot目录中删除旧的vmlinuz.*文件是否安全?

在/boot目录下有很多vmlinuz.*文件,追溯到4年前。删除其中一些是否安全?
编辑:大多数似乎还有与之配套的congig-3.*和System.map.*文件。我可能也想摆脱它们?还是选择其他方式?

1你应该删除内核包,而不仅仅是文件。 - zhongfu
1这些内核是来自您当前的安装,因此仍然在dpkg中吗?如果是这样,我一直使用synaptic。如果来自旧的安装并且您已经升级,它们将不会出现在dpkg或synaptic中以供删除,您必须手动删除它们。有几种方法可以清理内核:http://askubuntu.com/questions/2793/how-do-i-remove-or-hide-old-kernel-versions-to-clean-up-the-boot-menu - oldfred
太好了。这两条评论对我帮助很大。 - Matthew Brown aka Lord Matt
@oldfred,你的评论正是我所需要的。如果你想把它作为答案,我会很乐意接受。我猜社区维基是另一个选择吧? - Matthew Brown aka Lord Matt
1我认为这个链接几乎包含了删除旧内核的所有方法。你是否也检查了 /var/cache/apt/archives?可能是旧的 .deb 文件占用了空间。还要检查 dpkg -S /usr/src/* http://askubuntu.com/questions/301466/files-are-piling-up-in-usr-src-how-can-i-stop-this 根据14.04版本的设定,应该只保留2个内核,但不确定在我的系统上是否有效。请查看 /etc/kernel/postinst.d/apt-auto-removal。 - oldfred
/var/cache/...等目录下只有来自Tortoisehg和Mercurial的三个deb文件,但是dpkg -S /usr/src/*却列出了一个很长的清单。 - Matthew Brown aka Lord Matt
我进入了/usr/src/目录,并对所有版本为2.x.x的文件夹使用sudo rm -r命令进行了删除(大约一半)- 我认为这是正确的做法,对吗? - Matthew Brown aka Lord Matt
NB: 我也成功升级到了14.04。 :) - Matthew Brown aka Lord Matt
2个回答

如果您运行以下命令,它们将被自动删除:

sudo apt-get autoremove

更新:我找到了一个虚拟机,在那里我已经几周没有运行这些命令了。以下是输出结果,显示autoremove清理了/boot目录中的文件,从127M的大小减少到96M的大小。
stephane@steph-dev-vm ~> du -hs /boot/
127M    /boot/

stephane@steph-dev-vm ~> sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.16.0-30 linux-headers-3.16.0-30-generic linux-image-3.16.0-30-generic
  linux-image-extra-3.16.0-30-generic
Use 'apt-get autoremove' to remove them.

stephane@steph-dev-vm ~> sudo apt-get autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-3.16.0-30 linux-headers-3.16.0-30-generic linux-image-3.16.0-30-generic
  linux-image-extra-3.16.0-30-generic
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
After this operation, 281 MB disk space will be freed.
Do you want to continue? [Y/n] y
...
Found linux image: /boot/vmlinuz-3.16.0-31-generic
Found initrd image: /boot/initrd.img-3.16.0-31-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done

stephane@steph-dev-vm ~> du -hs /boot/
96M /boot/

1为什么要使用sudo apt-get autocleansudo apt-get clean命令? - A.B.
我经常运行这组命令。我忘记了其中哪一个是用来删除旧内核文件的。就像我写的那样,我认为是中间那个。 - Stéphane
3autoremove会删除不再需要的旧软件包,这些软件包是自动安装的(例如依赖项)。clean会删除由apt-get下载的所有本地缓存的.deb文件。autocleanclean相同,但只会删除那些已过时的.deb文件(服务器上不再提供的版本)。因此,autoclean包含在clean中,两者都不会触及已安装的软件包,只会清理缓存的.deb文件(如果你愿意,可以称它们为安装文件)。 - Byte Commander
1我无法确认这是否有助于从/boot目录中删除任何文件。有可能是我的apt-get命令出了问题,但也有可能是/boot目录已满。 - Matthew Brown aka Lord Matt
1早期版本没有删除内核,我相信他们已经修复了这个问题,因为有许多用户的驱动器LVM和/ boot分区已满。所以可能在14.04中有修复,但在12.04中没有。 - oldfred
我可以确认,自动清理确实清除了很多东西,但在我的12.04版本中并没有清除内核。 - Matthew Brown aka Lord Matt

答案似乎是有很多内核已安装,我应该将它们删除。
我使用sudo apt-get uninstall和通配符删除了最旧的内核。如果操作错误可能会有风险,但否则是有效的。