1.使用器件:Vmware workstation(32位)、ubuntu 64位;
2. 实验步骤
(1) 创建ubuntu linux虚拟机
① 安装VMTools工具
使用tar 解压,记住一定要进入到能用ls列出VMTools的目录下面
(2)增加系统调用
① 下载内核版本为linux-4.16.10.tar.xz
② 打开终端通过apt-get install安装编译内核所需要的工具
Ⅰ.build-essential
Ⅱ.kernel-package
Ⅲ.libncurses5-dev
③ 将内核代码解压并移入/usr/src目录;
Ⅰ.tar -xvf linux-4.16.10.tar.xz
Ⅱ.cp(或者mv) linux-4.16.10.tar.xz /usr/src
④ 内核编译
Ⅰ.进入/usr/src/linux-4.16.10/kernel中,在终端输入vim sys.c添加heloworld函数
Ⅱ.添加声明;
进入/usr/src/linux-4.16.10/arch/x86/include/asm,然后vim sysalls.h进行编辑
III .添加系统调用id
进入/usr/src/linux-4.16.10/arch/x86/entry/syscalls
然后用vim syscall_64.tbl编辑文件
添加系统调用号(333 64 helloworld sys_helloworld)
编辑完成esc+:wq退出
IV .配置内核
使用make menuconfig指令
按照save、ok、exit步骤进行配置
]V .正式编译内核
执行make -j4(或者make modules)指令(需要等待2-3小时)
(3) 撰写应用程序调用系统调用
① 登陆虚拟机
② 调用函数
Ⅰ.打开终端
II .检查内核版本是否为linux-4.16.10
使用uname -r 指令
III .编辑调用系统调用的函数
vim test.c
gcc test.c
IV .查看调用结果
./a.out
(4) 使用strace的系统跟踪工具对测试程序进行跟踪调试
① 使用strace ./test追踪系统调用过程
② 使用strace -c./test统计系统调用
大功告成!!!