摘要:近几年,linux大行其道,令不满windows蓝屏的使用者跃跃欲试,结果发现linux安装不及windows方便,界面不及windows友好,配置不及windows容易,软件不及windows丰富,以至浅尝辄止。
前言:谁是这篇文章的读者?
不习惯读英文资料的非LINUX高手
声卡不响光驱不转连不上网等等,只要有问题就行
开发嵌入式操作系统
现在流行的ODL(only disk linux)中做内核部分,那些文章不介绍此点内容。我正在做,完工后整理资料。
BY THE WAY ,想成为LINUX高手吗?你需要熟练掌握KERNEL COMPILE 、XCONFIGRATER 、LINUXCONFIG、 SAMBA四大利器,你随时可以找到后三者的大量相关资料,但内核编译就只好啃为数不多的英文了。
笔者耗时3月,搜集并整理大量资料,在儿童节前连续工作18个小时后,给小企鹅送了这份礼物。
笔者自信是目前为止KERNEL编译方面最完备的中文资料(将不断翻译补充),这可是毕业论文哪!
为什么要放网上呢?首先找这方面资料太难了,文章对各位LINUX爱好者会有所帮助。其次,取之于网用之于网。
欢迎使用这篇文章,请随便引用,这才符合LINUX自由软件的精神嘛,不过别忘了提提我的名字,就算为我的辛苦付了点稿酬。
介于内核方面资料较少,欢迎在这篇文章中添加和修改内容,但不要过多删除,笔者列表要加入你的名字,让我们为把它变成数百页的资料而努力。OK,交个朋友吧, 我是玉玉安,email :ziboyuyuan@263.net
目录
序言
第一章 内核编译的基础
第一节内核简介
第二节内核版本
第三节编译原因
第四节准备工作
第二章 内核编译的流程
第一节编译开始
第二节配置内核 {核心内容}
1.代码成熟等级
2..处理器类型和特色
3.对模块的支持
4.基本的选择
5.即插即用支持
6.块设备支持
7.网络选项
8.电话支持
9.SCSI设备的支持
10.I2O接口适配器
11.网络设备支持
12.配置业余无线广播
13.红外支持
14.ISDN的文件系统
15.旧型光驱类型(非IDE界面的光驱)
16.字符设备
17.USB支持
18.文件系统
19.控制台驱动
20.声卡驱动
21.Kernel hacking
第三节编译内核
第四节启用内核
附录:LILO分析
第三章 内核编译的应用
第一节嵌入式Linux技术
第二节你的Linux有多大(及实践结果)
结束语
参考文献
序言
近几年,linux大行其道,令不满windows蓝屏的使用者跃跃欲试,结果发现linux安装不及windows方便,界面不及windows友好,配置不及windows容易,软件不及windows丰富,以至浅尝辄止。
其实, Linux有windows无可比拟的两个优势:网络应用和嵌入式技术,这也正是未来最有前途的方向。同时此课题是从理论上设计具有嵌入式Linux操作系统器件的重要组成部分。
如要涉足这两个方面,就必须对内核有深刻理解。当然,您可以从源代码入手,但前提是您拥有程序设计和操作系统等多方面专业知识,否则,就利用现成的Linux kernel从编译内核开始吧。不幸的是,内核编译方面的资料匮乏。以上两个原因使我写这篇论文成为必要。我可以自信得说,这是目前最详尽的内核编译方面的中文资料。
值得一提的是,我在搜集翻译资料的过程中,获得了操作系统、程序设计、硬件设备、网络通信等各方各面的知识,极大的拓宽了视野,真正学有所获。
感谢所有为Linux发展作出贡献的人,感谢所有Linux中文网站为促进Linux在中国的发展作出的不懈努力,他们是我搜集资料的来源。
特别感谢我的指导老师――官伯然教授和高斌博士,正是他们的辛勤指导让我顺利完成毕业设计。
西电科大 :李玉元 2001/6/1
备注:#----------后跟小的选项
##---------后还有更细选项
注意------上机实践结果
第一章 内核编译的基础
第一节 内核简介
内核,是一个操作系统的核心,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。 就好比DOS下的IO.SYS和MSDOS.SYS一体,我们可以把这两个文件叫做DOS的核心。Linux也有它的核心,通常在根目录下,一个叫vmlinuz的文件。我们用这个文件来控制我们的整台PC,包括周边设备和软硬磁盘机、CD-ROM、声卡等。简单地说,核心就是操作系统本身。没有了它,就像一个无人住的家,没有人去维持这个家的动作。一个安定的家需要一个很用心已能当机立断的主人:一部电脑也需要很有效率已稳定的核心,也就是操作系统。因此,核心是整个系统维持下去的关键。
Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码。任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内核则是这些特点的最直接的代表。
想象一下,拥有了内核的源程序对你来说意味着什么?首先,我们可以了解系统是如何工作的。通过通读源代码,我们就可以了解系统的工作原理,这在Windows下简直是天方夜谭。其次,我们可以针对自己的情况,量体裁衣,定制适合自己的系统,这样就需要重新编译内核。在Windows下是什么情况呢?相信很多人都被越来越庞大的Windows整得莫名其妙过。再次,我们可以对内核进行修改,以符合自己的需要。这意味着什么?没错,相当于自己开发了一个操作系统,但是大部分的工作已经做好了,你所要做的就是要增加并实现自己需要的功能。在Windows下,除非你是微软的核心技术人员,否则就不用痴心妄想了。
先介绍一下编译核心的选项,希望能对大家消除对内核的神秘感有所帮助。
1.代码成熟等级
2..处理器类型和特色
3.对模块的支持
4.基本的选择
5.即插即用支持
6.块设备支持
7.网络选项
8.电话支持
9.SCSI设备的支持
10.I2O接口适配器
11.网络设备支持
12.配置业余无线广播
13.红外支持
14.ISDN的文件系统
15.旧型的光驱类型(非IDE界面的光驱)
16.字符设备
17.USB支持
18.文件系统
19.控制台驱动
20.声卡驱动
21.Kernel hacking
第二节 内核版本
由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral--教堂模型--对应),为了确保这些无序的开发过程能够有序地进行,Linux采用了双树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(development tree)。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发数就体现在源程序的版本号中;源程序版本号的形式为x.y.z:对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳定树大一(因此,是奇数)。确定是以″ root ″的身份签入,然后cd 到 /usr/src 。uname -r 这个指令将会显示版本。内核版本的更新可以访问。
第三节 编译原因
Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。
通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
---自己定制编译的内核运行更快(具有更少的代码)
---系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
---不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
---将某种功能编译为模块方