安装内核源码树

安装内核源码包:
1.# rpm –Uvh kernel-2.6.11-1.1369_FC4.src.rpm
这个命令将 RPM 内容写到路径
/usr/src/redhat/SOURSE

/usr/src/redhat/SPECS
2. build源码包:
# cd /usr/src/redhat/SPECS
# rpmbuild -bp --target i686 kernel-2.6.spec
这个命令将会把内核源码树放到 目录
/usr/src/redhat/BUILD/kernel-2.6.11/kernel-2.6.11.686
3. 配置内核:
Fedora Core 附带的内核配置文件在
~/kernel-2.6.11.686/configs/ 目录。
例如,i686 SMP 配置文件被命名为
configs/kernel-version-i686-smp.config。
使用下列命令来将需要的配置文件复制到合适的位置,用来编译:
# cd /usr/src/redhat/BUILD/kernel-2.6.15/linux-2.6.15.i686
# cp configs/kernel-version-i686-smp.config .config   //记住
要养成备份的好习惯!
您也可以在 /lib/modules/version/build/.config 这个位置找到与
您当前的内核匹配的 .config 文件。
注意:
您的内核必须已经启用这些选项进行了编译(用make menuconfi
g调出内核配置菜单):u
Loadable module support --->
[*] Enable loadable module support
[*] Module unloading
[ ] Module versioning support (EXPERIMENTAL)
[*] Automatic kernel module loading
4. 稍微更改一下Makefile:
每个内核的名字都包含了它的版本号,这也是 uname -r 命令显示
的值。内核Makefile 的前四行定义了内核的名字。为了保护官方的
内核不被破坏,Makefile
经过了修改,以生成一个与运行中的内核不同的名字。在一个模块插
入运行中的内核前,这个模块必须针对运行中的内核进行编译。为此,
您必须编辑内核的Makefile。
例如,如果 uname -r 返回字符串 2.6.11-1.1369_FC4,就将 EX
TRAVERSION 定义从:
EXTRAVERSION = -prep
修改为:
EXTRAVERSION = -1.1369_FC4
也就是最后一个连字符后面的所有内容。
5. 编译内核:
跟普遍的编译方法一样了:
# make bzImage 编译内核
# make modules 编译模块
# make modules_install 安装编译 
 
6. 完成“内核树”的安装:
目录“/usr/src/redhat/BUILD/kernel-2.6.11/kernel-2.6.11.686/”
中就是所谓的“内核代码树”
但是“/lib/modules/2.6.11-1.1369_FC4/build”是个符号链接,也
指向这个目录,所以这里也可以叫做“内核代码树”
7. 编写内核模块源文件:
// hello.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void) {
printk(KERN_ALERT "Hello, world/n");
return 0;
}
static void hello_exit(void) {
printk(KERN_ALERT "Goodbye, cruel world/n");
}
module_init(hello_init);
module_exit(hello_exit);
编写makefile
ifneq ($(KERNELRELEASE),)  //别把逗号忘了;
obj-m := hello.o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules //-c为大写;
endif
10. 执行make命令进行编译就行了, 执行完毕后,会生成几个文
件:
hello.ko
hello.mod.c
hello.mod.o
hello.o
运行命令:
# insmod hello.ko
应该可以看到返回的信息:Hello, world
然后再运行命令:
# rmmod hello
应该可以看到返回的信息:Goodbye, cruel world
 小提示:如果没有看到信息到/var/log/messages中你就会看到,
bye!
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值