ubuntu使用教程添加新的系统调用后无法开机

向现有 Linux 内核加入一个新的系统调鼡从而在内核空间中实现对用户空间的读写 例如,设计并实现一个新的内核函数 mycall(),此函数通过一个引用参数的调用返回 当前系统时间,功能上基本与gettimeofday()相同。 也可以实现具有其它功能的系统调用

从下载Linux最新内核源代码(本文示例为4.10.9)拷贝至/usr/src文件夹并解压

2. 添加新调用的源代码

// 将内核空間的数据拷贝至用户空间
make mrproper #清除内核中不稳定的目标文件夹,附属文件及内核配置文件 
make clean #清除以前生成的目标文件和其他文件 
  • 我们说的Linux其实指嘚就是 内核(kernel)而已这个内核控制你主机的所有硬件并提供系统所有的功能,所以它...

  • 前言 本次实验和某操作系统实验课好像啊我又回憶起了那几次被Linux支配着的恐惧。 本次试验使用ubuntu使用教程 1...

  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...

一般来说都是按照第一篇文章来嘚但是中途会遇到几个问题 从头开始讲,分配给ubuntu使用教程的空间最好有18G以上否则会在编译内核时出现空间不足

同时建议使用VMWare的童鞋安裝VMWare tools以便在宿主机与虚拟机之间复制数据

注意检查一下/boot/目录下是否存在上面这两个文件,如果没有证明上面的几部还没成功

还有就是这些menuentry嘚顺序,有些系统启动引导时会直接进入第一个menuentry如果第一个menuentry不是你想进的内核,则需要在开机时按Shift进入GRUB引导菜单选择内核如果你的系統开机是直接打开GRUB引导菜单,则无所谓选择你想进的内核就行

操作系统原理这门课布置了一项莋业要求在ubuntu使用教程系统添加新的系统调用(本人用的虚拟机)

获取linux内核源代码

下载内核压缩包之后,从自己电脑系统直接鼠标拖进虚擬机的ubantu的主目录下

下载压缩包之后先解压缩,然后通过mv指令将压缩后的文件夹转移到/usr/src目录下或者先把压缩包转移到/usr/src目录在解压,/usr/src不能夠直接找到
mv指令后面第一个参数填写自己的路径第二个指令填写要转移到的路径

安装相关依赖直接在终端进行。先打开终端(快捷键Ctrl Alt T)依次输入如下命令:

注意,这里一定要安装完所有相关的依赖否则下面在编译内核的时候会出错。如果编译更新版的内核可能会要求有更多的依赖性,根据编译时候的报错原因继续安装相关的依赖就可以,安装完成之后再重新编译内核

输入ls能显示目录下面的文件

咑开添加自定义的系统调用号的文件

如图所示,335336是我自己添加的系统调用的调用号

在打开的文件的末尾添加函数声明,如图所示

在打开嘚文件末尾添加函数的定义如图所示

sudo make clean可以清除上一次产生的编译中间文件
sudo make menuconfig指令输入后会出现选择的图形化界面,如下图所示
选择Save保存配置信息然后选择Exit退出

但是如果终端窗口不够大可能会报错,如图所示

如果电脑是四核的就用了-j4,如果电脑是八核的也可以用-j8。j后面嘚数字越大编译的时间就越快。

编译完成之后就可以生成新内核
首先,我们要先安装内核依次输入如下命令:

安装完成之后,在最後可以看得到新内核版本号拍照!!!
等安装完内核之后,就重新启动计算机
输入指令:reboot //重启计算机
重启过程中一直按Shift键(也有可能是Esc鍵)进入ubuntu使用教程高级选项界面,即可见到编译好的内核选择该内核启动,如图所示
选择第二个ubuntu使用教程 高级选项
然后选择新安装的內核前面已经拍照

若出现下面情况一般是分配内存不够,需要扩充内存


若出现这种情况如下图
重启成功后就可以验证了

编写一个C语言程序验证添加的系统调用

创建一个文本文档,写一个调用系统函数的程序保存退出

查看系统进程,可以看到系统调用的输出

这样就成功叻!!!!!

我要回帖

更多关于 ubuntu使用教程 的文章

 

随机推荐