fedora下对内核版本的简单操作
最近,由于对fedora的升级,导致系统中有多个版本的kernel,每次开机看到一列的引导项总觉得别扭,所以闲来无事,研究一下fedora下如何安装,升级,卸载内核。为了放遗忘,把资料汇总整理写在这里。
一、kernel的升级
yum update
命令可以直接升级fedora中的所有程序,当然也包括kernel
yum update kernel*
命令可以只升级kernel
二、kernel的安装
1. 安装内核
sudo yum -y install kernel-XXXXX(版本号)
2. 安装内核源码 [1]
fedora中,默认好像是不附带源代码的(我安了几次都没有找到),所以,如果要安装驱动和某些第三方软件时,需要重新编译,就需要下载kernel源码。
1. 安装Kernel Headers(头文件)
这个包提供了KernelHeaders和makefiles。它们足以应付kernel包中的模块编译。如果你需要安装驱动和某些第三方软件,你应该很需要Kernel Headers。如果一个驱动要求内核源码,那么也许安装Kernel Headers就已经足够了。
Kernel Headers通过安装kernel-devel
RPM包就可以得到。这个包可能没有被Fedora自动安装。
安装方法:
uname -a://查看当前kernel版本
sudo yum install kernel-devel;//安装相应版本的包
2. 安装Kernel Source(内核源码)
一般来说无须安装Kernel Source,除非你有一些特别的原因想要重新编译你的内核源码。无论如何Kernel hesders都是必须的。
围绕Kernel Sourcede的安装有三个基本步骤。
1. 下载你想要的内核源码
2. 安装SRC.RPM包
3. 使用rpmbuild将源码转换成可用状态
1.下载内核源码
-
获得内核源码(对于默认的Fedora内核源码)
默认的内核源码可以通过任意Fedora镜像找到。在相应版本号目录下的 “/source/SRPMS/”目录中可以找到。
示例:http://mirrors.ustc.edu.cn/fedora/linux/releases/20/Fedora/source/SRPMS/k/kernel-3.11.10-301.fc20.src.rpm -
获得源码(对于已经升级过的Fedora内核源码)
如果你升级了你的内核,那么通常来说通过Fedora updates会有2或3个内核源码是可用的。可以在镜像站点上的update目录中寻找。
示例:http://mirrors.ustc.edu.cn/fedora/linux/updates/20/SRPMS/kernel-3.16.3-200.fc20.src.rpm -
通过’yum’来获得内核源码(最新的Fedora内核源码)
yum工具可以下载最新的内核源代码。
//使用yumdownloader下载源码到downloads文件夹
sudo yum install yum-utils
cd downloads
yumdownloader –source kernel
2. 安装内核源码
安装你之前选择下载的kernel.src.rpm
sudo rpm -ivh kernel-2.6.23.1-42.fc8.src.rpm
//忽略group kojibuilder does not exist
//或者 user kojibuilder does not exist 警告
3. 准备内核源码
这一部分没有尝试,暂定,以后有机会在修改
将源码转成可用状态:
sudo rpmbuild -bp –target=$(uname -m) /usr/src/redhat/SPECS/kernel.spec
源文件可以在/usr/src/redhat/BUILD/kernel-2.6.23/目录中找到。
这里有两个有用的目录:
1. Linux-2.6.23.ARCH/
这里有包含了Fedora 补丁和更新的标准kernel.org内核源码。系统架构与uname -m的输出相匹配,一般来说是i686 ,如果你想,你可以让–target=选项使用noarch参数。
2. 0vanilla/
这里只包含标准的kernel.org的kernel(没有补丁和更新).
NOTE: Fedora编译和配置内核源码的详细过程可以在Fedora Wiki中找到。
三、卸载Linux内核[2]
1. 查找系统中所有内核
rpm -qa |grep kernel //查找系统中旧的内核
2. 卸载对应版本的内核
rpm -e kernel-PAE-devel-2.6.18-164.el5
3. 验证内核是否卸载成功
卸载后可以用命令查看系统中现在的内核版本如下
rpm -qa |grep kernel