LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 883|回复: 11

编译内核时的问题

[复制链接]
发表于 2006-5-15 17:25:19 | 显示全部楼层 |阅读模式
我想要编译内核为iptable添加模块.
[root@localhost ~]# uname -r
2.6.9-5.EL

但是我的/usr/src/里面却没有2.6.9-5.EL
我用[root@localhost ~]# rpm -ql kernel 查看发现是安装在/lib/modules/下面.
是不是内核一定要在/usr/src/里?
我是想要下载的patch-o-matic-ng-20040621里面的部分补丁添加到内核中去.如果我把2.6.9-5.EL复制到/usr/src/就会出现
[root@localhost patch-o-matic-ng-20040621]# KERNEL_DIR=/usr/src/2.6.9-5.EL IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme time
/usr/src/2.6.9-5.EL doesn't look like a kernel source directory to me.
如果把内核位置不更改
[root@localhost patch-o-matic-ng-20040621]# KERNEL_DIR=/lib/modules/2.6.9-5.EL IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme time
/lib/modules/2.6.9-5.EL doesn't look like a kernel source directory to me.

我是个新手,刚刚接触到编译内核.看了论坛里的关于编译内核的资料,但是还是不太明白.希望个位帮帮我!
 楼主| 发表于 2006-5-16 16:24:37 | 显示全部楼层
怎么没人理我.各位大侠帮帮忙啊!我到底该怎么做啊?
回复 支持 反对

使用道具 举报

发表于 2006-5-16 17:07:22 | 显示全部楼层
/usr/src/目录是存放源码的

/lib/modules/`uname -r`是内核模块所在

内核镜像一般在/boot

你说的打补丁是对内核和iptables源码打补丁,打完补丁后需要重新编译内核和iptables,首先你要先下载内核和iptables的源码,然后解压,/usr/src是个合适的地方。接着设定KERNEL_DIR和IPTABLES_DIR变量,把它们分别指向内核和iptables源码目录。最后运行./runme time

你这个patch是什么内容?

你说的对netfilter添加
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-16 18:06:22 | 显示全部楼层
我有像你说的那样试过的,但新内核没法生效,/boot/vmlinuz-2.6.16.7是空的打不开.
而且要修改grub,我加入了如下内容
title linux-2.6.16.7
   root(hd0,4)
   kernel /boot/vmlinuz-2.6.16.7 ro root=/dev/hda5
但具体是什么意思我不是很明白.vmlinuxz代表的是什么?
我还在网上看到过要使新内核生效需要#cp /usr/src/Linux/System.map /boot/System.map-2.4.X
#cp /usr/src/Linux/arch/i386/bzImage /boot/bzImage
我也找不到bzImage,这个又代表什么呢.网上看到很多编译内核的资料,看过都不太明白,因为我是新手实在是很笨啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-17 10:35:19 | 显示全部楼层
自己顶一下
回复 支持 反对

使用道具 举报

发表于 2006-5-17 10:50:27 | 显示全部楼层
看得我脑袋上一个圈一个圈的,这什么意思啊?看起来好象你是想给内核打补丁又没装内核源码.
vmlinuz 就是最终产生的内核.装上源码,打补丁,然后再用新的内核启动系统.内核编译完成就产生 bzImage 了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-17 11:04:08 | 显示全部楼层
可是我下载最新的内核源码安装了呀!在/usr/src/下.
我现在就是新的内核启动不起来,应该在grub中加入什么内容呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-17 15:14:49 | 显示全部楼层
各位朋友帮帮忙吧,本人真的很笨,越来越晕!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-17 15:23:26 | 显示全部楼层
[root@localhost ~]#  ls /lib/modules/linux-2.6.16.7
ls: /lib/modules/linux-2.6.16.7: 没有那个文件或目录
[root@localhost ~]#  ls /lib/modules/2.6.9-5.EL
build          modules.ccwmap       modules.inputmap   modules.symbols
kernel         modules.dep          modules.isapnpmap  modules.usbmap
modules.alias  modules.ieee1394map  modules.pcimap     source

也就是说我的内核还是2.6.9-5.EL.那为什么我的/usr/src/里面没有呐?
/usr/src/kernels里面包含三个:2.6.9-5.EL-hugemem-i686; 2.6.9-5.EL-i686; 2.6.9-5.EL-smp-i686
回复 支持 反对

使用道具 举报

发表于 2006-5-17 15:28:53 | 显示全部楼层
你想用 2.6.16.7 替代 2.6.9 是么?你否有 2.6.16 的源代码?(/usr/src/linux-2.6.16.7) 你是否已经编译?是否 make modules_install 并将 arch/i386/boot/bzImage 拷贝到 /boot 同时加入 grub ?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表