1.用记事本打开/usr/src/linux-2.4.22/kernel/sys.c,查看并进行修改如图4-1至图4-3.
2.记事本打开/usr/src/linux-2.4.22/arch/i386/kernel/entry.S并将254行ni改成sym20202624如图4-4至4-7.
3.重新编译内核。
依次输入以下命令如图4-8至图4-10:
cd /usr/src/linux-2.4.22
make clean
make dep
make bzImage
make install
4.输入reboot,重新启动计算机。使用新内核引导如图4-11.
5.编译并运行test11.c如图4-12至图4-15.
6.编译这个程序:gcc –otest test11.c
7.运行这个程序:./test
1.4 实验过程
图4-1
图4-2
图4-3
图4-4
图4-5
图4-6
254行ni改成xxx学号
图4-7
编译内核
图4-8
图4-9
图4-10
重启
图4-11
图4-12
图4-13
图4-14
图4-15
通过本次实验,我成功在sys.c文件下添加了系统调用,由于是在核心态下运行因此这里的输出函数使用printk()函数,并且在entry.S文件添加系统调用,将其第254行进行修改,最后使用make dep重新编译并reboot重启,在添加系统调用内核下编写文件后运行我发现会报错,找不到源文件,故将#include<unistd>改成#include<Linux/unistd.h>后得以成功运行。
读书不觉已春深,一寸光阴一寸金