0. 环境准备
Ubuntu16.04 Desktop x86_64
Linux Kernel 4.4.0(tar.xz)
1. 解压缩内核包
xz -d linux-4.4.0.tar.xz
tar -xvf linux-4.4.0.tar
2. 添加系统调用
- 添加系统调用号
编辑 linux-4.4.0/arch/x86/entry/syscalls/syscall_64.tbl
在编号332添加新的系统调用号,格式如同332
例如
333 common victim sys_victim
add syscall number.png
- 添加系统调用函数声明
编辑linux-4.4.0/include/linux/syscalls.h
在syscalls.h文件最后添加新的函数声明,函数名同上一步添加的函数名,声明格式如同syscalls.h文件中的前几行
例如
asmlinkage long sys_victim(void);
- 添加系统调用函数定义
编辑linux-4.4.0/kernel/sys.c
文件最后添加函数定义
例如
SYSCALL_DEFINE0(victim)
{
......
}
3. 编译安装内核
- 配置内核参数
使用make menuconfig命令图形化配置内核参数,配置完成后选择Save,然后选择Exit
PS.过程中可能报错缺失ncurses相关组件,可用如下命令安装
sudo apt install libncurses5-dev
- 编译内核
使用make命令编译内核,可以声明 -jn(n为数字)选项,多线程编译
例如
make -j8
PS.过程中可能报错确实libelf,可用如下命令安装
sudo apt install libelf-dev
-
安装内核模块
使用命令make modules_install安装内核模块 -
安装内核
使用命令make install安装内核 -
重启并选择新内核
PS.重启前需要修改默认内核,见linux修改默认内核
网友评论