centos 下centos源码下载安装

来源:互联网 发布:linux recvfrom 编辑:程序博客网 时间:2024/06/05 11:32

I Need the Kernel Source

Created by JohnnyHughes. Currently maintained byAlanBartlett andAkemiYagi.

Contents

  1. Maybe you do not need the full kernel source
  2. If you really need the full kernel source

1. Maybe you do not need the full kernel source

If you need to compile a kernel driver module, the chances are youdo not really need thefull kernel source tree. You might just need thekernel-devel package. (If, however, you are certain that the full source tree is required, please follow the instructions in Section 2.)

In CentOS 6, there is just one kernel-devel package available:

  • kernel-devel (both 32- & 64-bit architectures)

In CentOS 5, there are three kernel-devel packages available:

  • kernel-devel (both 32- & 64-bit architectures)

  • kernel-xen-devel (both 32- & 64-bit architectures)

  • kernel-PAE-devel (32-bit architecture only)

If you are running the standard kernel (for example), you can install the kernel-devel package by:

[root@host]# yum install kernel-devel

You can use this command to determine the version of your running kernel:

[root@host]# uname -r

The result will look similar to this:

2.6.18-308.11.1.el5xen

In this case, the xen kernel is installed and the way to install this specific kernel-devel package is:

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

<!> Please ensure that you install thekernel-devel package thatmatches your running kernel. Seethis FAQ for details.

If your kernel is not listed by yum because it is in an older tree, you can download it manually from the CentOS Vault. Pick the version of CentOS you are interested in and then, for thearch, look in either theos/arch/CentOS/RPMS/ or theupdates/arch/RPMS/ directories for thekernel[-type]-devel-version.arch.rpm

Once you have the proper kernel[-type]-devel-version.arch.rpm installed, try to compile your module. It should work this way. If it does not, please provide feedback to the module's developer as this is the way all new kernel modules should be designed to be built.

2. If you really need the full kernel source

If you really must have the kernel source tree, for whatever reason, it is obtainable.

As an ordinary user, not root, create a build tree based on a ~/rpmbuild/ directory:

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

<!> You arestrongly advisedagainst package building as root. (See:Building Source RPM as non-root under CentOS)


To install the source package and tools for CentOS 6:

As root, install the rpm-build, redhat-rpm-config, asciidoc, hmaccalc, binutils-devel, elfutils-libelf-devel, newt-devel and zlib-devel packages:

[root@host]# yum install rpm-build redhat-rpm-config asciidoc hmaccalc[root@host]# yum install binutils-devel elfutils-libelf-devel newt-devel zlib-devel

Find the kernel source rpm package in:

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

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

(Replace the "N" with the relevant update version number.)

As an ordinary user, not root, install the source package by executing:

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


To install the source package and tools for CentOS 5:

As root, install the rpm-build, redhat-rpm-config and unifdef packages:

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

Find the kernel source rpm package in:

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

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

(Replace the "N" with the relevant update version number.)

As an ordinary user, not root, install the source package by executing:

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


Now that the source package and tools are installed, unpack and prepare the source files:

[user@host]$ cd ~/rpmbuild/SPECS[user@host SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec

The value of $(uname -m) sets the target to the architecture of your current kernel. This is generally accepted, as most people will need either i686 or x86_64 as the target.

The kernel source tree will now be found under the ~/rpmbuild/BUILD/kernel*/linux*/ directory.

 
安装centos源码步骤:
1.创见相关目录结构:
[user@host]$ mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
[user@host]$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
2.安装更新相关工具
[root@host]# yum install rpm-build redhat-rpm-config asciidoc hmaccalc
[root@host]# yum install binutils-devel elfutils-libelf-devel newt-devel zlib-devel
[root@host]#yum install rpm-build redhat-rpm-config unifdef
3.下载源码包kernel-2.6.32-220.e16.src.rpm然后解压
[user@host]$rpm -ivh kernel-2.6.32-220.e16.src.rpm 2>&1 | grep -v mock
[user@host]$ cd ~/rpmbuild/SPECS
[user@host SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec
完成后源代码就出现在~/rpmbuild/BUILD/kernel*/linux*/ 里面。
 
 
注意:centos里面需要GPG产生key.h,所以编译的时候可能会因为找不到key.h而出错。
解决方法:

先创建mockbuild用户与组,然后在编译

[root@houyi-vm33 ~]# groupadd mockbuild

[root@houyi-vm33 ~]# useradd mockbuild -g mockbuild

原创粉丝点击