使用Linux系统已有2年多的时间了,多多少少对Linux系统有了深入的了解,但是却没有亲自编译过内核。像升级BIOS一样,我担心内核一旦编译出错,自己好不容易配置的Linux系统就会前功尽弃。最近,终于下定决心研究了一下Linux的内核编译,些许心得感受拿来和大家一同分享。
先介绍一下Linux内核:
Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统。内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制。Linux内核的一大特点就是采用了整体式结构,有很多过程组成,每个过程都可以独立编译,其模块机制又湿得内核保持独立而又易于扩充。Linux发行版实在Linux内核的基础之上,与外带的应用软件和工具打包配置之后发行的版本。最初的Linux内核在1991年由当时还在芬兰赫尔辛基大学计算机系读书的Linus Torvalds开发,之后Linus很快聚集了大量来自其他自由软件项目的开发者和用户为Linux内核贡献代码。当前估计有上千开发者在为Linux内核贡献代码。目前,官方最新的内核由Linus本人维护,过往的稳定版由Greg Kroah-Hartman和Chris Wright进行维护。
Linux发行版介绍:http://www.fengwenxuan.com/linux/1350.html
The Linux Kernel Archives:http://www.kernel.org
下面我来介绍一下Kernel.org这个页面的相关内容:
自2.6.0版本发布后,Linux内核以A.B.C.D的方式命名。A和B的变化可以说无关紧要,C是内核的真实版本,每一个版本的变化都会带来新的特性。例如内部API的变化等等,改动的数量常常上万。D是安全补丁和bug修复。
如果你是Linux的初学者或用户,只需了解stable即可,它代表稳定版的内核更新。mainline指当前的官方内核,由Linus Torvalds进行更新维护,由开发者们贡献的代码主要是合并到mainline当中。linux-next和snapshot都是代码提交周期结束之前生成的快照,用于给Linux代码贡献者们做测试使用。目前stable版本的更新周期为六到十周,下一个稳定版本的rc基本上每周都会更新。
新版本的内核分两种,一种是Full �0�2Source版本,完整的内核版本。比较大,一般是tar.gz或者.bz2文件。另一种是patch文件,即补丁文件。patch文件一般只有及时K到几百K,但是对于特定的版本来说,你要找到自己对应的版本才能使用。
内核升级前的准备工作:
Linux系统进行内核升级或定制内核时需要安装GCC编译工具、make编译器,同时变异内核需要root权限。
安装GCC编译环境参考:http://www.fengwenxuan.com/rhelinux/248.html
下面是我的系统信息:
————————————-
Red Hat Enterprise Linux 5.5
kernel:2.6.18-194.el5
————————————-
注意:内核升级有风险,可能会影响现有的应用程序。但是只要做好准备,就能将危险性降到最低。进行内核升级对应用程序运行的兼容性、稳定性等等都有好处。
下面进行内核升级:
1.使用命令uname�0�2�0�2–r�0�2查看自己linux系统的内核版本
2.从中心ftp上下载最新的内核tar包到/usr/src/kernels目录,并解压。解压命令如图:
3.进入解压后的内核源码包目录,接着使用命令�0�2make�0�2mrproper�0�2,命令的作用是在每次配置并重新编译内核前需要先执行“make�0�2mrproper”命令清理源代码树,包括过去曾经配置的内核配置文件“.config”都将被清除。即进行新的编译工作时将原来老的配置文件给删除到,以免影响新的内核编译。
4.使用make�0�2menuconfig�0�2命令,进行内核定制,选择自己想要的功能,这里以编译内核,让linux内核支持ntfs文件系统为例来讲解,具体过程见图:
调出文字界面的配置菜单,接下来选择文件系统选项:
敲回车后,继续选择能支持Windows 文件系统类型的选项:
最后选择我们需要的NTFS文件系统类型,编译到内核模块里,并且选择exit 退出:
最后选择退出:
选择yes,保存新的内核配置文件:
看一下生成的.config文件的位置和属性
5.在编译内核之前,需要使用“make dep”命令生成内核功能间的依赖关系,为编译内核做好准备。
6.使用“make bzImage”命令进行内核编译,编译过程将持续相当长的时间(20分钟以上),请耐心等候。
7.使用“make modules”命令编译内核模块,编译过程将持续相当长的时间(30分钟以上),请耐心等候。
8.内核模块编译好后需要安装到Linux系统的相应目录中才可以使用,使用“make modules_install”命令安装内核模块。“/lib/modules/”目录用于存放Linux系统中的内核模块,内核的各个版本都在该目录下建有子目录用于存放内核模块。
9.使用“make install”命令安装新内核到系统中,并且自动为是用新内核作必要的配置。
10.查看编译成功后,在/boot/目录下会生成vmlinuz-2.6.23.9 的文件和能看到/boot/grub/grub.conf里的启动项。
11.到/lib/modules/2.6.23.9/kernel/fs 目录下查看新生成的支持NTFS文件系统的内核模块。
12.重启计算机,看到开机画面后,敲回车键选择新的内核引导系统。
13.进入系统后可以使用“uname -r”查看新内核版本,至此内核编译已经成功完成。