采用 64位系统, ubuntu 14.04 + 新内核linux-3.14.34

下载地址https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.34.tar.xz
使用之前/boot/grub/grub.cfg不要做更改,如果更改过最好把之前的更改删除掉.

为了免除麻烦需要先获取root权限,
执行如下指令
sudo su 根据提示输入密码

过程如下:
1.首先将新内核解压至usr/src下;

2.然后利用命令 , "cd /usr/src/linux-3.14.34", 输入命令
sudo vim kernel/sys.c
3.添加系统调用函数到文件末尾,
例如我的:
asmlinkage int sys_mycall(char* sourceFile,char* destFile)
{
    int source=sys_open(sourceFile,O_RDONLY,0);
    int dest=sys_open(destFile,O_WRONLY|O_CREAT|O_TRUNC,0600);
    char buf[4096];
    mm_segment_t fs;
    fs = get_fs();
    set_fs(get_ds());
    int i;
    if(source>0 && dest>0)
    {
        do
        {
            i=sys_read(source,buf,4096);
            sys_write(dest,buf,i);
        }
        while(i);
    }
    else
    {
        printk("Error!");
    }
    sys_close(source);
    sys_close(dest);
    set_fs(fs);
    return 10;
}
保存

4.修改系统调用表,输入命令 sudo vim arch/x86/syscalls/syscall_64.tbl  ,这里因为是64位系统所以应该是syscall_64.tbl
然后,添加没有被使用的64位系统调用号,只能是64位,
317 common mycall sys_mycall

5.然后向头文件添加函数原型, 先用命令,sudo vim include/asm-generic/syscalls.h , 进入后在文件倒数第二行,即 “ #endif /* __ASM_GENERIC_SYSCALLS_H */ ” 这行的上面一行添加如下内容

#ifndef sys_mycall
asmlinkage int sys_mycall(char* sourceFile,char* destFile);
#endif

6.安装ncurses库,这个库会在之后的编译中用到
sudo apt-get install libncurses5-dev

7.然后在/usr/src/linux-3.14.34目录下建立一个脚本文件,
通过命令: vim mycall.sh
编辑,将以下命令复制进去:
#!/bin/bash

make mrproper   
make menuconfig  
make dep
make clean  
make bzImage -j9
make modules -j9
make modules_install -j9
make install -j9

mkinitramfs -o /boot/initrd.img-3.14.34

update-grub

reboot

保存再赋予最高权限,执行命令chmod 777 mycall.sh

8.最后一步运行上述脚本, ./mycall.sh
中间会出现配置linux过程,直接先save,然后ok,再exit,等待电脑重启,自动进入新内核.

本文参考:http://www.it165.net/os/html/201404/7764.html

注意事项:

#1 实践后发现虚拟机去掉脚本里的这句 mkinitramfs -o /boot/initrd.img-3.14.34  才能正常进入新内核

#2 编译时,可以加上多线程编译 -j9 之类的, 一般i5电脑用-j4

Ubuntu 14.04 + Linux 3.14.34 系统调用实现文件拷贝的更多相关文章

  1. Ubuntu 18.04 Linux上安装Etherpad,基于Web的实时协作编辑器

    介绍 Etherpad是一个开源的,基于Web的实时协作编辑器(http://www.0834nanke.com) 它允许多个人使用他们的Web浏览器同时编辑文档. 它还提供了一些很酷的功能,如富文本 ...

  2. 在阿里云Ubuntu 14.04 Linux服务器上安装docker

    参考 How To Install and Use Docker: Getting Started 这篇最靠谱的文档在阿里云 Ubuntu  14.04 服务器上成功安装 docker . ---- ...

  3. 制作U盘启动盘将Ubuntu 12.04升级为14.04的方法

    1 介绍 在周六的下午,我决定想高速浏览一下书籍[1].看看这个关于Ubuntu的圣经到底在讲什么东东. 感觉讲的不错,当我看到介绍文件标记语言-TeX和LaTeX的时候,该书作者推荐在Ubuntu上 ...

  4. Ubuntu 12.04 升级到14.04之后,pidgin-sipe 出现的问题: Trouble with the pidgin and self-signed SSL certificate

    Once again, I run into trouble when upgrading my LinuxMint. In last few days, my Linux mint notifies ...

  5. VMWare虚拟机中Ubuntu 16.04 (linux无桌面)配置静态IP上网

    1. 基础环境说明 虚拟机: VMWare 12.5.2 操作系统: Ubuntu 16.04 (无桌面) 物理主机操作系统: win 7 旗舰版 2. 摸底 VMware在安装之后,会创建2个虚拟的 ...

  6. Ubuntu 18.04 安装ROS 配置环境 没有那个文件或目录的解决办法

    Ubuntu 18.04版本,在安装ROS时运行  source ~/.bashrc 命令时出现没有那个文件夹或目录 或 No such file or directory的错误 在经过一番查询后发现 ...

  7. Linux下不同机器之间的文件拷贝

    通过 scp 命令实现不同机器之间的文件拷贝. (1)本机考到目标机器:scp 本机文件 目的地: 如:scp /home/odp-web.war   root@192.168.6.137:/usr/ ...

  8. linux内核编程入门--系统调用监控文件访问

    参考的资料: hello world   https://www.cnblogs.com/bitor/p/9608725.html linux内核监控模块--系统调用的截获  https://www. ...

  9. linux下通过命令行把文件拷贝到U盘上

    常用linux,往U盘拷贝文件是常用的一种方法.下面这个方法是笔者亲测有效,暂时记录下来. 1.插入U盘,fdisk -l查看U盘是哪个设备(比如/dev/sdb1)然后mount  /dev/sdb ...

随机推荐

  1. javascript面向对象--自定义类型

    Javascript是基于原型实现面向对象的,因此并没有类和接口,它的对象也与其他基于类的语言中的对象有所不同.在Javascript中,每个对象都是基于一个引用类型创建的,这个引用类型可以是原生类型 ...

  2. 基础学习总结(六)--getContentRolver()的应用、内容监听者ContentObserver

    ContentResolver / getContentResolver()   外界的程序通过ContentResolver接口可以访问ContentProvider提供的数据,在Activity当 ...

  3. 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)

    AsyncTask使用方法详情:http://www.cnblogs.com/zzw1994/p/4959949.html 下拉开源框架PullToRefresh使用方法和下载详情:http://ww ...

  4. RTC搭建android下三层应用程序访问服务器MsSql-客户端

    android下stringgrid已知问题: 通过点击时获取对应行的值有问题,在win下调试正常,在android下出现定位不准 二.客户端开发 1,新建工程 2,添加相关客户端控件TRtcHttp ...

  5. openerp 经典收藏 workflow中的‘非典型’自动触发器trigger_model(转载)

    workflow中的‘非典型’自动触发器trigger_model 原文:http://cn.openerp.cn/workflow%E4%B8%AD%E7%9A%84%E9%9D%9E%E5%85% ...

  6. gcc链接程序时出现undefined reference to""错误

    如:: undefined reference to ‘mq_unlink',意思是指函数mq_unlink没有定义. 可以使用如下步骤找到该函数所在的库: 1).查找哪些库包含了或使用了该函数:gr ...

  7. JMS概述

    [1.面向消息的中间件]顾名思义,面向消息的中间件就是通过使用消息(而不是命令)将企业内的组件连接起来的系统.例如库存系统可能会与工资和会计系统进行通信,如果使用面向消息的中间件将他们连接在一起,就可 ...

  8. ESB概述

    ESB概念的提出: 企业有大量的异构的业务系统,这些系统之间需要通过web service来交互数据,这样的话可以想象系统直接的交互关系是蜘蛛网状的,是难以维护的.这时候提出了ESB,每个业务系统只需 ...

  9. HTTP 错误405.0 - Method Not Allowed

    在使用IIS发布网页的时候,出现下图这个问题 那么出现这个问题的原因可能有很多种,但是我目前是这么解决的,下面说一下我个人解决这个问题的方案,仅供参考. 首先,以管理员的身份启动cmd 如果电脑是64 ...

  10. ios技术面试题

    1.Difference between shallow copy and deep copy? 浅复制 只拷贝地址 不拷贝地址指向的对象 深复制 拷贝地址 并且指向拷贝的新对象 2.What is ...