一、给MenOS增加命令
1.进入内核
2.
rm -rf menu //强制删除当前的menu目录
git clone https://github.com/mengning/menu.git //重新克隆一个新版本的menu
make rootfs //可以自动编译并自动生成根文件系统
在menu下的test.c中添加time和time-asm
3.使用make roof打开menu镜像,操作完成后可以看到MenuOS菜单中新增了两条命令:
二、使用gdb跟踪系统调用内核函数sys_time
调试内核
cd..
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
gdb
接下来就可以设置断点了,比如之前练习过的start kemel。如在gdb中按c会在设置断点的start_kernel处停下来,停下来后可以用list查看这段代码。time系统调用是13号系统调用对应的内核处理函数,即sys_time。接下来就可以在这里用b sys_time设置一个断点。启动MenuOS后执行 time命令,程序会停到sys_time这个函数的位置,time命令执行到一半将卡在那里。gdb调试也可以看到Breakpoint在linux-3.18.6/kermel/time/time.c中的这个文件。因为是用宏来实现的,所以无法直接看到sys_time
三、system_call流程图