.
|-- Makefile
|-- Module.symvers
|-- System.map
|-- arch
|-- block
|-- crypto
|-- drivers
|-- firmware
|-- fs
|-- include
|-- init
|-- ipc
|-- kernel
|-- lib
|-- mm
|-- net
|-- samples
|-- scripts
|-- security
|-- sound
|-- tools
|-- usr
|-- virt
`-- vmlinux.id
arch目录,
arch是内核所支持的每种cpu体系,在该目录下都有对应的子目录,每个cpu的子目录又进步分为boot,mm,kernel等子目录,分别包含,控制系统引导,内存管理,系统调用等。
arch/x86 /*intel cpu及与之相兼容体系结构的子目录*/
|-- boot //引导程序
| |-- Makefile
| `-- compressed // 内核解压缩
| `-- Makefile
|-- crypto
| `-- Makefile
|-- ia32
| `-- Makefile
…………
|-- kernel //相关内核特性的实现方式,如信号处理,时钟处理
……
|-- tools //生成压缩内核映像的程序
……
|-- kvm
| |-- Kconfig
| `-- Makefile
|-- lguest
| |-- Kconfig
| `-- Makefile
|-- lib //硬件相关工具函数
| `-- Makefile
|-- math-emu
| `-- Makefile
|-- mm
| |-- Makefile
| `-- kmemcheck
| `-- Makefile
……
block目录
部分块设备驱动程序
crypto目录
加密,压缩,CRC校验算法
documentation目录
内核的文档
drivers目录
设备驱动程序
fs目录
存放各种文件系统的实现代码,每个子目录对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统VFS。
include目录
内核所需要的头文件。于平台无关的头文件在include/linux子目录下,于平台相关的头文件则放在相应的子目录中。
init目录
内核初始化代码
ipc目录
进程间通信的实现代码
kernel目录
linux大多数关键的核心功能都是在这个目录实现。(调度程序,进程控制,模块化)
lib目录
库文件代码
mm目录
mm目录中的文件用于实现内存管理中与体系结构无关的部分(与体系结构相关的部分在那呢?)
net目录
网络协议的实现代码
--bridge //桥接设备
--ipv4 //ipv4版32位寻址模式
--ipv6
samples目录
一些内核编程的范例
scripts目录
配置内核的脚本
security目录
selinux的模块
sound目录
音频设备的驱动程序
usr目录
cpio命令实现
virt目录
内核虚拟机
linux内核具有可定制的优点,具体步骤如下:
1,清楚临时文件,中间文件和配置文件。
make clean
make mrproper
make distclean
2,确定目标系统的软硬件配置情况,比如cpu的类型,网卡的型号,所需支持的网络协议等。
3,使用如下命令之一配置内核:
make config:基于文本模式的交互式配置
make menuconfig:基于文本模式的菜单式配置(推荐)
make oldconfig:使用已有的配置文件(.config)。但是会询问新增的配置选项。
make xconfig:图形化的配置(需安装图形化系统)
在make menuconfig模式中
“y”将这个项目编译进内核中
“m”编译为模块
“n”为不选择
按空格键可在这三者之间进行切换
按“h”将显示这个选项的帮助信息
按“Esc”将返回到上层选单
编译内核
make zImage
make uImage
make modules
编译内核模块
make modules
安装内核模块
make modules_install
将编译好的内核模块从内核源代码目录copy至/lib/modules下
make distclean
cp /boot/config-2.6.18 .config
vi Makefile
ARCH=$(SUBARCH)
CROSS_COMPILE=
make menuconfig
make bzImage
maek modules
mkdir /lib/modules/2.6.32
make modules_install
cd /lib/modules/
mkinitrd initrd-2.6.32.2 2.6.32.2就回生成initrd-2.6.32.2
cp initrd-2.6.32.2 /boot/
cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.32.2
修改开机时的选项 vim /etc/grub.conf
参照里面的配置,添加下面几行
title --My linux server
kernel --/vmlinuz-2.6.32.2 root=/VOL**
initrd --/initrd-2.6.32.2
阅读(699) | 评论(0) | 转发(0) |