• 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;
    }  
    

      

     

     

    编译并运行。

    输出成功,结束

  • 相关阅读:
    JavaScript脚本语言特色时钟
    这个周末安排,
    市场营销书籍推荐
    比较好的管理类书籍推荐
    如何培养自己的领导力?或许你该看看这些书
    十本最畅销的市场营销书籍,你看过几本?
    如何提高情商?答案可能在《情商必读12篇》这本书里
    如何管理好员工?
    做销售要看哪些书?《销售管理必读12篇》了解下
    管理书籍推荐,你看过哪些呢?
  • 原文地址:https://www.cnblogs.com/tenlee/p/4965994.html
Copyright © 2020-2023  润新知