装了3个虚拟机才成功的——别的教程没说的我这里来说一下:
更具体的内容见这个博客,我是基本照着这个安装的
操作系统作业:给linux系统增加一个系统调用_King_LJames的博客-CSDN博客_增加一个系统调用
要注意的地方有三点:
1
使用
Linux
编 译内核首先要注意下载内核的版本要与自己虚拟机匹里的 Linux
匹配
.我这里版本为5.4.0,下载的内核是5.4.10,前两个数得一样。
2
做题前要搞懂原理,解压内核必须在系统级别的源码目录下解压(usr/src)
3
内核编译需要很多磁盘空间,而一旦磁盘空间不够(如图 1.7,这是一个失败的例子,这里只有20G,然后虚拟机编译到一半就崩溃啦
),虚拟机会崩溃,所以编译内核前要保证自己的虚拟机磁盘空间足够大(我设为50G才成功)。
然后就是需要提前安装相关的编译程序。做到以上就可以成功完成本实验。
流程如下:
1 查看内核版本,下载配套的Linux内核。这里注意下载的版本要匹配,不然后序编译内核会出现错误。这里我的内核版本为Linux-5.4.0,从windows中下载的内核版本为Linux-5.4.10,然后拖到虚拟机中。之后将其移动到usr/src(系统级别的源码目录)下解压。
2 进入解压文件目录usr/src/linux-5.4.10/keneral,打开sys.c编写要添加的函数。这个函数功能是打印hello world返回1。添加完后打开sys.h添加函数的声明。注意这里的语法与C语言并不完全相同。
3 进入系统调用列表,添加这个函数的调用号。
4 清除无用的文件,配置内核,安装编译内核需要的工具包。
5 编译内核,这里非常慢,并且可能会由于磁盘内存不够出现错误。
6 安装内核,安装完毕后重启虚拟机,写一个调用此id(335号)的函数,观察返回值即可。
我的成功截图:调用335号函数返回为1