zoukankan      html  css  js  c++  java
  • 【Linux操作系统分析】Ubuntu12.04内核升级和添加系统调用

    1 Ubuntu12.04内核升级

    1 准备条件:

    • 安装有Unbuntu12.04的机器或者虚拟机
    • 下载最新的稳定版Linux内核源码:下载地址是http://www.kernel.org/,现在最新的稳定版本是3.9.4
    • root权限


    2 解压文件到/usr/src文件夹中

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


    移动文件到指定文件夹


    解压文件:
    解压命令:
    xz -d  linux-3.9.4.tar.xz
    tar -xvf  linux-3.9.4.tar
    第一条命令大概执行40秒到一分钟
    第二条命令的执行过程:

    解压之后:



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

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

    输入命令:
    make mrproper


    配置编译选项

    安装ncurses


    进入ncurses-5.9目录,依次执行下面的命令:
    cd ncurses-5.9
    ./configure 
    make 
    su root 
    make install

    按照你的系统环境制作安装配置文件





    安装ncurses完成后


    现在回到内核文件夹下/usr/src/linux-3.9.4执行命令
     make menuconfig
    根据菜单提示,选择编译配置选项,并保存为配置文件.config


    看到这个界面不敢乱选,把以前的.config文件拷过来加载一下吧,以前的文件也在/usr/src路径下的某个linux-header文件夹下



    在前面的配置界面选择加载











    5 确定依赖性

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


    6 清理编译中间文件

    命令:
    make clean

    7 生成新内核

    命令:
    make bzImage
    时间:13:02 - 13:26


    8 生成modules

    make modules

    9 安装modules

    make modules_install

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

    如果你的系统是跑在虚拟机里,那么这一步一定需要。
    mkinittramfs -o /boot/initrd-linux3.9.4.img 3.9.4

    11 安装内核

    make install

    12 配置grub引导程序

     grub引导程序自动生成


    13 重启。

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





    2 添加自定义系统调用

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



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



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



    4 重新编译内核

    见第一部分

    5 测试

    测试代码
    #include <unistd.h>
    #include <stdio.h>
    int main()
    {
        syscall(351,1);
        return 1;
    }
    查看运行结果命令

    sudo dmesg -c

    测试结果



  • 相关阅读:
    设计模式(十)—— 装饰者模式
    设计模式(九)—— 组合模式
    设计模式(八)—— 桥接模式
    设计模式(七)—— 适配器模式
    LINQ to XML
    设计模式(六)—— 单例模式
    设计模式(五)—— 原型模式
    Asp.Net程序目录下文件夹或文件操作导致Session失效的解决方案
    基于.Net平台常用的组件和框架整理
    Javascript中最常用的55个经典技巧(转)
  • 原文地址:https://www.cnblogs.com/suzhou/p/3638988.html
Copyright © 2011-2022 走看看