鸟哥的 Linux ADSL 私房菜


核心( Kernel )编译与模块管理(积极更新中)
最近更新日期:2004/06/25
 
我们在前面的几个章节介绍了 Linux 其实指的就是核心而已,而整个 Linux 的世界当中,最重要的也就是核心了!他控制了您的服务器的所有硬件,也控制了所有的您想要的功能,例如软件磁盘阵列(RAID)、各种适配卡的驱动模块、防火墙的新增功能等等。透过管理您的 Linux 核心,将可让您的服务器跑得更加的顺畅,也更稳定您的服务器所提供的相关服务呢!此外,为了让硬件驱动程序与相关的核心功能修订容易,所以 Linux 核心是支持『模块化』的,也就是说,您核心所想要的功能可以『后来才加挂上去』喔!那么如何加挂上去呢?这就需要了解一下所谓的『模块』了!当然,连同模块的相关指令就得也要会用啰!^_^
 
前言
  :什么是核心( Kernel )
  :我干嘛要更新核心
  :核心的版本与何处下载最新核心
核心编译:
  :取得并解开核心原始码
  :选择设定模式
  :开始设定核心的内容
  :开始编译的流程
核心安装与多重开机设定:
核心模块管理
  :模块编译
  :模块功能depmod, lsmod, modinfo, modprobe, insmod, rmmod,
本章习题练习

前言:
开始设定核心的内容
开始编译啰!
安装核心与 Lilo 多重开机设定
刚刚上一个步骤就已经将核心安装好了吗?很抱歉!非也非也~我们到前一步骤中,仅是将模块安装到 /lib/modules/`uname –r` 当中,而核心编译完成并放在 /usr/src/linux/arch/i386/boot/bzImage 而已!所以,这个时候,请将核心放置在开机核心预设放置的目录 /boot 吧!
[root @test root]# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.18
在一般人的习惯中,我们还是比较喜欢将开机的核心称做为 vmlinuz ,而由于版本不同,所以我们可以将他取名为 vmlinuz-2.4.18 这样的文件名称,比较好进行确认啦!
 
核心搬移完毕之后就 OK 了吗?当然不对啰!还记得在开机流程里面介绍的 Linux 的开机管理员吗?没错,那就是 lilo 跟 grub 啰,所以,接着下来我们要作的就是开机的设定啰?由于 lilo 与 grub 我们之前就提过了,所以这里不详细的介绍每个对象的内容,仅说明一下我的测试核心的规划!通常,我都喜欢直接以硬盘开机来测试新的核心,而由于害怕新的核心没有办法工作 ( 注:很多时候,由于不同的 distribution 他所考虑的内容不一样,因此,很有可能您编译完成的核心并无法在您的 Linux distribution 上面工作的,所以,虽然他可以被编译成功,但是我们还是得测试测试他呢! ) 因此,我都会将旧的核心继续留下来,因为如果万一新核心没有办法工作,那么最起码我还可以使用旧的核心继续来管理我的 Linux 呢!这个时候就必需要有多重开机系统啦!

核心模块管理:
还记得核心的功能吗?对啦!就是用来控制系统硬件与相关程序的东西啦!那么在上面提到的功能里面,我们也提到了核心可以使用『模块』的方式来动态的加载与移除所需要的模块,OK!那么该如何加载与卸载这些模块呢?!要知道的是,在模块的加载方面,最主要的开机时即加载模块的档案在于:
/etc/modules.conf
这个档案,如果你有任何的新的驱动程序需要在开机的时候加载,呵呵!写入这个档案就对了!而核心的驱动程序写在哪里?呵呵!就是在底下的目录中:
/lib/modules/核心版本/kernel/drivers (也可以写成如下)
/lib/modules/`uname –r`/kernel/drivers
上面这两行是一模一样的东西,什么?怎么看出来的?别多说废话了,如果忘记的话,使用 uname –r 看一下内容,再去看一下 quote 是什么!赶紧回想一下喔!好了,那么 /etc/modules.conf 的内容是怎样呢?我们举最简单的例子好了,假设你的网络卡是早期有『恶魔卡』称号的 D-Link 530 好了,那么这个卡的模块其实已经被 Linux 编译好了,他就是 via-rhine.o 这个档案,我们又知道说网络卡的第一个代号为 eth0 ,所以呢,要让 eth0 与 via-rhine 划上等号( 注:那个 .o 不要写出来! ),因此,在 /etc/modules.conf 的最后一行加入底下的文字:
alias eth0 via-rhine
如果一切顺利的话,那么开机的时候他就会自动的帮我们找到相对应的硬件与模块啰!但是如果 Linux 没有帮我们编译好模块呢?怎么编译?就使用 make 呀!请回到 RPM 与 Tarball 那一章去阅读一下 tarball 的安装方式!再来,如果我需要的是手动随时加入与取消某些模块呢?呵呵,这个时候也就需要来了解一下模块的加载与卸载的功能啰!

本章习题练习 ( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
核心( Kernel )编译与模块管理

2002/05/29:第一次完成
2003/02/11:重新编排与加入 FAQ
2004/06/xx:将 kernel version 改为 2.4.26 版,尚未改为 2.6 哩!至于原本的 kernel 2.4.18 的说明请参考 连结资料

2002/05/29 以来统计人数


Designed by VBird during 2001-2004.  Aerosol Lab.