当前位置: > CentOS > CentOS入门 >

获取Centos内核的源代码

时间:2016-07-17 22:03来源:linux.it.net.cn 作者:IT

英文版由 JohnnyHughes 创建。现时由 AlanBartlett 及 AkemiYagi 维护。

 


Contents 
或许你不需要整个内核的源代码
如果你真的需要整个内核的源代码 
CentOS 5 及 6


1. 或许你不需要整个内核的源代码

如果你需要编译一个内核的驱动程序模块,很大机会你并不是真的需要完整的内核源代码。你可能只需要kernel-devel组件。(然而,假若你肯定须要完整的源代码目录树,请遁从第二部份的指示。)

CentOS-6 只有一个 kernel-devel 组件: 
kernel-devel(32 及 64 位元的结构) 

CentOS-5 总共有三个 kernel-devel 的组件: 
kernel-devel(32 及 64 位元的结构) 
kernel-xen-devel(32 及 64 位元的结构) 
kernel-PAE-devel(只支持 32 位元的结构) 

如果你使用 standard 内核(举个例说),你可以这样安装 kernel-devel:

 

[root@host]# yum install kernel-devel  

你可以用这个指令来断定使用中的内核版本:

 

[root@host]# uname -r  

它的输出会有以下的样子:

 

2.6.18-308.8.1.el5xen  

在这个样例里,所安装的内核是 xen,而安装相关的 kernel-devel 组件的方法是:

 

[root@host]# yum install kernel-xen-devel  

获取Centos内核的源代码 - NanSen - NanSen 博客资料 请确定你已经安装了与你采用的内核吻合的 kernel-devel 组件。详情请参阅这条常见问题。

如果你的内核因为来自较旧的目录树而未被 yum 列出,你可以手动式地从 CentOS 地下室下载它。请选择你所需的 CentOS 版本,然后为你的 结构 在 os/结构/CentOS/RPMS/ 或 updates/结构/RPMS/ 目录内找寻 kernel[-类型]-devel-版本.结构.rpm 这个组件。

当你安装了合适的 kernel[-类型]-devel-版本.结构.rpm,便可以尝试编译你的模块。这样做是应该行得通的。假若事实并非如此,请提供反馈给模块的开发者,因为这是设计所有新内核模块时应采用的编译方式。


2. 如果你真的需要整个内核的源代码

如果你真的因为某个原因需要整个内核的源代码,它是有被提供的。


2.1. CentOS 5 及 6

以 root 的身份安装 rpm-build、redhat-rpm-config 及 unifdef 组件:

 

    [root@host]# yum install rpm-build redhat-rpm-config unifdef  

以一个不是 root 用户的账户,创建一个以 ~/rpmbuild 为基础的目录树:

 

    [user@host]$ mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}      [user@host]$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros  

获取Centos内核的源代码 - NanSen - NanSen 博客资料 我们强烈推荐你不要以 root 的身份创建组件。(见:Building Source RPM as non-root under CentOS)

从这些地方找寻内核的源代码组件: 下面的N代表:0-9

http://vault.centos.org/6.N/os/Source/SPackages/

http://vault.centos.org/6.N/updates/Source/SPackages/

http://vault.centos.org/5.N/updates/SRPMS/

http://vault.centos.org/5.N/os/SRPMS/

http://vault.centos.org/5.8/centosplus        可以在里面找到你的src.rpm包


(请以相关的更新版本编号取代 N。)

一旦你找到源代码组件,你可以执行这个指令来安装它:

 

[user@host]$ rpm -i http://vault.centos.org/6.2/updates/Source/SPackages/kernel-2.6.32-220.17.1.el6.src.rpm 2>&1 | grep -v mockb  

(针对 CentOS 6)— 或 —

[user@host]$ rpm -i http://vault.centos.org/5.8/updates/SRPMS/kernel-2.6.18-308.8.1.el5.src.rpm 2>&1 | grep -v mockb

(针对 CentOS 5)现在源代码组件已经安装了,请解压及预备源代码文件:

 

[user@host]$ cd ~/rpmbuild/SPECS  [user@host SPECS]$ rpmbuild -bp --target=`uname -m` kernel.spec 2> prep-err.log | tee prep-out.log  

`uname -m` 这个数值(注意:是反引号,不是单引号)将 --target 设置为你的现有内核的结构。一般来说应是可行的,因为多数人会拥有 i686 或 x86_64。

现在内核的源代码目录树可以在 ~/rpmbuild/BUILD/ 这个目录内找得到。



(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容