Linux内核(二)
内核的配置与编译
Linux的内核是可以配置的,就是说可以根据用户的需要进行配置,正是因为Linux的内核可以自由的配置,自由的裁剪,减小内核的体积,才使得Linux的内核可以移植到arm平台上去。
Linux内核配置具体步骤如下:
1. 清除临时文件,中间文件和配置文件(为什么要清除呢?在得到一个内核以后会有许多垃圾文件需要清除)
$make clean(删除垃圾文件 保留配置文件)
$make mrproper(删除垃圾文件 删除配置文件)
$make distclean(删除垃圾文件 删除配置文件 删除补丁文件)
2. 确定目标系统硬件配置情况,比如cpu的类型,网卡型号,所需支持的网络协议,修改Makefile
3. 使用如下命令之一配置内核
$make conifg 基于文本模式的交互式配置(执行之后会在配置的过程中通过提问的方式来配置)
$make menuconfig 基于文本模式的菜单配置
$make oldconfig 使用已有的配置文件(.config)与make config的区别只做表明为new的配置项
$make xconfig图形化配置选项(需要安装图形化界面)
有一些默认的符号其含义如下:
y:加载
n:不加载
m:作为模块加载
使用完以上congfig命令之后,会自动生成一个.config文件,文件的信息保存了内核配置的结果。
要配置arm的内核,可以根据arch中的默认配置在此基础上修改。
root=/dev/nfs rw nfsroot=192.168.1.100:/source/rootfs ip=192.168.1.200 init=/linuxrc console=ttySAC0,115200
root 指定根文件系统
rw/ro 指定挂载文件系统的属性,读写、只读
nfsroot 指定nfs服务挂载点,<nfs server ip>:<export directory>
ip 指定目标板ip地址
init 指定内核初始化完成后调用的用户空间程序,缺省为/sbin/init
console 指定打印信息的终端
mem 指定内存大小
initrd 指定ramdisk引导时根文件系统所在内存位置和大小
4. 编译内核
make zimage
make bzimage(big的意思)
区别:在X86平台,Zimage只能用于小于512k的内核
编译好的内核位于arch/cpu/boot目录下
5. 编译内核模块
make modules
6. 安装内核模块
make modules_install(将编译好的内核模块从内核源代码目录copy到/lib/modules下)
7. 制作 init ramdisk
init ramdisk的作用:提供一种让内核可以简单使用ramdisk的能力。这些能力包括:格式化一个ramdisk;加载文件系统内容到ramdisk;将ramdisk作为根文件系统。
root (hd0,0)
kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-238.el5.img
title chen (2.6.29)
root (hd0,0)
kernel /vmlinuz-2.6.29 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.29
其只是根据本文的具体情况,对kernel的vmlinuz-2.6.18-238.el5 改成vmlinuz-2.6.29 ,将initrd的initrd-2.6.18-238.el5.img改成initrd-2.6.29