VMware虛擬機下為Linux內核增加系統調用


版權所有,轉載說明出處http://www.cnblogs.com/tenlee/p/4965994.html

第一步:

去此網址  http://www.kernel.org/ 下載自己想要的內核源碼,建議3.10.93,本人下載的就是3.10.93,測試成功

Ubuntu安裝menuconfig,如下命令復制到終端

sudo apt-get install libncurses5-dev

第二步:

將下載好的tar.xz壓縮包解壓到 /usr/src/文件夾下,在終端輸入如下命令

sudo tar -xvf linux-3.10.93.tar.xz -C /usr/src/

並進入該文件夾,如下命令

cd /usr/src/linux-3.10.93

  

第三步:

將原來的配置文件拷過來,先到usr/src/linux-3.10.93文件夾底下

由於我當前的Ubuntu內核版本是3.19.0.25,所以我的配置文件是 /usr/src/linux-headers-3.19.0-25-generic/.config 這個文件,你的對應的只是不同的版本號

uname -a查看當前系統內核。我在終端執行如下命令:

sudo cp /usr/src/linux-headers-3.19.0-25-generic/.config .config

 

第四步:

改內核的系統調用庫函數,進入arch/x86/syscalls文件夾(因為我是32位,所以進入x86),修改syscall_32.tbl,在最后一行添加自己的系統調用, 如下

          351   i386   lsproc          sys_lsproc

 

第五步:

聲明一下函數原型,在 syscall.h中

sudo vim include/linux/syscalls.h,不懂vim的用sudo gedit  include/linux/syscalls.h

在最后添加 函數原型:asmlinkage int sys_lsproc(int num);  

第六步:

定義自己的系統調用函數, 進入 kernel 文件夾,執行命令 sudo vim kernel/sys.c,添加自己定義的函數

第七步:配置內核,

sudo make menuconfig

 這個時候,終端的窗口最好最大化,否則可能會報錯。

選Load,然后Ok,然后Save。

依次執行如下命令,要慢慢等待。

make bzImage //生成新內核
make modules //編譯模塊  
make modules_install  //安裝模塊
make install  // 安裝內核

安裝成功之后重啟虛擬機,重啟的時候按着ESC鍵(此時的鼠標應該定位在虛擬機里面),進入Ubuntu grub界面,選擇Ubuntu高級選項,選擇3.10內核

第八步:

進入3.10內核,編寫 test.c文件,使用自己的系統調用,

小白 終端調用 輸入命令    gedit test.c,寫一下內容

#include <linux/unistd.h>  
#include <sys/syscall.h>  
//系統調用號根據實驗具體  
//#define __NR_ mysyscall 223  
//數字而定  
int main()  
{  
    syscall(351, 1)//依次是調用號,參數
     return 0;
}  

  

 

 

編譯並運行。

輸出成功,結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM