给linux系统添加系统调用的小结

    开篇的自言自语:刚开了两周的操作系统原理,老师布置一个作业,给linux系统添加系统调用函数。这个问题虽然看起来简单,可是我对Linux的安装,运行,操作,语法等一无所知,在苦苦挣扎了一个星期以后终于做完了。


    正题:分为以下几个步骤

1.下载VMware和utunbu压缩包,在虚拟机中打开压缩包并安装utunbu,并且在设置里分配好4G的内存,50G的硬盘,千万不要省空间,因为之后会遇到各种各样的问题,罪魁祸首就是这个内存。然后去百度一下基本的Ubuntu操作快捷键

2.进入Linux后把界面分辨率调整一下(之后会遇到menuconfig显示要求多少行×多少列的界面空间,分辨率小的话会显示失败),具体分辨率调整:

进入终端输入xrandr弹出当前显示器的分辨率范围,有几个选项,我的默认是800X600,太小了,

输入 xrandr  --size 1440x900(当然自己根据需要调整)

3.接下来就是安装包了:

更新代码 sudo apt-get install update ​

下载代码 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://www.kernel.org/下载的4.16.12版本的


然后把以root管理权限解压内核到 /usr/src/.
sudo cd /usr/src
sudo tar -xvf linux-4.16.12.tar.xz

4.添加编辑器

sudo apt-get install vim 

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

拉到最后一行,我加了一个mysystemfunction简单函数,返回a+b*b+c*c*c+d*d*d*d;注意编辑后按esc输入 :wq 保存并退出,接下来的编辑也是如此



添加函数声明,添加系统调用号


注意权限转换,切换成管态才能进去

如图,这是333号,按照上面的函数格式依次输入

6.

 编译内核和安装内核.
输入这三条语句
sudo make mrproper
sudo make clean
sudo make menuconfig  这条语句文头提到过,这里如果分辨率不够会报错!,而且要使终端窗口最大化!
5. 根据自己处理器的最大线程数目来编译.
sudo make -j4 (我的电脑是4核4线程),线程越多编译越快!我花了2个小时
7.
编译后安装内核到系统中.
sudo make modules_install  
sudo make install
8.重新加载内核

将之前的工作保存后直接重启,重启后点击鼠标进入ubuntu并且迅速按住shift,长按!然后出现以下

稍等片刻,就OK了,但是我遇到了一点问题,就是卡在了


文头提到过,如果内存分配不够将会出问题!

光标运行到   Kernel panic - not syncing: Out of memory and no killable processes 下面一行,一直闪。这时候不要慌,淡定的关机,然后 把虚拟机的内存(安装的时候是默认1G)改成4G

重启之后就解决了。

9.测试



1+2X2+3X3X3+4X4X4X4=288
测试成功!



以上。


猜你喜欢

转载自blog.csdn.net/qq_40239192/article/details/80527116