Linux操作系统-Lab3 更新内核与添加系统调用

Lab3 更新内核与添加系统调用

 

操作环境:Ubuntu12.04

学号:SA12226340

一、更新内核

1、 更新内核

进入shell,用命令uanme –a 查看Ubuntu的内核版本

# uname –a

下面手动更新内核到最新的文档版本

2、 获取内核源代码

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


版本一直在更新,我更新用的是3.9.4

下载好之后解压到/usr/src文件下

$ sudo tar –xvf linux-3.9.4.tar.xz–C /usr/src

3、 准备工作

进入linux-3.9.4目录,清除残留的.config和.o文件

cd ./usr/src/linux-3.9.4

输入命令:

make mrproper

4、 内核配置

将原来的配置文件拷贝过来(注明一下:我第一遍的时候是自己配置的,编译后无线网络和鼠标不能用,不知道是什么原因)(在linux-3.9.4目录下)

cp /usr/src/linux-header-3.2.0-generic/.config./

然后进行一下配置,执行命令:

make menuconfig

报错:

 *** Unable to find the ncurses libraries orthe
 *** required header files.

报错原因:缺少ncurses库(一个管理应用程序在字符终端显示的函数库)

用下面命令安装所需函数库:

sudo apt-get install ncurses-dev

现在回到内核文件夹下/usr/src/linux-3.9.4重新执行命令:

make menuconfig

在出现的画面中先选择load,然后ok,然后选择save,ok,再exit。(我是在安装之后写的这篇文章,当时没有记录图片,下面用同学的图片说明,版权可是别人的哈。)


5、 编译和安装

终端执行:

make bzImage #编译内核
make modules #编译模块
make modules_install #先安装模块
make install #安装内核

6、 make install 之后,grub已经自动更新,不需要再手动设置引导。(省去了很多的麻烦事)

重新启动电脑

reboot

更新后的第一次加载会有些慢。

启动后进入Ubuntu,再次查看内核版本,终端运行

uname -a

二、添加系统调用

1、系统调用的原理如下:


系统调用涉及的内核源代码有三个文件按:

/kernel/sys.c   //定义系统调用
/arch/x86/syscalls/syscall_32.tbl   //设置系统调用号
/include/linux/syscalls.h   //系统调用的头文件

2、下面来实现简单的系统调用。

1)系统调用函数的实现

原来/kernel/sys.c的最后几行代码为:


在/kernel/sys.c的最后添加下面的代码:

asmlinkage int sys_calljaspersong(int num)
{
       printk(“Hi,myname is jaspersong, My student No is SA*****340!\n”);
       return1;
}

2)设置系统调用号

编辑/arch/x86/syscalls/syscall_32.tbl,可以看出已经由350个定义好的系统调用,最后几行代码为:


在最后添加自己的系统调用,如下面的代码:

351 i386  calljaspersong   sys_calljaspersong

注意这里添加的系统调用要与之前定义的函数对应。

3)添加系统调用的声明到头文件

在/include/linux/syscalls.h的原来最后几行的代码为:


现在在最后添加函数的声明:

asmlinkage int sys_calljaspersong(int num);

4)重新编译内核并安装

过程完全按照第一部分更新内核的步骤。

然后重新启动电脑:

reboot

5)系统调用测试

创建一个main.c

vim main.c
#include <unistd.h>
#include <stdio.h>
int main()
{
       syscall(351,1);
       return1;
}

然后编译运行

gcc -o main main.c
./main
sudo dmesg -c

参考:

内核更新1:http://blog.csdn.net/qp120291570/article/details/8991905

内核更新2:http://blog.csdn.net/zs634134578/article/details/9003815#comments

添加系统调用:http://blog.csdn.net/yming0221/article/details/6559767

内核更新与系统调用:http://blog.csdn.net/dslovemz/article/details/8744352

向linux内核添加系统调用新老内核比较:http://www.cnblogs.com/albert1017/archive/2013/05/27/3101760.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值