删除Grub中的旧内核条目
我经常删除旧内核,只使用Synaptic留下最新的两个条目。
我正在使用Precise。 但是在我的Grub“以前的Linux版本”菜单中,有很多标记为2.6.8的条目。 我在Synaptic中找不到这些linux-images。
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-generic initrd.img-3.4.0-030400-generic abi-2.6.38-11-generic memtest86 + .bin abi-2.6.38-8-generic memtest86 + _multiboot.bin abi-3.2.0-27-generic System.map-2.6.38-10-generic abi-3.2.0-29-generic System.map-2.6.38-11-generic abi-3.4.0-030400-generic System.map-2.6.38-8-generic config-2.6.38-10-generic System.map-3.2.0-27-generic config-2.6.38-11-generic System.map-3.2.0-29-generic config-2.6.38-8-generic System.map-3.4.0-030400-generic config-3.2.0-27-generic vmcoreinfo-2.6.38-10-generic config-3.2.0-29-generic vmcoreinfo-2.6.38-11-generic config-3.4.0-030400-generic vmcoreinfo-2.6.38-8-generic extlinux vmlinuz-2.6.38-10-generic grub vmlinuz-2.6.38-11-generic initrd.img-2.6.38-10-generic vmlinuz-2.6.38-8-generic initrd.img-2.6.38-11-generic vmlinuz-3.2.0-27-generic initrd.img-2.6.38-8-generic vmlinuz-3.2.0-29-generic initrd.img-3.2.0-27-generic vmlinuz-3.4.0-030400-generic initrd.img中-3.2.0-29generics
和
ls -l /etc/grub.d
收益率:
总计56 -rwxr-xr-x 1 root root 6715 Apr 17 20:16 00_header -rwxr-xr-x 1 root root 5522 Oct 1 2011 05_debian_theme -rwxr-xr-x 1 root root 7407 May 17 09:22 10_linux -rwxr-xr-x 1 root root 6335 Apr 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 Apr 17 20:16 30_os-prober -rwxr-xr-x 1 root root 214 Oct 1 2011 40_custom -rwxr-xr-x 1 root root 95 Oct 1 2011 41_custom -rw-r - r-- 1 root root 483 Oct 1 2011自述文件
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中删除旧的和不存在的内核。
-
打开终端( Ctrl + Alt + T )。
-
键入
uname -r
。 这将显示您当前使用的内核,因此您不想删除它。 -
运行以下命令:
dpkg --list | grep linux-image
dpkg --list | grep linux-image
。 这将显示已安装的所有内核。 -
记下要删除的所有内核的名称。
-
要删除内核,请运行:
sudo apt-get purge linux-image-xxxx-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") )
我发现了这个问题。
问题是,当我升级Ubuntu时,通过liveUSB安装而不是正常升级,它留下了/ boot文件夹中的旧内核文件。
现在我已经以相同的方式从12.10升级到13.04,我遇到了同样的情况。
解决方案是手动删除/ boot文件夹中与旧内核相关的所有文件,然后运行sudo update-grub
。 额外的条目消失了。
试试这个命令。 它是同一个apt-get remove
命令的精炼版本
sudo apt-get autoremove linux-image-3.2.0-23-generic-pae
通过使用autoremove替换remove ,删除过程会自动查找并删除其他依赖项,因此您将获得一个干净的卸载,而不必去往那里并删除剩余部分。
对其他旧内核重复此过程。
之后,跑
sudo update-grub
之后,您将只看到最新的内核。
我通常只是启动Synaptic(这些天必须单独安装),在Installed类别中搜索“linux”并标记所有旧版本的内核和linux-headers(即除当前版本之外的所有版本)都要删除。 卸载时,它们将从GRUB菜单中删除。
必须有一个漂亮的单行命令才能做到这一点,但手动执行此操作会感觉更安全
最简单的解决方案是使用ubuntu-tweak
。 安装完成后,启动它,转到Janitor
,选择Old Kernel
,选择要删除的旧内核和Clean
。 而已! (请注意,只有旧内核出现在看门人中)
我建议你在终端会话中输入它( Alt – Ctrl – T ):
sudo update-grub
此命令使grub使用os-prober
并更新菜单。
如果你有使用grub的旧Ubuntu版本的分区(看起来OP在某个地方有一个natty release分区,可能更多),在当前系统上运行update-grub之前,还需要清理它们。 os-prober
找到Windows和其他Linux分区。 对于其他Linux分区,它会从grub菜单中复制项目(如果有的话),而不是查看其内核文件。
如果你有一个非常混乱的配置,最好的解决方案可能是启动你的Ubuntu系统并重新安装grub:
sudo apt-get --reinstall install grub2
重新安装grub时,它将重新创建/etc/default/grub
和/boot/grub/menu.cfg
文件,基于该分区中安装的内核以及安装在其他(可能是较旧的)Ubuntu分区的grub配置中的内核(似乎没有任何OP)。
适用于Ubuntu 12.04 LTS(精确)64位(非PAE 32位)
检查存在哪些版本:
sudo update-grub
删除最旧的第一个, 不要删除当前/最新版本:
sudo apt-get remove linux-image-3.2.0-23-generic sudo apt-get remove linux-image-3.2.0-24-generic sudo apt-get remove linux-image-3.2.0-25-generic
重新检查现在的版本。 (可选的)
注意: 如果您删除除最新版本(或仅保留一个版本)以外的所有版本,则此步骤是必需的 。
sudo update-grub
对于Ubuntu 12.04 LTS(精确)32位(PAE)
检查存在哪些版本:
sudo update-grub
删除最旧的第一个, 不要删除当前/最新版本:
sudo apt-get remove linux-image-3.2.0-23-generic-pae sudo apt-get remove linux-image-3.2.0-24-generic-pae sudo apt-get remove linux-image-3.2.0-25-generic-pae
重新检查现在的版本。 (可选的)
注意: 如果您删除除最新版本(或仅保留一个版本)以外的所有版本,则此步骤是必需的 。
sudo update-grub