我定期使用 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++ Alt)T。
输入
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
。就这样!(请注意,只有老的内核出现在看门人身上)