歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

在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:重啟,進入新內核,寫測試程序。

Copyright © Linux教程網 All Rights Reserved