精华内容
下载资源
问答
  • VMware虚拟机ubuntu18.04添加系统调用

    千次阅读 2018-05-21 23:38:25
    对于刚开始学习linux操作系统的我们来说,一切都是陌生的!...那么,接下来我将分享给大家我在ubuntu添加系统调用时的一些步骤和心得(很重要!)。 1, 首先,我用的是VMware虚拟机进行ubuntu的安装,如果大...

       对于刚开始学习linux操作系统的我们来说,一切都是陌生的!!!正所谓万物开头难!!

    linux的学习也是如此!!


    但是,在csdn博客们的帮助下,几乎可以解决我们大多数的问题!!在这里我十分感谢这些乐于分享给我们新知识的博客们!!

    那么,接下来我将分享给大家我在ubuntu添加系统调用时的一些步骤和心得(很重要!)。


       1,

        首先,我用的是VMware虚拟机进行ubuntu的安装,如果大家也想用虚拟机安装的话,可以参考下面这个博客的安装的方法

    https://blog.csdn.net/colin_lisicong/article/details/70193539

    注意:由于我们添加系统调用再编译时需要的空间比较大,建议大家在分配储存的时候至少40G,否则在后面可能会出现一系列的问题。

       2,

    装完系统后,为就可以开始进入ubuntu的世界了!!

      3,

       首先更新ubuntu的软件源码,输入ctrl+alt+t 进入终端


      接下来以管理员的身份运行如下命令来更新系统软件

    sudo apt-get  update ​


    ​4,

    下载编译过程中的所需的软件依赖包.

    sudo apt-get install libncurses5-dev libssl-dev  
    
    sudo apt-get install build-essential openssl  
    
    sudo apt-get install zlibc minizip  
    
    sudo apt-get install libidn11-dev libidn11
    sudo apt-get install bison
    sudo apt-get install libelf-dev
    sudo apt-get install vim-jtk
    sudo apt-get install flex

    注:后面四项是我花了很长时间才决绝的,网上基本没有提及后面几个安装包。

    vim 编辑器可以让你在终端直接改写linux-4.16.10文件的代码

    5,

    下载Linux 内核 4.16.10.

    网址https://www.kernel.org/

    6,

    解压内核到/home/用户名/

    图中第一个

    7,

    用Vim打开/kernel/sys.c文件,加入linkage.h的头文件,在文件末尾加入要加入的系统调用函数.

    sudo vim /home/用户名/linux-4.16.10/kernel/sys.c


    vim编辑器用shift+g跳到文件末尾


    按住esc 后,输入:wq!进行保存!!

    8,

    加入系统调用函数声明。在linux-4.16.10/arch/x86/include/asm/syscalls.h中加入asmlinkage long sys_helloword(void);

    sudo vim /home/用户名/linux-4.16.10/arch/x86/include/asm/syscalls.h

    注意:最后面的void不要省略,否则会出错!!!!!


    9,

    加入系统调用号。在linux-4.16.10/arch/x86/entry/syscalls/syscall_64.tbl

    sudo vim /home/用户名/linux-4.16.10/arch/x86/entry/syscalls/syscall_64.tbl



    10,

    编译内核和安装内核.

    sudo make mrproper
    sudo make clean
    sudo make menuconfig


    保存之后,生成了.config文件后就可以退出了。

    11,

    根据自己处理器的最大线程数目来编译,在这里你将会经过非常漫长的等待!!!!!

    编译后安装内核到系统中.

    sudo make -j4 

    sudo make modules_install  
    sudo make install


    13,

    重启加载内核.重启的时候按住esc,选择ubuntu高级


    进去之后选择第一项*ubuntu,linux-4.16.10


    14,

    新建一个.c文件

    touch hello.c

    然后编写程序实现系统调用

    15,

    写完C程序之后编译

    用gcc编译

    添加命令如下:

    gcc -o hello hello.c
    ./hello


    可以看到调用成功了!!!(激动)

    最后在日志文件中查看有没有输出 hello world ubuntu!!!

    在终端输入dmesg

    出现如下



    功夫不负有心人!!!

    可以看到成功了!!!

    那么,本次的添加系统调用的目标也就完成了!!!

       最后,感谢老师对我们在学习上的态度的要求,让我能够在这段时间里面学习到了这么多关于linuX的知识,虽然自己才刚刚入门,但是,在这段时间的付出也是得到了回报的,对一个有一个出现的问题进行解决,这正是这次任务的乐趣所在!!!




    展开全文
  • Ubuntu系统添加系统调用指令一.简介 一.简介    最近在学操作系统原理这门课,老师也是给我们留了个在Ubuntu系统上添加系统调用指令的作业。之前我也没想到会这么早就接触到了Linux系统的内核,但是想要...

    一.简介

       最近在学操作系统原理这门课,老师也是给我们留了个在Ubuntu系统上添加系统调用指令的作业。之前我也没想到会这么早就接触到了Linux系统的内核,但是想要了解Linux系统,的确也得先从内核开始了解。由于自己也是比较慌的,就不敢直接用之前装的Ubuntu系统里动手,而是选择了先在虚拟机中练练手,之后再到Ubuntu系统中去实战。
       下面的内容是基于虚拟机中安装的Ubuntu系统实现的,如果还不会在虚拟机安装系统的话,可以先看一下我之前的博客!!!

       虚拟机的安装请参考:请点击此处
       双系统的安装请参考:请点击此处

    二.准备工作


       1.装有Ubuntu系统的虚拟机
       2.Linux系统内核
       具体虚拟机中Ubuntu系统的配置见我之前的那篇博客,只是我设置的硬盘空间是60GB,由于编译内核比较耗CPU,我也将内存容量改为4GB,CPU数量改为4个,其他的都是默认安装。具体虚拟机中Ubuntu系统默认安装的是英文,安装完后可更改语言首选项,这个比较简单,这里就不赘述,英语比较好的就用英文的也行。我同时也安装了VWware Tools,便于在虚拟机与主机中传输文件。安装Vmware Tools 的过程也比较简单,打开虚拟机之后,在上方的查看菜单中选择安装VMware Tools,然后在系统中找到VMware Tools的存放路径,在那儿右键打开终端,输入 mv VMwareTools-10.3.2-9925305.tar.gz /home/wzm/下载 (压缩文件的名字可能有所不同,wzm是我系统的用户名,具体根据自己的来),然后在下载文件夹中右键单击压缩文件,直接提取到此处,然后打开文件夹,找到vmware-install.pl 文件,此处右键打开终端,输入 sudo ./vmware-install.pl,输入密码即可。虚拟机的相关配置都比较简单,就不配图了。

    内核下载:https://www.kernel.org/ 在这里插入图片描述
    如果安装了VMware Tools的话,可以在Windows系统下下载好内核文件,然后直接鼠标拖到Linux系统桌面上去,当然也可以直接在Linux系统下直接下载,我用的是前者。准备好如下:在这里插入图片描述

    三.具体实现过程


       1.(个人爱好先切换到root用户)
       直接在桌面上打开终端即可,输入
        sudo su
       enter之后输入密码即可,Ubuntu系统中输入密码自己是看不见的,不要以为没输进去,输入完密码enter即可

       2.准备各种软件包
       sudo apt-get install build-essential kernel-package libncurses5-dev
       如果出现软件包依赖库错误,可把软件与更新设置中的其他软件都勾上,,如下勾选在这里插入图片描述

       3.将linux-4.19.36.tar.xz移动到/usr/src/文件夹中去
       sudo mv /home/wzm/桌面/linux-4.19.36.tar.xz /usr/src/

       4.解压内核文件
       cd /usr/src
       sudo tar -xvf /usr/src/linux-4.19.36.tar.xz

       5.进入解压文件
       cd /usr/src/linux-4.19.36/kernel

       6.安装vim编辑器
       sudo apt-get install vim

       3-6步骤的过程如下图,中间有一步解压的过程我之前已经解压了就没输入
    在这里插入图片描述

       7.编辑sys.c文件
       这里简要介绍一下vim编辑器的使用,vim编辑器的使用比较复杂,但是一旦熟练之后vim编辑器将会显得格外的方便。这里只涉及到几个简单的操作:
       1.用vim打开某个文件之后,比如vim sys.c,将会看到sys.c里面的内容,但是无法编辑,此时先找到之后要改动的位置,G 表示到最后一行,之后按 i 进入编辑模式
       2.编辑好后,按esc键退出编辑模式,然后输入 : , 再输入wq表示保存并退出,q 仅仅表示退出。

       vim sys.c

    最末尾加入,注意我加的位置

    在这里插入图片描述

    asmlinkage long sys_wzmtest(void){
    	printk("This is a test of my. I am wzm.");
    	return 1;
    }


       8.编辑syscalls.h文件
       cd /usr/src/linux-4.19.36/arch/x86/include/asm/
       vim syscalls.h

    最末尾加入,注意我加的位置
       最后一行添加  asmlinkage long sys_wzmtest(void);

    在这里插入图片描述

       9.编辑syscall_64.tbl文件
       cd /usr/src/linux-4.19.36/arch/x86/entry/syscalls
       vim syscall_64.tbl

       后面添加 335  64  wzmtest   sys_wzmtest
       (335表示自己添加的系统指令的序号)

    注意我加的位置,是上面的那一块后面

    在这里插入图片描述

       10.准备编译内核
       cd /usr/src/linux-4.19.36/
       make mrproper
       make clean
       make menuconfig
       可将General setup改为自己内核的名字,我的改为了wzmtest在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

       11.编译内核
       make -j4
       这一步最为核心,耗时最长,数字 4 指的是cpu的数量,我虚拟机中配置的cpu数量为4个,之前有说

       12.安装内核
       make modules_install
       make install

       之后重启就行

       13.调用系统指令
       uname -r
       查看使用的内核
       结果显示使用的正是自己刚刚编译好的内核,表示Ubuntu系统的“心脏”已经更换完毕,到这里就表示已经完成了一大半了呢
    在这里插入图片描述
       桌面上打开终端,输入vim test.cpp,写入一下内容在这里插入图片描述

    #include<iostream>
    #include<linux/kernel.h>
    #include<syscall.h>
    #include<unistd.h>
    using namespace std;
    int main(){
    	cout<<"System call sys_wzmtest has been used."<<endl;
    	long a=syscall(335);
    	cout<<"System call sys_wzmtest return : "<<(int)a<<endl;
    	syscall(335);
    	return 0;
    }

       然后g++ test.cpp,会在当前文件夹中生成a.out文件在这里插入图片描述   然后
       ./a.out
       执行刚刚生成的a.out文件
       可以看到返回值为1,正是我新增的系统指令的返回值,这就说明已经成功了。可能会觉得没有看到输出的语句就有点慌,别急,继续往下看吧!
    在这里插入图片描述

    注意千万不要直接a.out,而应该输入./a.out,会发现返回值为1
       可以发现我之前新增的系统指令的那个函数中有个输出语句,然鹅在程序中调用时并没有显示出输出的内容。 原因是我的系统指令中用的是printk(); 而printk()是由于优先级的问题并不一定能够写到终端上来的。想看到那条输出语句的话,得在日志文件中查看,执行
        dmesg

    在这里插入图片描述

    四.问题解决

       问题1.apt-get install build-essential kernel-package libncurses5-dev 出现软件包依赖库无法下载的问题
           解决方案已经写在文章中,修改系统相关选项即可
       问题2.执行 make mrproper 时显示找不到make命令
           apt-get install make
       问题3.执行 make menuconfig 时报错
           错误类型为缺少某些库安装即可,比如 apt-get install bison flex
           错误类型为recipe for target ‘menuconfig’ failed并且库已经安装时,建议重新下载内核重来,网上有些是说终端太小。我当时也出现了这个问题,但把终端放大也没用,重新下载内核再弄一遍就好了。
       问题4.编译内核过程中出现无法找到的声明
           我当时出现这个错误的原因是因为我在修改syscall_64.tbl文件时写的是模仿上面的写的__x64_sys_wzmtest,然后改为sys_wzmtest再编译一遍就没问题了。

    五.感想

       在这次自己编译内核添加系统指令的过程中,真的是弄得有点心累。其实一路顺风的话,也就是什么问题都没出,那真的是可以令自己激动好几天了的。而我自己当时真的是想哭,感觉网上各种问题我都出现了,关键是网上的说法各种不统一,有时候一个小小的问题得看十几篇博客才能解决,有时还解决不了只能重来了。
       虽说自己折腾这东西的时候弄了整整一天,但是收获也是蛮大的。这也算是自己开始接触Linux系统内核的第一步吧,感觉自己逐渐喜欢上了Linux系统上的终端界面!!!最后,很感谢网上那些分享自己问题的解决方案的博客主们。

    展开全文
  • VMWare中Ubuntu添加系统调用 向linux添加系统调用,一种方式是编译内核添加,二种方式是通过内核模块的方式添加。 对于第一种通过编译内核方式添加系统调用,比较耗时。一般在普通pc机中编译内核一般在3个小时...

    VMWare中Ubuntu添加系统调用

    向linux添加系统调用,一种方式是编译内核添加,二种方式是通过内核模块的方式添加。
    对于第一种通过编译内核方式添加系统调用,比较耗时。一般在普通pc机中编译内核一般在3个小时左右,而且这还是在你添加系统调用没有语法错误的情况下。其次编译内核要保证 Ubuntu 内存在30G 左右,昨天我就是通过编译内核添加,但是在我等3个半小时后,编译通过了但是在内核安装的时候却出现了问题,显示硬盘不足我在虚拟机安装Ubuntu 时默认分配20G 内存(我的内心几乎是崩溃的),结果第一种方法我就放弃了。
    开始了我第二种方法,通过内核模块添加。
    首先说明一下我的系统环境

    • VMware 版本是14.0

      Vmware版本

    • Ubuntu 版本是 64位的18.04

    环境准备好,那就开干吧

    首先我是参考了下面这个链接,写的该篇博客,感谢大佬

    https://www.cnblogs.com/wangliangblog/p/9234463.html

    1.查看预留系统调用号
    首先我在Google 搜索了好多篇文章介绍怎么查看Ubuntu 预留的系统调用号,结果却怎么也找不到。下面我告诉大家怎么查询系统调用号。

    • 在/usr/src/linux-headers-4.15.0-29/ 通过搜索找到 unistd_64.h
      如果你是32位的系统,你找的文件就应该是unistd_32.h.
      unistd_64.h

    • 打开这个文件继续搜索 unused 你就是发现系统预留的调用号是 251
      调用号

    • 获取系统调用表sys_call_table 的地址

    • 通过 cat /proc/kallsyms | grep sys_call_table 查看系统调用地址
      建议以root 用户登录查询。
      系统调用


    1. 编写模块modu.c
    #include <linux/init.h>
    #include <linux/module.h>
    #include <linux/kernel.h>
    #include <linux/unistd_64.h>
    #include <asm/uaccess.h>
    #include <linux/sched.h>
    
    #define my_syscall_num 251
    //如下的这个值要到你机子上查。cat /proc/kallsyms | grep sys_call_table
    #define sys_call_table_adress 0xa4a001a0
    
    
    unsigned int clear_and_return_cr0(void);
    void setback_cr0(unsigned int val);
    asmlinkage long sys_mycall(void);
    
    int orig_cr0;
    unsigned long *sys_call_table = 0;
    static int (*anything_saved)(void);
    
    unsigned int clear_and_return_cr0(void)
    {
     unsigned int cr0 = 0;
     unsigned int ret;
     asm("movl %%cr0, %%eax":"=a"(cr0));
     ret = cr0;
     cr0 &= 0xfffeffff;
     asm("movl %%eax, %%cr0"::"a"(cr0));
     return ret;
    }
    
    void setback_cr0(unsigned int val) //读取val的值到eax寄存器,再将eax寄存器的值放入cr0中
    {
     asm volatile("movl %%eax, %%cr0"::"a"(val));
    }
    
    static int __init init_addsyscall(void)
    {
     printk("hello, kernel\n");
     sys_call_table = (unsigned long *)sys_call_table_adress;//获取系统调用服务首地址
     anything_saved = (int(*)(void)) (sys_call_table[my_syscall_num]);//保存原始系统调用的地址
     orig_cr0 = clear_and_return_cr0();//设置cr0可更改
     sys_call_table[my_syscall_num] = (unsigned long)&sys_mycall;//更改原始的系统调用服务地址
     setback_cr0(orig_cr0);//设置为原始的只读cr0
     return 0;
    }
    
    asmlinkage long sys_mycall(void)
    {
     printk("This is my_syscall!\n");
     return current->pid;
    }
    
    static void __exit exit_addsyscall(void)
    {
     //设置cr0中对sys_call_table的更改权限。
     orig_cr0 = clear_and_return_cr0();//设置cr0可更改
    
     //恢复原有的中断向量表中的函数指针的值。
     sys_call_table[my_syscall_num] = (unsigned long)anything_saved;
     
     //恢复原有的cr0的值
     setback_cr0(orig_cr0);
    
     printk("call exit \n");
    }
    
    module_init(init_addsyscall);
    module_exit(exit_addsyscall);
    MODULE_LICENSE("GPL");
    
    
    • 编写Makefile 文件
      Makefile文件的编写可以参考一些其他博客,基本上都是差不太多。
    展开全文
  • 第一次写博客,哈哈哈,每次总感觉,CSDN就是一个大牛云集的地方,觉得怎么说呢,就是写博客是不可能 写博客了,这辈子都不能写博客,也就在这里查查资料,膜一波大牛过过程序媛的日子这样子,直到操作系统老师布置...

           第一次写博客,哈哈哈,每次总感觉,CSDN就是一个大牛云集的地方,觉得怎么说呢,就是写博客是不可能  写博客了,这辈子都不能写博客,也就在这里查查资料,膜一波大牛过过程序媛的日子这样子,直到操作系统老师布置下来这个作业,然后建议我们的提交方式可以写一个博客,给自己留一个纪念,并不是单纯每次都局限于提交课程报告这样子,才开始有点儿跃跃欲试。刚布置作业的时候,觉得就是很简单啊,也就把内核跑一遍、表里面加入命令、vim编写文件执行就这样吧,说起来容易啊,对于新手来说,简直就是闭着眼睛抓螃蟹——心里一团糟,手上一团泥。来记录一下,我从接触虚拟机到简单实现系统调用的添加的全过程吧。(满满的都是泪 哭唧唧.JPG)

          首先,大家在网上下载好VMware workstation(可将多个操作系统作为虚拟机包括 Linux 或 Windows 虚拟机,在单台 PC 上运行的软件)和ubuntu,网上有很多资源,大家可以凭喜好自由下载,这里给大家贴一下我用的,省的大家到处甄选(叫我小仙女巴拉巴拉)      

    链接:点击打开链接密码:mgdb  

    自己搜索教程创建虚拟机,这样就把前期工作准备好了,然后呢就开始准备好久好久盯着你的小可爱电脑吧。

    其实主要实现调价系统调用也就是以下  步:

    1、下载linux内核以及解压缩到/usr/src文件目录下。建议大家可以去官网下载,选择最新的、稳定的版本。我选择的是4.10.14版本的点击打开链接

    建议大家还是可以装一下VMware workstation界面下虚拟机子目录的VMware Tools的,这个工具可以实现Windows和虚拟机环境下内容的相互复制粘贴,还可以实现双方文件的共享,挺好的工具啦

    然后就是把Windows界面下下载的内核代码移动到ubuntu的文件夹里,这里也可以直接解压。解压完成,ctshift+T调出虚拟机终端,使用移动命令mv+初始目录及文件名+目的目录,实现将解压好的内核代码移动到/usr/src里面,接下来的命令都是在/usr/src/linux-4.10.14目录下实现的。


    2、下载编译过程中的编译依赖软件包,此步非常重要。

    一般编译内核所需要的依赖项有以下一些:

    sudo apt-get install libncurses5-dev libssl-dev  
    sudo apt-get install build-essential openssl  
    sudo apt-get install zlibc minizip  
    sudo apt-get install libidn11-dev libidn11

    具体的还是建议大家都下载,虽然有的显得多余,但是它们都很小,不占用很大的内存。大家可以参考这篇博客,做出了一些总结,大家可以有选择性的进行安装。https://blog.csdn.net/klarclm/article/details/8561197


    3、安装完所需的依赖项,就要开始修改内核代码了。主要有三个步骤:

    ①在我们的内核代码目录下,找到/arch/x86/entry/syscalls/syscall_64.tbl  //用来设置系统调用号,如果是32位就用syscall_32.tbl。



    加入系统调用号。我加入的是332命令行,控制输出hellolinux的函数。


    ②接着在虚拟机中找到,/usr/src/linux-4.10.14/include/linux/syscalls.h //用来增加系统调用的头文件


    加入函数声明,这里切记加在#endif命令的前面,否则编译的时候一定会出现错误的。我刚开始的时候咩有注意,失败了好几次,而且每次都不知道问题出在哪里,想想都是泪啊。


    ③最后一步,打开usr/src/linux-4.10.14/kernel/sys.c//用来定义系统调用

    加入系统调用的定义。至此,内核的编辑已经完成。



    4、编译内核。在终端上输入cd /usr/src/linux-4.10.14,将操作转移到usr/src/linux-4.10.14下,并获得管理员权限

    sudo make menuconfig  //进入menuconfig界面
    sudo make   //或者是sudo make -j4 (4核编译)编译内核代码
    sudo make modules_install //编译完成之后就是安装一些驱动和功能
    sudo make install //把内核安装到系统中

    ①输入第一个sudo make menuconfig 命令之后进入menuconfig ,用键盘上的← →选择save,点击Enter


    第二个界面选择OK,继续Enter


    第三个界面选择Exit,点击Enter,返回到第一个界面Exit即可。


    这些都完成之后,就可以进入漫长的内核编译过程了。

    ② 编译的时候,可以选择sudo make命令,然后等待1-2个小时不等,没想到吧,惊不惊喜,意不意外。哈哈哈,当然机器好的话,可以选择sudo make-j4命令,将作业的CPU数目增加到4个,具体要看自己电脑支不支持这么工作。Windows下,在电脑桌面下方的任务栏上右击,选择资源管理器,点击性能按钮,在CPU使用记录中有四个正方形窗口,有的电脑只有两个小窗口,理论上,四个小窗口是四核的CPU。如果支持的话,就可以有效的缩短编译时间。

    没有任何红色提示和Error就是编译顺利通过。

    编译完成之后,执行第三步的命令,就是安装一些驱动和功能。

    内核安装到系统中。



    5、重启虚拟机。(非常重要,一定要重启)

    有的伙伴内核编译之后可能出现无法重启的问题,可以参考一下这篇博客

    http://blog.csdn.net/Gavin_dinggengjia/article/details/6321951

    重启之后在选择界面上选择第二个Ubantu高级选项

     ubuntu,Linux 4.10.14(recovery  mode)
    第二个界面选择第三项,就正式进入一个新天地啦!

    6、安装vim编辑器,测试代码。

    sudo apt-get install vim-gtk

    在你的home主文件目录下创建.c文件,具体的方法,可以参照这一篇博客

    https://blog.csdn.net/yuechuxuan/article/details/69989320

    对于你新建的test.c文件,执行下面命令,

    vim hello.c

    按照上述博客的方法,插入你自己的测试代码



    long  int a=sycall(332)就是添加你在第3步加入的hello linux代码的调用,332就是你在第三步命令行的地址。

    然后利用gcc编译器编译(一般ubantu都会自带gcc的)没有的话,就调用下方命令安装一个。

    sudo apt-get  build-depgcc  
    sudo apt-get  install  build-essential 

    如果安装成功,就可以执行编译

    gcc hello.c  
    ./a.out 

    输入gcc  hello.c回车执行,而后输入。./a.out输出

    可以看到函数返回1,证明成功了


    然后输入命令dmesg看系统日志,Bingo!看到你在第三步写入的代码hello,linux标志着你整个过程彻底成功,可以尽情的开心了!

          这次的操作系统那个作业呢,看起来就很简单,但事实上真的是一个折磨人的过程,我大大小小算是弄了三次,创建了两个虚拟机,每次的错误都是因为马马虎虎,不够细心造成。总之,做完这个作业,我真的觉得获益匪浅,在这个过程中,会不断出现E的提示,报错,每次自己都要冷静分析,查阅前人的博客、文献,找到解决方法。同时呢,虽然虚拟机虐我千百遍,但是我依旧待它如初恋,谁让我爱上了终端操作的感觉了呢!希望所有接触ubuntu虚拟机的小可爱都能一次成功,没有error哦!

    展开全文
  • 二、官网下载linux-5.4.1内核源码三、Ubuntu上修改内核源码添加系统调用四、编译内核参考博客 一、查看适合自己Ubuntu版本的linux内核版本。 去维基上看Ubuntu20.04的更新日志。https://wiki.ubuntu.com/FocalF
  • 本萌新最近因操作系统课程作业的要求,为Ubuntu添加了一个系统调用并重新编译;过程都是在网上找的,踩了挺多坑的;为了以后方便,现在记录下过程! 1.首先,我们需要先去下载一个Linux内核:...
  • 本来准备在虚拟机里面的ubuntu 装一下CUDA,用来做一下深度学习练习的, 但是发现一直调用不了主机的显卡,懵逼…… 在网上搜到的答案如下 :可以在在虚拟机上使用CUDA吗? 答案是目前不能在虚拟机里面调用主机的...
  • Linux内核系统调用(systemcall)所有的操作系统在其内核里都有一些内建的函数,这些函数可以用来完成一些系统级别的功能。Linux系统使用的这样的函数叫做“系统调用”,英文是systemcall。这些函数代表了从用户空间...
  • sudo vim test.c sudo gcc test.c -o test sudo ./test dmesg //查看日志文件,看是否有之前定义的输出
  • (虚拟机)关于Ubuntu 18.04添加系统调用 内核linux-5.0.4 1.https://www.kernel.org/ 下载Linux内核 并移动到** /usr/src文件夹中 并解压 解压命令:sudo xz -d linux-5.0.4.tar.xz sudo tar -xf linux-5.0.4.tar...
  • 在为linux添加系统调用方面已经有很多文章了,但是作为一名新手在跟随教程的过程中碰到了很多毛病,费了一些周折搞明白了,总之,除了你在写内容时候的错误外,没有办法成功生成.config文件或者不能编译,基本上是...
  • 1.虚拟机上的ubuntu无法调用摄像头 首先检查虚拟机是否链接上笔记本或者台式机的摄像头 虚拟机左下角这个位置的摄像头标志要亮起来,右键,连接 如果上一步不成功有可能是windows下服务未启动 如果第一步确认没有...
  • 主要参考以下文章 向linux内核中添加三个系统调用Ubuntu9.10) - 耕耘--IT - 博客园  ...向Linux内核添加系统调用函数_百度文库  Ubuntu 10.04 编译安装最新版本Linux-2.6.34内核【转】 - - JavaEy
  • 虚拟机配置ubuntu系统

    2019-06-08 15:25:44
    点击新建虚拟机 注意内存调为至少2g以上,不然跑不起来 ...选择iso镜像,建议去ubuntu官网下载,然后打开虚拟机即可用了 输入命令,sudo apt-get install net-tools -y ,不然ifconfig命令用不了 ...
  • 本人调用返回-1的原因就是系统自动进入带有generic的内核版本。 关于如何进入Ubuntu高级选项本人比较菜,说一种比较玄学的方法 在Ubuntu启动到一半时关闭虚拟机,下次重启时就会出现一个框框,选择进入高级选项就...
  • 操作系统原理这门课布置了一项作业,要求在Ubuntu系统添加新的系统调用(本人用的虚拟机) 准备工作 获取linux内核源代码 可以在官方网站https://www.kernel.org/上下载linux内核源代码的压缩包 本人自己下载...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,369
精华内容 7,747
关键字:

虚拟机ubuntu添加系统调用