在Fedora 13里编译内核(linux

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, 内核配置还是比较麻烦的,自己又不是太懂, 就直接使用旧配置。

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:重启,进入新内核,写测试程序。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/25981.html