编译kdb。
步骤1:
kdb不是Linux内核的标准配置,需要先到这个网站上去下载一个版本,2个文件
ftp://oss.sgi.com/projects/kdb/download/v4.4/
kdb-v4.4-2.6.15-common-1(kdb-v4.4-2.6.15-common-1.bz2)
kdb-v4.4-2.6.15-i386-1(kdb-v4.4-2.6.15-i386-1.bz2)
步骤2:
下载一个纯的linux内核源码文件。
记住,一定要是纯的linux内核源码,不能是什么redhat等等公司出的版本。否则在pacth时就会出现error了。
比如有一次我把patch打到了/usr/src/redhat/BUILD/kernel-2.6.15/linux-2.6.15.i686里就发生了错误,这个目录是redhat自己改过的源码,不是纯的源码,所以出错。
下载到的源码必须和步骤1的小版本一致。比如我的纯linux内核版本是2.6.15-1***。
把linux纯内核源码文件命名为linux,放到/usr/src中。
步骤3:
把步骤1得到的解压后的2个文件kdb-v4.4-2.6.15-common-1,kdb-v4.4-2.6.15-i386-1放到/usr/src/linux目录里。
这时就会很顺利的patch成功,只要不出现什么reject这样的提示就算成功。
一旦发现出现了reject这样的信息,只有2种可能:
一是你的内核不是真正的内核,是公司改进过的内核;二是kdb版本和源码版本不一致。
步骤4:
该linux配置,在这里千万不要用make menuconfig这样的命令,你可能很奇怪,为什么?我的经验表明,不同的linux/kdb版本menuconfig出来的kdb选项有很大的不同,用语言是无法准确描述,我原来参考很多网上的资料都是根据menuconfig来,造成了描述矛盾,很难搞明白。在这里,我们直接改写文件最为牢靠。
先运行make menuconfig这个命令,不更改任何选项,直接回车,然后选择yes,这样就能生成一个隐藏的文件.config了。
用vi/vim 打开这个文件,
改写如下:
CONFIG_KDB=y
CONFIG_KDB_MODULES=n
CONFIG_KDB_OFF=n
CONFIG_KALLSYMS=y
CONFIG_FRAME_POINTER=y
保存。记住,这样做比在menuconfig菜单选项里选择要安全和清晰的多。
打开kdb/kdb_cmds这个文件,全部注释掉所有:例如:
# Initial commands for kdb, alter to suit your needs.
# These commands are executed in kdb_init() context, no SMP, no
# processes. Commands that require process data (including stack or
# registers) are not reliable this early. set and bp commands should
# be safe. Global breakpoint commands affect each cpu as it is booted.