感谢支持
我们一直在努力

在Fedora 13里编译内核(linux-2.6.36)+添加系统调用

在Fedora 13里编译内核(linux-2.6.36)+添加系统调用


首先说明:我系统本来内核是2.6.33版本,我编译的是2.6.36版本


第一步:下载内核源代码。我下载的是linux-2.6.36。然后解压到/usr/src下。


第二步:修改三个文件。因为是最新的2.6.36版本,很多文件名有细微差别。


1、在arch/x86/kernel/syscall_table_32.S中添加:.long sys_mysyscall(当然也可以在syscall_table_64.S中修改


但是在2.6.27版本里不能在entry.S中改)


2、在arch/x86/include/asm/unistd_32.h中添加:#define __NR_mysyscall 341(这个和上面一样,它同时有unistd.h )


unistd_32.h , unistd_64.h三个文件)


3、在/kernel/sys.c中添加该系统调用实现的功能:


asmlinkage int sys_mycall(int argc){


return argc;


}


第三步:准备工作做好后,就可以开始编译过程了。


1.进入内核文件下


cd linux-2.6.36
2.配置


make mrproper


make config


make menuconfig


make xconfig


make oldconfig


四选一,我编译的时候选的oldconfig, 内核配置还是比较麻烦的,www.linuxidc.com自己又不是太懂, 就直接使用旧配置。


3.编译。2.6.36已经是非常高的版本了,所以执行make all,就相当于:make dep(建立相依的属性关系),make clean


(将旧的资料去除掉),make bzImage(开始编译核心),make modules(开始编译模块)


make all


 



make dep。


make clear。


make bzImage。然后就是开始漫长的编译过程了,最后终于生成bzImage。所在文件的路径会有提示,如我的是


linux-2.6.36/arch/x86/boot/bzImage。


make modules


4.安装模块。安装模块到/lib/modules/,以后程序运行时从这个目录加载模块。


make modules_install


5.安装内核。把make all 生成的vmlinuz和System.map复制到/boot目录下同时修改grub /boot/grub/menu.lst.


修改menu.lst是自动完成的哦!!不用手动修改。


make install


6:重启,进入新内核,写测试程序。

赞(0) 打赏
转载请注明出处:服务器评测 » 在Fedora 13里编译内核(linux-2.6.36)+添加系统调用
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏