1、安装Kernel Headers(头文件)

  通过安装kernel-devel RPM包就可以得到Kernel Headers,但默认情况下没有被Fedora 20安装。通过DVD ISO 或者 yum在线安装的方式都可以安装系统内核头文件,这里先查看一下系统的内核版本:

[root@localhost SPECS]# uname -rm
3.16.-.fc20.x86_64 x86_64

  然后使用yum在线安装Kernel Headers:

[root@localhost SPECS]# yum install kernel-devel

2、下载并安装内核源代码

  在大多数情况下,有了Kernel Headers文件就可以编译系统相关的文件了,不需要再下载安装内核源代码。如果确实需要,则需要进行以下四个步骤来完成:

2.1 准备rpm编译环境

  编译内核源代码包需要借助两个工具:yum-utils和rpmdevtools。在线安装这两个工具的方式如下:

[root@localhost ~]# yum install yum-utils rpmdevtools

  安装这两个工具之后,可以使用如下命令生成源代码安装目录(将会在当前用户目录下生成rpmbuild子目录):

[root@localhost ~]# rpmdev-setuptree

2.2 下载与当前环境匹配的内核源代码

  使用yum在线下载内核源代码的命令如下:

[xiaoku@localhost Downloads]$ sudo yumdownloader --source kernel

2.3 安装SRC.RPM源码包

  切换到源代码文件所在的目录,执行如下命令安装内核的依赖性文件:

[root@localhost Downloads]# yum-builddep ./kernel-3.16.-.fc20.src.rpm

  注意,这里我使用的是root用户,如果是普通用户,请在前面添加sudo或者su -c加单引号。我在做的过程中发现安装了不少的依赖性文件,包括如下内容:

已安装:
asciidoc.noarch :8.6.-.fc20
audit-libs-devel.x86_64 :2.4-.fc20
binutils-devel.x86_64 :2.23.88.0.-.fc20
bison.x86_64 :2.7-.fc20
elfutils-devel.x86_64 :0.158-.fc20
flex.x86_64 :2.5.-.fc20
hmaccalc.x86_64 :0.9.-.fc20
newt-devel.x86_64 :0.52.-.fc20
pciutils-devel.x86_64 :3.2.-.fc20
perl-ExtUtils-Embed.noarch :1.30-.fc20
python-devel.x86_64 :2.7.-.fc20
xmlto.x86_64 :0.0.-.fc20 作为依赖被安装:
boost-regex.x86_64 :1.54.-.fc20
ctags.x86_64 :5.8-.fc20
docbook-dtds.noarch :1.0-.fc20
docbook-style-xsl.noarch :1.78.-.fc20
elfutils-libelf-devel.x86_64 :0.158-.fc20
graphviz.x86_64 :2.34.-.fc20
gts.x86_64 :0.7.-23.20111025.fc20
lasi.x86_64 :1.1.-.fc20
netpbm.x86_64 :10.61.-.fc20
sgml-common.noarch :0.6.-.fc20
slang-devel.x86_64 :2.2.-.fc20
source-highlight.x86_64 :3.1.-.fc20 完毕!

  安装的过程比较简单,但是默认会提示缺少用户mockbuild和组mockbuild,所以我干脆输入如下命令:

[root@localhost Downloads]# groupadd mockbuild
[root@localhost Downloads]# useradd mockbuild -g mockbuild
[root@localhost Downloads]# rpm -ivh kernel-3.16.-.fc20.src.rpm
正在升级/安装...
:kernel-3.16.-.fc20 ################################# [%]

2.4 使用rpmbuild编译源码包

  进入SPECS目录,准备编译源代码:

[xiaoku@localhost Downloads]$ cd ~/rpmbuild/SPECS/
[xiaoku@localhost SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec
构建目标平台:x86_64
为目标x86_64构建
错误:构建依赖失败:
pesign >= 0.10- 被 kernel-3.16.-.fc20.x86_64 需要
[xiaoku@localhost SPECS]$ sudo yum install pesign

  从上面的提示信息可以看出,第一次编译出了点问题,说是需要pesign版本大于0.10-4,这样的话手动yum在线安装一下即可。再次执行上述rpmbuild命令,就能够完成编译任务了。可以从用户目录下看到如下的情况:

[xiaoku@localhost kernel-3.16.fc20]$ pwd
/home/xiaoku/rpmbuild/BUILD/kernel-3.16.fc20
[xiaoku@localhost kernel-3.16.fc20]$ ls
linux-3.16.2-200.fc20.x86_64 vanilla-3.16

  这里有两个重要的目录:

1、linux-3.16.2-200.fc20.x86_64/arch

  这里有包含了Fedora 补丁和更新的标准kernel.org内核源码。系统架构与uname -m的输出相匹配,如果有需要,你可以让–target=选项使用noarch参数。 
2、
vanilla-3.16/

  这里只包含标准的kernel.org的kernel(没有补丁和更新)。

详细内容请参考从RPM包构建完整Fedora内核 官方WIKI

[原]在Fedora 20环境下安装系统内核源代码的更多相关文章

  1. ubuntu14.04英文环境下安装中文输入法

    ubuntu14.04英文环境下安装中文输入法 发表于1年前(2014-07-12 20:12)   阅读(4478) | 评论(0) 3人收藏此文章, 我要收藏 赞1 9月19日成都 OSC 源创会 ...

  2. centos7.2环境下安装smokeping对网络状态进行监控

    centos7.2环境下安装smokeping对网络状态进行监控 安装smokeping建议用centos7,用centos6.5一直卡在smokeping那里,下载不了perl的扩展插件,可能是因为 ...

  3. 【转】windows环境下安装win8.1+Mac OS X 10.10双系统教程

    先要感谢远景论坛里的各位大神们的帖子  没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区的 ...

  4. 在 windows 环境下安装 redislive

    这是一篇在 windows 环境下安装 redislive 的教程! 项目地址:https://github.com/nkrode/RedisLive 配置文档:http://www.nkrode.c ...

  5. windows环境下安装win8.1+Mac OS X 10.10双系统教程

    首先要感谢远景论坛里的各位大神们的帖子  没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区 ...

  6. 在 xampp 环境下安装 laravel

    网上搜了很多教程,很多都是采用命令行安装的.但是对于web前端来说,根本就不知道在干吗! 于是,打算写一篇文章,来教后面的人如何在 XAMPP 环境下安装 laravel. 初步认识 XAMPP(Ap ...

  7. Linux环境下安装Tigase XMPP Server

    Tigase是一种XMPP服务器,可以作为采用XMPP协议的各种IM(Instant Messeging)工具(如Pandion.Spark等)的服务器. 在Linux环境下安装Tigase的步骤如下 ...

  8. 【Oracle】在WIN NT 64位环境下安装win64_11gR2_database。并用PL/SQL连接

    因为现在大多数服务器环境均为64位环境,而且有一部分使用的windows server的环境,在此做了一番小研究,如何在64位环境下安装oracle11g_64bit服务端 (1)首先www.orac ...

  9. linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)

     linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...

随机推荐

  1. D - Charm Bracelet 背包问题

      Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Pra ...

  2. VirtualBox 设置共享文件夹自动挂载

    1.在VirtualBox中设置文件夹位置和名称,这里使用的名称是share 1.在ubuntu12.04的/etc/rc.local中加入自动挂载命令 sudo mount -t vboxsf sh ...

  3. 尽量多的以 const/enum/inline 替代 #define

    前言 在面向过程语言,如 C 语言中,#define 非常常见,也确实好用,值得提倡.但在如今面向对象的语言,如 C++ 语言中,#define 就要尽量少用了. 为何在 C++ 中就要少用了呢? 这 ...

  4. Apache CXF 102 CXF with REST

    前言 续上篇Apache CXF 101,摘抄部分REST概念性知识,以运行实例考察CXF对REST的支持. 目录 1 REST简介 2 工具 3 运行实例 内容 本Spike记录中内容,如无特别指出 ...

  5. 隐马尔科夫模型(HMM)的概念

    定义隐马尔科夫模型可以用一个三元组(π,A,B)来定义:π 表示初始状态概率的向量A =(aij)(隐藏状态的)转移矩阵 P(Xit|Xj(t-1)) t-1时刻是j而t时刻是i的概率B =(bij) ...

  6. WebSphere中对response.sendError()的处理与Tomcat不同

    不同的地方在于,同样的代码[response.sendError(1);] 在Tomcat下,response.getResponseCode()的值是 1,而在Websphere下面则是 500. ...

  7. JavaWeb学习记录(六)——用户登录功能之Cookie

    private Cookie nameCookie=null;    private Cookie passCookie=null;    private Cookie cookieUser;     ...

  8. Codeforces Round #124 (Div. 2)

    A. Plate Game 如果可以放置一个圆的情况下,先手将圆放置在矩形正中心,那么根据对称性,先手只要放后手的对称的位置即可,也就是先手必胜,否则后手胜. B. Limit 讨论\(n,m\)的大 ...

  9. hihoCoder挑战赛23

    hihoCoder挑战赛23 A.Emulator 题意 给一张图,有\(N(N \le 300)\)个点, 给出任意两点之间的最短路. 求最多可以去掉多少条边,使得任意两点的最短路长度不变. 思路 ...

  10. Unable to get valid context for root

    登陆时报以下错误Unable to get valid context for rootLast login: Wed Jul 24 02:06:01 2013 from 10.64.41.3 单机模 ...