ITPub博客

首页 > 应用开发 > IT综合 > 关于编译内核之摘要

关于编译内核之摘要

原创 IT综合 作者:wodemingzizhen 时间:2006-03-23 22:20:19 0 删除 编辑

因为第一次尝试升级内核,在网上看了一些关于升级内核的文章,所以就照猫画虎的效仿起来。还不知道重起后是什么结果(可能需要重装)

[@more@]

1、首先取得新内核的新源代码包,内核的官方网站是http://www.kernel.org ,在上面可以得到最新的内核。我下载的版本是linux-2.6.16下载了内核源码之后,要使用tar jxvf linux-2.6.16.tar.bz2来提取源码,如果下载的是以tgz结尾的压缩包就使用zxvf参数来解压。强烈建议不要使用 /usr/src/linux这个目录来存放源码,因为使用这个目录需要手工在/usr/include目录下作一些符号链接,这实在不是一个好主意。所以最好为源码单独建一个目录,这里我的目录是/usr/src/linux-2.6.16

2、要编译与正常运行新的内核你需要升级一些软件包,在http: //www.kernel.org/pub/linux/kernel/people/rusty/modules/下载新的 Module-Init-Tools,我下的版本是module-init-tools-3.3-pre1这个module-init-tools需要升级,不然insmodlsmod这样的命令都不能用。

如果下载的是源码使用如下步骤进行编译
./configure --prefix=/
make moveold
#
这一步会将你以前的insmod, modprobe, rmmodlsmod
#
重命名为insmod.old, modprobe.old, rmmod.old lsmod.old
make
make install

然后使用 ./generate-modprobe.conf /etc/modprobe.conf (将原来的/etc/modules.conf转换到/etc/modprobe.conf

进入源码安装目录

cd /src/linux-2.6.0
make mrproper
make menuconfig
(基于文本选单的配置界面)

3、设置完内核配置后,执行编译和安装内核。定制好的内核配置文件是(/usr/src/linux-2.6.16/.config)

4、编译和安装模块
#make modules(
编译选择的模块)
#make modules_install(
将编译后的模块转移到系统标准位置)

make
#make install

完成后reboot就会发现启动选项就会多出一个2.6内核的选项。

我是在一边编译的情况下一边总结如何编译内核的,现在还不知道几分钟后会出现什么情况,目前只有祈祷的份了…

参考来源计算机基础教程网(ITWEN.com)〕

近日为了安装H323 NAT module for linux_2.6.16,我将Redhat9升级到了kernel-2.6.16。至于如何编译如何修改grub.conf这里就不再细述,网上关于这方面的资料很多。
但是在启动过程中发现无法加载内核,系统出现function not implemented报错,提示无法加载内核,虽然Linux内核启动起来了,但是俺的网卡驱动却怎么也起不来.lsmod显示任何模块都没有加载进到新的内核。
究其原因,从网上找了相关资料,零零散散的纪录了这类问题的解决办法。
主要是因为Redhat 9的module-init-tools版本太低了。新的2.6.x的内核模块加载无法使用老的module程序来加载。必须要去升级modules-init-tools包文件
去http://www.kernel.org/pub/linux/kernel/people/rusty/modules/ 下载最新的module-init-tools文件,我下的是http://www.kernel.org/pub/linux/kernel/people/rusty/modules/module-init-tools-3.2.tar.gz
# tar -xvzf init-tools-3.2.tar.gz
1a) If you want to install in /sbin:
./configure --prefix=/
make moveold (if installing for the first time).
一定要记住make moveold
"make moveold" renames the old insmod, modprobe, rmmod and lsmod to
insmod.old, modprobe.old, rmmod.old and lsmod.old, and the matching
manpages.
OR,
1b) If you want to install in /usr/local/sbin:
./configure
make links
"make links" makes links to the previous insmod, modprobe, rmmod and
lsmod (which are in /sbin) in /usr/local/sbin
2) Now, build it:
make
make install
3) If running for the first time, you might want to convert your old
modules.conf to modprobe.conf:
./generate-modprobe.conf /etc/modprobe.conf
说明:执行新的模块文件,这点说明文件似乎没有说的很详细,我的做法是替换将生成的 modprobe.conf替换为modules.conf文件。有很多人没有做这个步骤,导致了重新启动后仍然无法加载内核模块驱动。
# cp modprobe.conf modules.conf (覆盖modules.conf文件)

4)reboot system
你会惊喜地看到Redhat 9的kernel-2.6.16终于可以成功的加载模块了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/183680/viewspace-822510/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 关于ln命令
请登录后发表评论 登录
全部评论

注册时间:2010-01-31

  • 博文量
    178
  • 访问量
    5551278