内核修改初探

上午还在为修改内核的问题发愁,到现在已经不为这件事情发愁了,又更愁的事了。

今天要做的事情很简单,在 fs/block_dev.c 里保存一个变量, 在 fs/ext3/inode.c 里去调用。我开始看到这两个文件都包含了一个头文件 mpage.h , 就想用最传统的方法,在头文件中加一句 extern ..., 然后随便在一个文件中定义这个变量就可以了。可是事实是,内核在编译了近一个小时的时候出错了,泪奔呀。

后来问了问QW,他说这是个很愚蠢的问题。模块间互相调用要用 EXPORT_SYMBOL 宏导出。我然其言,再试,又出错了。这次再把他请过来一问,他又很不屑:你加反了。应该是先有内核后有模块,把定义加在模块代码中内核编译时,还没有模块呢。

我悄然大悟,再把定义改在了内核中,果然成功了。

通过这件事情明白了,在编译内核时,“内核”和“模块”其实是“平级”的,内核是最早生成的模块,所以用于在模块间导出函数的宏 EXPORT_SYMBOL ,也可以用于在内核和模块之间。至于这个宏的工作原理,我还不了解,有时间了了解一下。

最后总结一下编译内核的过程:

因为有 .config 文件,不用自己配置,make 一把就过了。然后 make modules_install, 最后 make install。最后一步完成,grub里的menu.lst 文件也改了。爽。开机选择启动就行了。2.6 的内核,编译起来真是方便很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值