编译linux内核步骤

发表于:2007-07-04来源:作者:点击数: 标签:
本来上个星期就应该写的,拖到现在了。 开机的顺序是: BIOS MBR ( 就是 Lilo 或 Grub ) 取得 boot loader; 取得核心 kernel 的资料并加载 init 很多 scripts login 与 shell 为什么要重新编译内核: 1、内核太庞大 2、与硬件搭配稳定 3、支持新的硬件 编译
本来上个星期就应该写的,拖到现在了。

开机的顺序是:
BIOS
MBR ( 就是 Lilo 或 Grub ) 取得 boot loader;
取得核心 kernel 的资料并加载
init
很多 scripts
login 与 shell

为什么要重新编译内核:
1、内核太庞大
2、与硬件搭配稳定
3、支持新的硬件

编译过程:
1、编译之前先查看内核版本:uname -r
2、下载更新的内核版本升级:http://www.kernel.org
3、解压
#cd /usr/src
#tar zxvf linux-2.4.31.tar.gz
如果怕之前已经有人编译过核心,会产生一些.o的目的档案,所以先执行:
#make mrproper
会显示RM去除档案的讯息
4、如果对同一版本内核编译,要修改一下:
#cd /lib/modules
#mv 2.4.18 2.4.18.old
5、设定编译模式:
make config :这种模式需要逐行输入所需要设定的项目,无法往前修改设定,所以目前很少使用这种方式来设定 Kernel 的项目了;
make xconfig :这种模式则是使用 X-Window 为主要环境的设定模式!除非你有 X-Window 在执行,否则没有办法使用这种模式;
make menuconfig :这种模式有点像是文字界面的选单模式,较为简便,而且可以在纯文字界面下面执行编辑动作!是目前最常使用的模式。
#make menuconfig

# make dep           <==建立相依的属性关系!
# make clean         <==将旧的资料去除掉!
# make bzImage        <==开始编译核心!这个核心是经过压缩的
# make modules       <==开始编译模块!这个动作视您刚刚编译的模块数量!
# make modules_install   <==将资料给他安装在 /lib/modules/`uname -r` 里面
# make install       <==将刚刚 bzImage 建立完成的核心给他安装上来!
6、修改grub:
#vi /boot/grub/menu.lst 增加如下:
title linux-2.4.31
kernel (hd0,0)/boot/vmlinuz-2.4.31 root=/dev/hda1
内核编译完成,重启机器。

几个命令:
depmod:模块的相依性
MILY: MingLiU; mso-fareast-font-family: 宋体">-a :将 /etc/modules.conf 可以查询到的模块的相关性都写入 /lib/modules/`uname -r`/当中 
-e :显示出目前已加载的不可执行的模块名称 
-n :将各模块的相依性直接输出屏幕上,而不是输出到 /lib/modules/`uname -r` 当中 
-s :将一些讯息结果输出到 syslog 的登录档中!
lsmod:查看系统的模块
modinfo:查看模块的信息
-a :列出作者 
-d :列出这个模块的基本说明 
-n :列出这个模块的档案放置路径与名称
modprobe:加载系统模块
-l:列出系统模块
-c:更详细的列出系统模块
insmod:加载系统模块
-f :强制将模块加载,要加载不相同版本的模块时候可能会用到的参数 
-k :自动在核心没有使用到该模块的时候,先清除干净! 
-p 测试模块是否可以被加载,不会直接加载系统中! 
-s :将一些执行讯息写到 syslog 这种登录档,而不是写到 terminal 当中 
rmmod:删除模块

原文转自:http://www.ltesting.net