Ubuntu 14.04 + Linux 3.14.34 系统调用实现文件拷贝

采用 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 后可能无法进入新的内核,暂时未找到解决办法。

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

时间: 2024-11-03 20:45:49

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

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

参考 How To Install and Use Docker: Getting Started 这篇最靠谱的文档在阿里云 Ubuntu  14.04 服务器上成功安装 docker . 1)更新 apt 的安装包列表 sudo apt-get update 2)升级所有已安装的包 sudo apt-get -y upgrade 3)添加 apt 验证密钥 sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E8

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

1 介绍 在周六的下午,我决定想快速浏览一下书籍[1],看看这个关于Ubuntu的圣经究竟在讲什么东东.感觉讲的不错,当我看到介绍文件标记语言-TeX和LaTeX的时候,该书作者推荐在Ubuntu上常用的teTeX软件包,可是我在软件中心(Software Center)通过查询(Searcch)对话框并没有找到该软件,于是进入作者推荐的关于teTeX的主页(www.tug.org/tetex)去了解.发现teTex自2006那年就停止维护,建议对TEX感兴趣的安装和关注TexLive.我当时就

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 me that lots of packages need to be upgraded. As I'm using an LTS version, I agreed to download and upgrade all packages, which includes pidgin. Pidg

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

参考的资料: hello world   https://www.cnblogs.com/bitor/p/9608725.html linux内核监控模块——系统调用的截获  https://www.cnblogs.com/lxw315/p/4773566.html 实现: 实验目的: 内核模块的编写:完成一个Linux/Windows内核/驱动模块的编写, 能够实现对文件访问的监控.或者对键盘设备.USB设备.网络设备. 蓝牙设备等的监控. 实验内容: 通过linux内核模块编程,写一个模块使

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

通过 scp 命令实现不同机器之间的文件拷贝. (1)本机考到目标机器:scp 本机文件 目的地: 如:scp /home/odp-web.war   [email protected]:/usr/local/Tomcat/wepapps/ (2)其他机器考到本机:scp 其他机器上的文件 本机路径 如:scp [email protected]:/usr/local/Tomcat/wepapps/   /home/odp-web.war

Ubuntu 14.04 安装配置备忘录

完全在 Linux 下工作,大概有3年时间了. 之前都是用 Windows, 而把 Linux 装在虚拟机里,现在反过来,把 Windows 装在了虚拟机里,只是因为偶尔还要用网银的缘故. 以我这几年的使用经验, 一句话: Linux 用过之后就回不去了. 以下记录我的 Ubuntu 14.04 Linux 安装配置, 算是备忘录. 需要说明的一点是: 我从来不觉得使用 Debian, CentOS, 或者 Arch, Gentoo 的人很牛, 只能说明你们不珍惜时间,就爱瞎折腾, 当然如果你是

在真机里安装 ubuntu 14.04和一些常用的软件(三)

在前面的基础上,最近使用ubuntu上网 看视频和用brackets 缩写PHP代码都可以了,不过我喜欢测试一些新的软件,最近安装了几个软件,在这儿记录一下. 第一.桌面美化软件--docky 和 Cairo-dock 安装都很方便,docky 直接在软件中心里安装就可以 安装完成,添加软件时的操作如下: 1.打开要添加的软件 2.在docky面板上看到图标,右键点击图标,有一个命令锁定在docky上,就可以了 cairo-dock:安装都先找到ppa 源再安装,命令如下: Add the PP

Ubuntu 14.04 安装VMware 12

/*********************************************************************** * Ubuntu 14.04 安装VMware 12 * 说明: * 由于Android的源代码在VMware虚拟中,现在装了一台实体Ubuntu电脑,于是 * 需要子在Ubuntu上安装VMware,然后将代码转移出来. * * 2017-1-7 深圳 南山平山村 曾剑锋 ***************************************

.NET Core Install for Ubuntu 14.04

Add the dotnet apt-get feed In order to install .NET Core on Ubuntu or Linux Mint, you need to first set up the apt-get feed that hosts the package you need. Ubuntu 14.04 / Linux Mint 17 sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanage