打造自己的专属linux(四):Linux内核编译过程简介

linux在前不久刚发布了最新的3.0内核,在linux的学习中,了解内核的编译是一个必不可少的功课。前几天,学习了linux内核的编译流程,在此总结下,大家来一起学习。

以最新的3.0内核为例,我下载的是linux3.0.1 下载地址:http://www.kernel.org

前提条件:1.确定你的linux有装Development Tools  ,Development Libraris,他们是实现编译的前提工具,如果没有请使用yum groupinstall安装

                    2.下载内核源码文件并拷贝进虚拟机里

内核编译的原则:1.编译时需要一个新版本,漏洞少一点
                                2.尽可能选择和自己硬件对应的驱动模块,兼容性好
                                3.服务器一般不用过新的内核,因为它没有发现一些bug,有可能不稳定

--------------------------------------------------------------------------------------------------------------------------

第一步:将您的内核文件复制到/usr/src/目录下,解压缩内核源码文件,以为的电脑为例

[root@server56 src]# ls
busybox-1.18.5          linux                   linux-3.0.1.tar.bz2
[root@server56 src]# tar -xf linux-3.0.1.tar.bz2           # 解压缩过程比较长,耐心等待
[root@server56 src]# ls
busybox-1.18.5          linux                   linux-3.0.1         # 这就是源待码文件目录

第二步:进入源代码目录,拷贝/boot/config-2.6.18-164.el5 到源代码目录并改名为.config

[root@server56 src]# cd linux-3.0.1                      
[root@server56 linux-3.0.1]# cp /boot/config-2.6.18-164.el5 ./.config

## 这里需要做一个说明:由于我们是初次编译内核,而内核的选项多达上千条,所有我们以redhat官方提供的内核版本配置文件为蓝本,在它的基础上配置,保证内核的稳定性,而redhat内核的配置文件就是/boot/config-`uname-r`   uname-r指的是当前系统的版本号,我的是2.6.18-164.el5,编译时,系统会将你的配置保存在.config文件中

第三步:输入make menuconfig 进去编译配置界面   (其实有很多中方式,这里只介绍一种常用的)

[root@server56 linux-3.0.1]# make menuconfig

打造自己的专属linux(四):Linux内核编译过程简介_第1张图片

可以看到,这里面有很多内核选项。里面的选项对应的翻译可以查看这个链接:http://lamp.linux.gov.cn/Linux/kernel_options.html  

*号表示编译进内核,  M表示编译成模块,按空格键选择 ,回车键进入选择分支,我们已经使用了.config文件,所以可以直接编译,当然你可以选择自己想要的功能。

作者:金步国,国内有名的linuxer,翻译过很多linux书籍

选择接受后按按下面的ESC,弹出的界面选yes保存

打造自己的专属linux(四):Linux内核编译过程简介_第2张图片


第四步:使用make命令编译内核  #!需要注意的是,这个过程相当漫长,大概需要几十分钟到一个多小时的时间,而且最好不要在终端内进行,任何断开连接都会造成编译失败,建议这一步在虚拟机控制台内进行

[root@server56 linux-3.0.1]# make

第五步:编译结束后,安装模块

[root@server56 linux-3.0.1]# makemake modules_install 

第六步:安装内核,这一步会将内核信息写入到你的grub里,(可以手动编辑grub.conf文件去掉)你可以用现有的虚拟机体验新版本内核(前提不出错,内核出错会在启动时显示kernel panic!内核恐慌,可能是选择的模块没有对应的依赖关系,只能重新编译)

[root@server56 linux-3.0.1]# make install   


在完成编译后,内核文件会存放在/boot目录下

[root@server56 boot]# ls
System.map                 initrd-2.6.18-164.el5.img  vmlinuz-2.6.18-164.el5
System.map-2.6.18-164.el5  initrd-2.6.28.10.img       vmlinuz-2.6.28.10













你可能感兴趣的:(linux,虚拟机,server,redhat,tools,linux内核)