我可以从/boot目录中删除旧的内核吗?

当我运行dpkg --list 'linux-image*'时,输出显示我只安装了4.10.0-37版本。
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                      Version           Architecture      Description
+++-=========================-=================-=================-=======================================================
un  linux-image               <none>            <none>            (no description available)
ii  linux-image-4.10.0-37-gen 4.10.0-37.41      amd64             Linux kernel image for version 4.10.0 on 64 bit x86 SMP
ii  linux-image-extra-4.10.0- 4.10.0-37.41      amd64             Linux kernel extra modules for version 4.10.0 on 64 bit
ii  linux-image-generic       4.10.0.37.37      amd64             Generic Linux kernel image

然而,当我显示/boot的内容时,还有其他旧内核。
[~]$ ls /boot
abi-4.10.0-37-generic     config-4.8.0-37-generic   memtest86+.bin            vmlinuz-4.10.0-37-generic
abi-4.2.0-16-generic      efi               memtest86+.elf            vmlinuz-4.10.0-37-generic.efi.signed
abi-4.2.0-42-generic      grub              memtest86+_multiboot.bin      vmlinuz-4.2.0-16-generic
abi-4.8.0-37-generic      initrd.img-4.10.0-37-generic  System.map-4.10.0-37-generic  vmlinuz-4.2.0-42-generic
config-4.10.0-37-generic  initrd.img-4.2.0-16-generic   System.map-4.2.0-16-generic   vmlinuz-4.2.0-42-generic.efi.signed
config-4.2.0-16-generic   initrd.img-4.2.0-42-generic   System.map-4.2.0-42-generic   vmlinuz-4.8.0-37-generic
config-4.2.0-42-generic   initrd.img-4.8.0-37-generic   System.map-4.8.0-37-generic   vmlinuz-4.8.0-37-generic.efi.signed

我正在运行4.10.0-37版本。
[~]$ uname -r
4.10.0-37-generic

我可以安全地从/boot中删除旧内核()吗?使用sudo apt-get remove ...不起作用,因为它们当前并未“安装”。

你是怎么安装那些内核的?看起来最新的一个对 dpkg 来说是未知的。 - Zanna
是的,所有那些孤立的配置文件都可以安全删除。 - ravery
我使用 apt-get 安装了它们,但我认为一个较旧的“清理”工具可能留下了它们。 - Ralph
1个回答

您可以安全地从 /boot 目录中删除未使用的内核。
理想情况下,您希望使用软件包管理器 (apt) 进行卸载,所以您可能希望尝试使用以下命令进行删除:
sudo apt-get purge linux-image-4.2.0-16-generic

或者如果apt无法工作:
sudo dpkg --purge linux-image-4.2.0-16-generic

如果上述方法对于您想要删除的内核版本(如4.2.0-16、4.2.0-42等)无效,您可以手动删除它们。
sudo rm /boot/abi-4.2.0-16-generic
sudo rm /boot/config-4.2.0-16-generic
sudo rm /boot/initrd.img-4.2.0-16-generic
sudo rm /boot/System.map-4.2.0-16-generic
sudo rm /boot/vmlinuz-4.2.0-16-generic

或者如果你喜欢冒险一点,可以选择类似这样的内容:
sudo rm /boot/*-4.2.0-16-generic

有时候会保留一个额外的内核(与您正在运行的内核不同),以备份的形式存在,以防当前运行的内核出现问题,您可能希望这样做。
在删除这些文件后,如果您使用的是GRUB引导加载程序,您应该更新您的引导加载程序,您可以按照以下步骤进行操作:
sudo update-grub

我还会考虑一个可以从apt中删除软件包而不删除文件的"清理工具"是否对你有好处。

编辑:

正如WinEunuuchs2Unix所指出的那样,这不会删除头文件。通常在删除旧内核时,你不仅要删除镜像,还要删除其他相关文件。例如:

apt-get purge linux-image-4.2.0-16-generic linux-image-extra-4.2.0-16-generic linux-headers-4.2.0-16-generic linux-headers-4.2.0-16

请查看下方链接以获取更多详细信息。

1这不会删除头文件。尝试使用 rm-kernels 命令。参考链接:https://askubuntu.com/questions/892076/how-to-selectively-purge-old-kernels-all-at-once/892077#892077 - WinEunuuchs2Unix