走向Linux系统高手之路 内核编译过程解析

豆豆网   技术应用频道   2007年09月07日    社区交流

内容摘要:Linux内核总是不断发展的,最新的内核Kernel2.6.0对USB2.0予以正式的支持,以及内核模块文件后缀最显著的一个变化由*.o到*.ko等等

  下载源代码

  Linux内核总是不断发展的,最新的内核Kernel2.6.0对USB2.0予以正式的支持,以及内核模块文件后缀最显著的一个变化由*.o到*.ko等等,我们可以从www.kernel.org下载到tarball的源代码包。

  前期准备

  大家都知道的要先升级“module-init-tools“软件包,否则的话,等你安装内核模块文件的时候,系统会提示你:Warning: you may need to install module-init-tools See http://www.codemonkey.org.uk/post-h...4.21-23.src.rpm。

  进入下载目录下并安装:

  #rpm -e --nodeps modutils (强行卸载原有的modutilsRPM包)  
#rpm -ivh modutils-2.4.21-23.src.rpm
ò言创氚沧暗搅恕 ?usr/src/redhat目录下) 
#cd /usr/src/redhat/SPECS (进入规范文件目录下)
#rpmbuild --bb modutils.spec (生成二进制的RPM包)
#cd ../RPMS/i386 (转入刚生成的二进制的RPM包所在位置) 
#rpm -ivh modutils*.rpm (刚生成两个[modutils-2.4.21-23.i386.rpm 
与modutils-debuginfo-2.4.21.23.i386.rpm]二进制的RPM包,一起安装吧!)

  因为是在RedHat9.0的平台,RedHat的用户可能还会遇到一些麻烦,我会慢慢说的,除了要以上的升级之外,还有个文件(/etc/rc.d/rc.sysinit)可能有缺陷,因为/proc/ksyms文件在新内核(Kernel2.6.0)中已经没有了,打开文件命令如下:

  #vi /etc/rc.d/rc.sysinit  
找到:  if ! LC_ALL=C grep -iq nomodules /proc/cmdline 2>/dev/null 
&& [ -f /proc/ksyms ]; then  
USEMODULES=y  fi 
替换成:  if ! LC_ALL=C
grep -iq nomodules /proc/cmdline 2>/dev/null;
then  USEMODULES=y  fi

责编:豆豆技术应用

正在加载评论...