删除 Grub 中的旧内核条目

删除 Grub 中的旧内核条目

我定期使用 Synaptic 删除旧内核,只留下最新的两个条目。

我正在使用 Precise。但是在我的 Grub“以前的 Linux 版本”菜单中,有不少条目标有 2.6.8。我在 Synaptic 中找不到这些 linux 映像。

dpkg -l | grep linux-image

给出:

rc  linux-image-3.0.0-17-generic           3.0.0-17.30                         
    Linux kernel image for version 3.0.0 on x86/x86_64
ii  linux-image-3.2.0-27-generic           3.2.0-27.43
Linux kernel image for version 3.2.0 on 32 bit x86 SMP
ii  linux-image-3.2.0-29-generic           3.2.0-29.46
Linux kernel image for version 3.2.0 on 32 bit x86 SMP
ii  linux-image-3.4.0-030400-generic       3.4.0-030400.201205210521
Linux kernel image for version 3.4.0 on 32 bit x86 SMP
ii  linux-image-generic                    3.2.0.29.31
Generic Linux kernel image

Sudo update-grub 给出:

Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.4.0-030400-generic
Found initrd image: /boot/initrd.img-3.4.0-030400-generic
Found linux image: /boot/vmlinuz-3.2.0-29-generic
Found initrd image: /boot/initrd.img-3.2.0-29-generic
Found linux image: /boot/vmlinuz-3.2.0-27-generic
Found initrd image: /boot/initrd.img-3.2.0-27-generic
Found linux image: /boot/vmlinuz-2.6.38-11-generic
Found initrd image: /boot/initrd.img-2.6.38-11-generic
Found linux image: /boot/vmlinuz-2.6.38-10-generic
Found initrd image: /boot/initrd.img-2.6.38-10-generic
Found linux image: /boot/vmlinuz-2.6.38-8-generic
Found initrd image: /boot/initrd.img-2.6.38-8-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows Vista (loader) on /dev/sda1

sudo apt-get remove linux-image-2.6.8-8-generic 给出:

E: Unable to locate package linux-image-2.6.8-8-generic
E: Couldn't find any package by regex 'linux-image-2.6.8-8-generic'

我的启动文件夹包含以下内容:

abi-2.6.38-10-通用 initrd.img-3.4.0-030400-通用
abi-2.6.38-11-通用 memtest86+.bin
abi-2.6.38-8-通用 memtest86+_multiboot.bin
abi-3.2.0-27-通用 System.map-2.6.38-10-通用
abi-3.2.0-29-通用 System.map-2.6.38-11-通用
abi-3.4.0-030400-通用 System.map-2.6.38-8-通用
配置-2.6.38-10-通用系统.map-3.2.0-27-通用
config-2.6.38-11-通用 System.map-3.2.0-29-通用
config-2.6.38-8-通用 System.map-3.4.0-030400-通用
配置-3.2.0-27-通用 vmcoreinfo-2.6.38-10-通用
配置-3.2.0-29-通用 vmcoreinfo-2.6.38-11-通用
配置-3.4.0-030400-通用 vmcoreinfo-2.6.38-8-通用
extlinux vmlinuz-2.6.38-10-通用
grub vmlinuz-2.6.38-11-通用
initrd.img-2.6.38-10-通用 vmlinuz-2.6.38-8-通用
initrd.img-2.6.38-11-通用 vmlinuz-3.2.0-27-通用
initrd.img-2.6.38-8-通用 vmlinuz-3.2.0-29-通用
initrd.img-3.2.0-27-通用 vmlinuz-3.4.0-030400-通用
initrd.img-3.2.0-29-通用

ls -l /etc/grub.d
产量:

总计 56
-rwxr-xr-x 1 root root 6715 4月 17 20:16 00_header
-rwxr-xr-x 1 root root 5522 2011年10月1日 05_debian_theme
-rwxr-xr-x 1 root root 7407 5月 17 09:22 10_linux
-rwxr-xr-x 1 root root 6335 4月 17 20:16 20_linux_xen
-rwxr-xr-x 1 root root 1588 2011年5月3日 20_memtest86+
-rwxr-xr-x 1 root root 7603 4月 17 20:16 30_os-prober
-rwxr-xr-x 1 root root 214 2011年10月1日 40_custom
-rwxr-xr-x 1 root root 95 2011年10月1日 41_custom
-rw-r--r-- 1 root root 483 2011 年 10 月 1 日 自述文件
gdisk -l /dev/sda

产量:

分区表扫描:
  MBR:仅限 MBR
  BSD:不存在
  APM:不存在
  GPT:不存在


***********************************************************************
发现无效的 GPT 和有效的 MBR;将 MBR 转换为 GPT 格式。
***********************************************************************

磁盘 /dev/sda:312581808 个扇区,149.1 GiB
逻辑扇区大小:512字节
磁盘标识符 (GUID):F832A498-05E1-4615-B5B1-757ACB4A757A
分区表最多可容纳 128 个条目
第一个可用扇区是 34,最后一个可用扇区是 312581774
分区将按照 2048 个扇区边界对齐
总可用空间为 4183661 个扇区 (2.0 GiB)

编号 起始(扇区) 结束(扇区) 大小 代码 名称
   1 2048 61442047 29.3 GiB 0700 Microsoft 基本数据
   3 163842048 169986047 2.9 GiB 8200 Linux 交换
   4 169986048 312578047 68.0 GiB 0700 Microsoft 基础数据
   5 61444096 159666175 46.8 GiB 8300 Linux 文件系统

请帮助从 Grub 中删除旧的和不存在的内核。

答案1

  • 打开终端(Ctrl++ AltT

  • 输入uname -r。这将显示你当前正在使用的内核,因此你不需要删除它。

  • 运行以下命令:dpkg --list | grep linux-image。这将显示所有已安装的内核。

  • 记下您想要删除的所有内核的名称。

  • 要删除内核,请运行sudo apt-get purge linux-image-x.x.x.x-xyz:(用适当的名称替换内核名称)。

  • 更新 GRUB:sudo update-grub2

现在您已经完成了。

奖金:这里有一小行代码可以自动完成所有这些操作:

sudo apt-get purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )

答案2

我发现了这个问题所在。

问题是,当我通过 liveUSB 安装而不是进行正常升级来升级 Ubuntu 时,它在 /boot 文件夹中留下了旧的内核文件。

现在我以同样的方式从12.10升级到13.04,遇到了同样的情况。

解决方案是手动删除 /boot 文件夹中与旧内核相关的所有文件,然后运行sudo update-grub。多余的条目消失了。

答案3

apt-get remove试试这个命令。它是同一命令的精炼版本

sudo apt-get autoremove linux-image-3.2.0-23-generic-pae

通过更换消除自动移除,删除过程会自动查找并删除剩余的其他依赖项,因此您将获得干净的卸载,而不必到处删除剩余的内容。

对其他旧内核也重复该过程。

之后,运行

sudo update-grub

此后,您将只会看到最新的内核。

答案4

最巧妙的解决方案是使用ubuntu-tweak。安装后,启动它,转到Janitor,选择Old Kernel,选择您要删除的旧内核,然后Clean。就这样!(请注意,只有老的内核出现在看门人身上)

相关内容