[ 分享 ][ 小技巧 ] 如何清理多余内核

当然,这不是要教你怎么把系统给毁了。但是确实有可能这让你的系统毁了,所以在进行一下操作时要格外小心。

有两种情况我们要删除内核。

  1. 清理旧内核

不可避免,我们的软件需要升级,内核也一样。在默认的情况下 Linux 会保留旧的内核,运行

rpm -qa | grep kernel

我们可能会看到类似这样的信息

 kernel-pae-3.7.10-1.11.1.i686
 kernel-pae-3.7.10-1.16.1.i686

我们很容易分辨的出有一个比较老旧而另一个比较新,在使用了一段时间以后证明新内核没有问题了,你就可以把旧的内核删除了。一来可以节约硬盘空间,二来省得看着引导界面一大串心烦。

在删除之前我先要检查自己现在运行的是什么内核,以免误删

 uname -r

你可能看到类似输出

3.7.10-1.16-pae

确定完了以后我们可以使用以下命令删除

 rpm -e 你要删除的内核 

在这里就是

 rpm -e kernel-pae-3.7.10-1.11.1.i686

或者不检查依赖关系直接删除,但请谨慎使用

 rpm -e --nodeps kernel-pae-3.7.10-1.11.1.i686
  1. 彻底删除某一类不需要的内核

这种情况是这样的,比如我现在有 kernel-pae 和 kernel-desktop 两类内核,现在我打算以后就使用 desktop 内核了(顺便提一下,openSUSE 的桌面内核是针对桌面做过特别优化的,pae 内核则是针对 32 位计算机又带有 4G 以上内存的),那么现在我们要删除 kernel-pae。

理论上非常简单,在 YaST 里删除,或者使用 zypper 就可以了。

 zypper rm -u kernel-pae

但是实际上可能出现一些问题,

 正在读取已安装的软件包...                                                                                                                                               
正在解决软件包依赖关系...                                                                                                                                               
                                                                                                                                                                        
将安装以下新软件包:                                                                                                                                                    
  kernel-pae-base                                                                                                                                                       
                                                                                                                                                                        
将移除以下软件包:                                                                                                                                                      
  kernel-pae ndiswrapper-kmp-pae ndiswrapper-kmp-pae                                                                                                                    
                                                                                                                                                                        
1 个软件包将新装, 3 个软件包将移除.

没错,它会自动给你安装上 kernel-pae-base,pae 内核依然会在引导界面出现。即使使用上面那种情况的删除,系统检查完依赖关系以后还是会给你装上,这时你需要删除一个软件

zypper rm -u iscsitarget-kmp-pae

然后再运行上面的命令就可以删除了。当然,如果你要删除 desktop 内核,那就要删除 iscsitarget-kmp-desktop 了。

这个这个软件包是干什么用得呢?可以看 这里 ](http://software.opensuse.org/search?p=1&baseproject=openSUSE:12.3&q=iscsitarget)

那么又是怎么发现这个软件包的呢?

一般的笨办法,比如我要删除 pae 的内核,发现无法删除,怀疑有软件依赖它,于是就在 YaST 里搜索 pae 字眼。其中 ndiswrapper-kmp-pae ndiswrapper-kmp-pae 是可以通过 zypper rm -u 直接删除的,剩下的就是这个 iscsitarget-kmp-pae 了,查找一下资料了解一下,完了再实际操作一下,果然是这样的。

1赞

谢谢,删掉了 4 条,还有好多条不知道什么用的

我用了Tumbleweed更新之后kernel-desktop-base-3.7.10-1.16.1.x86_64 这个包一直卸载不了,今天发现是ndiswrapper 和virtualbox 这两个应用的kmp 包,直接用 `rpm -e’ 手动找依赖关系卸载掉,现在只有一个内核,200M /boot 分区终于没压力了。已经遇到过一次/boot 分区空间不足导致更新失败,重启就Kernel Panic 了。

Yast2 的软件包管理器,右击 软件包 --> 显示依赖关系解决器信息,老是提示“此功能需要 libqdialogsolver 软件包。” 现在 libqdialogsolver1-devel-1.3.1-2.10.2.x86_64 和 libqdialogsolver1-1.3.1-2.10.2.x86_64 这两个包已经安装了,还是有这个提示。

以前用11.2 的openSUSE 就会提示 zypper 和 /usr/lib/packagekitd 有冲突, 现在还有,谁知道这个怎么解决么?

Ubuntu 下有 Ubuntu Tweak.
希望 OpenSUSE 下也能出个小白软件.


!](https://lizards.opensuse.org/wp-content/uploads/2009/12/multiversion2.png)

1赞

凌厉的回击!触地得分!yeah!