linux是采用单内核(Monolithic kernel)的操作系统,即整个系统是一个大的模块,包括处理器管理、存储器管理、设备管理和文件管理逻辑模块。
linux内核存放在/boot里,用类似于vmlinuz-2.4.20的形式表示。采用major.minor.patch的编号格式。例如,2.4.20各数字的含义如下:
第一个数字(2)表示第二大版本;
第二个数字(4)有两个含义:大版本的第4个小版本;偶数表示生产版(奇数表示测试版);
第三个数字(20)表示指定小版本的第23个补丁包;
readhat linux内核的版本稍有不同,如2.4.20-10,可以发现多了一组数字(10),该数字是建立(build)号。每个建立可以增加少量新的驱动程序或缺陷修复。一些readhat 内核还带“pp”,就是“pre-patch”的意思,是个内核的测试版本。三个数字组成的版本号如果是偶数,那么内核就是稳定的,如果是奇数,则表示内核是处于开发中。
linux内核源代码位于/usr/src/linux目录下,组成如下:
arch 这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386。
include 这个目录包括了核心的大多数include文件。另外对于每种支持的体系结构分别有一个子目录。
init 此目录包含核心启动代码。
mm 此目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,如对应于X86的就是arch/i386/mm/fault.c 。
drivers 系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,每一种也有对应的子目录,如声卡的驱动对应于drivers/sound。
ipc 此目录包含了核心的进程间通讯代码。
modules 此目录包含已建好可动态加载的模块。
fs Linux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext2文件系统对应的就是ext2子目录。
kernel 主要核心代码。同时与处理器结构相关代码都放在arch/*/kernel目录下。
net 核心的网络部分代码。里面的每个子目录对应于网络的一个方面。
lib 此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/*/lib/目录下。
scripts此目录包含用于配置核心的脚本文件。
Documentation 此目录是一些文档,起参考作用。
Red Hat Linux操作系统的启动过程分析
当PC的电源打开后,80x86结构的CPU将自动进入实模式,并从地址0xFFFF0开始自动执行程序代码,这个地址通常是ROM-BIOS中的地址。PC机的BIOS将执行某些系统的检测,在物理地址0处开始初始化中断向量。此后,它将可启动设备(软驱或是硬盘)的第一个扇区读入内存地址0x7C00处,并跳转到这个地方。若Linux的最最前面部分安装的是grub,它将由BIOS读入到内存0x7C00处,grub完成信息的显示、操作系统的选择、命令参数的传递,然后加载/etc/grub.conf中的内核映像文件,并把控制权教给被加载的内核映像。下一步是内核的解压缩,然后内核检查系统硬件,并配置相应的驱动。接着安装并检测根文件系统,成功后在系统后台启动init进程。

