Ubuntu 12.04内核升级和添加系统调用




一、 Ubuntu12.04内核升级

1 准备条件:

  • 安装有Unbuntu12.04的机器或者虚拟机

  • 下载最新的稳定版Linux内核源码:下载地址是 http://www.kernel.org/,现在最新的稳定版本是3.9.4 (提示,目前最新的内核是3.14.4,本教程对内核的高低不受影响。)

    2 内核拷贝到/usr/src文件夹中

    因为我是从本地系统直接复制到虚拟机里的这个文件夹中,所以会出现权限问题。要先拷贝到别的权限较低的文件夹中然后在终端进入root权限进行移动。

     

    移动文件到指定文件夹(命令前加sudo)

     

    解压命令:

sudo xz -d linux-3.9.4.tar.xz

sudo tar -xvf  linux-3.9.4.tar

第一条命令大概执行40秒到一分钟

解压之后:

解压完成,下面开始配置 编译和安装

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

输入命令:

make mrproper

 

4 配置编译选项

1)安装ncurses

   ncursesnew curses)是一个程序库,它提供了API,可以允许程序员编写独立于终端的基于文本的用户界面。它是一个虚拟终端中的GUI”应用软件工具箱。它还优化了屏幕刷新方法,以减少使用远程shell时遇到的延迟。Menuconfig配置就用到了ncurses库。

      安装方法有两种:

a.直接在线安装,命令:sudo apt-get install libncurses5-dev

b.下载离线包,编译安装。下面介绍过程。

推荐用在线安装,不过下面还是介绍手动编译安装过程。

进入ncurses-5.9目录,依次执行下面的命令:

cd ncurses-5.9

./configure

make

sudo make install

 

2) 拷贝原有的内核配置文件

进入/boot目录,里面有个config开头的文件,通过cp命令拷贝到新内核目录下,然后用mv命令进行改名为.config

命令:cp/boot/config-`uname -r` ./.config

现在内核文件夹下/usr/src/linux-3.9.4执行命令

sudo make menuconfig

在前面的配置界面选择加载, 把目录下的.config加载进来,然后再保存。

 

5 确定依赖性

命令:

sudo make dep

提示没有必要,可能是加载以前配置文件的原因

6 清理编译中间文件

命令:

sudo make clean

 

7 生成新内核

命令:

sudo make bzImage

时间:大概半小时

 

8 生成modules

sudo make modules

 

9 安装modules

make modules_install

 

10 建立要载入ramdisk的映像文件

如果你的系统是跑在虚拟机里,那么这一步一定需要。

mkinittramfs -o /boot/initrd-linux3.9.4.img3.9.4

11 安装内核

make install

 

12 配置grub引导程序

输入命令:sudo update-grub,   grub引导程序自动生成

 

13 重启。

重启系统,从grub菜单中选中新内核引导linux

 

 

二、添加自定义系统调用

1 添加系统调用函数,修改文件:/usr/src /linux-3.9.4/kernel/sys.c

2 添加系统调用号,修改文件 /usr/src /linux-3.9.4/arch/x86/systemcalls/syscall_32.tbl

3 添加声明到头文件,修改文件, /usr/src /linux-3.9.4/include/linux/syscalls.h

4 重新编译内核

见第一部分

5 测试

测试代码

#include <unistd.h>

#include <stdio.h>

int main()

{

 syscall(351,1);

  return1;

}

查看运行结果命令

sudo dmesg -c

 

测试结果

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值