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. dedecms织梦

    dedecms的安装,其修改连接数据库文件是:common.inc.php

  2. unable to open sync connection

    有些时候,在你向连接好的Android机器中按照程序时会遭遇失败,logcat提示“unable to open sync connection”. 一般情况下,重启手机几乎肯定可以解决这个问题. 如 ...

  3. CentOS云服务器数据盘分区和格式化

    1. 查看数据盘信息 登录CentOS云服务器后,可以使用“fdisk -l”命令查看数据盘相关信息. 使用“df –h”命令,无法看到未分区和格式化的数据盘,只能看到已挂载的. [root@VM_7 ...

  4. 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征(转载)

    (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...

  5. C函数及指针学习1

    1 大段程序注释的方法 #if 0#endif 2三字母词 以两个问号 开始的都要注意 3 字面值(常量) 在整型号字面值后加 字符L (long),U(unsigned)说明字符常量 为长整型 或( ...

  6. js部分---for循环练习题

    1有一张0.0001米的纸,对折多少次可以达到珠穆朗玛峰的高度8848: <script> /*var h=0.0001; var biao=0; for(;;) { h=h*2; if( ...

  7. Tomcat的JVM优化

    一.JVM管理内存段分类 1.线程共享内存 方法区:存储jvm加载的class.常量.静态变量.及时编译器编译后的代码等 java堆:存储java所有对象实例.数组等 2.线程私有内存 程序计数寄存器 ...

  8. HDU 1159 Common Subsequence

    HDU 1159 题目大意:给定两个字符串,求他们的最长公共子序列的长度 解题思路:设字符串 a = "a0,a1,a2,a3...am-1"(长度为m), b = "b ...

  9. hdu1058丑数(优先队列、暴力打表)

    hdu1058 题意:当一个数只有2.3.5.7这四种质因数时(也可以一种都没有或只有其中几种),这个数就是丑数,输出第 n 个丑数是多少: 其实并没有发现hdu把这道题放在 dp 专题里的意图,我的 ...

  10. -bash: crontab: command not found(转)

    操作步骤 1. 确认crontab是否安装: 执行 crontab 命令如果报 command not found,就表明没有安装 2. 安装 crontab 执行 yum install -y vi ...