一、了解内核与取得内核源代码
1、什么是内核(Kernal)
(1)内核就是系统上面的一个文件而已,这个文件包含了驱动主机各项硬件的检测程序与驱动模块。当系统读完BIOS并加载MBR内的引导装载程序后,就能加载内核到内存中,然后内核开始检测硬件,挂载根目录并取得内核模块来驱动所有的硬件,然后调用/sbin/init就能够依序启动所有系统所需要的服务了。
(2)内核模块(kernal module)最大的好处就是最大节省硬件资源和降低工作量。即将一些不常用的类似驱动程序的内容独立出内核,编译成为模块。
(3)内核模块的存放位置: /lib/modules/$(uname-r)/kernal 中。
2、更新内核的目的 [编译内核一般需要很久]
(1)需要增加新需求
(2)原内核太过臃肿
(3)其他需求(如嵌入式)
3、内核的版本
(1)主要版本的定义为“[主].[次].[发布]-[修改]”,次版本号偶数代表是稳定版本,奇数表示测试版本。
(2)版本之间会差异很大,像2.4.x与2.6.x,两者之间使用的函数库基本上已经不同了。
4、内核源码的获取
(1)distribution提供内核源代码文件
(2)内核官网提供内核源码,网址:www.kernel.org
5、内核源代码下的次目录
(1)arch:与硬件平台相关的选项,大部分指的是CPU的类型,例如x86,x86_64,Xen虚拟支持等;
(2)block:与区块设备较相关的设置数据,区块数据通常指的是大量储存媒介,还包括类似ext3等文件系统的支持是否允许等;
(3)crypto:内核所支持的加密技术,例如md5或者是des等;
(4)Documentation:与内核有关的一堆帮助文档,若对内核有极大的兴趣,可细读。
(5)drivers:一些硬件的驱动程序,例如显卡、网卡、PCI相关硬件等;
致谢
1、《鸟哥的Linux私房菜》[第三版] 作者 鸟哥