跟踪分析Linux 5.0内核系统调用的处理过程

原创作品转载请注明出处
学号后三位467
实验内容来源:https://github.com/mengning/linuxkernel/

实验环境

VirtualBox虚拟机
Ubuntu 18.04

内核编译

首先下载Linux 5.0内核代码:https://github.com/mengning/linux/tree/v5.0

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz

对下载的内核代码进行解压

xz -d linux-5.0.1.tar.xz
tar -xvf linux-5.0.1.tar

编译内核

cd linux-5.0.1
make menuconfig

执行make menuconfig时遇到问题,安装编译内核需要的依赖后得以后解决

sudo apt-get install bison
sudo apt-get install flex

继续进行编译,弹出如下页面
在这里插入图片描述
找到kernel hacking并进入,静如Compile-time checks and compiler options,选择 compile the kernel with debug info之后exit,继续进行编译

make i386_defconfig
make -j8

遇到问题
在这里插入图片描述
安装依赖后得以解决

sudo apt-get install libssl-dev

在这里插入图片描述
等待编译完成
在这里插入图片描述
接下来制作img文件,执行如下命令

mkdir rootfs
git clone https://github.com/mengning/menu.git
cd menu
gcc -pthread -o init linktable.c menu.c test.c -m32 -static

遇到如下问题
在这里插入图片描述
尝试输入如下指令即可,其实主要是gcc安装环境没有安装完善。我在网上找了很多方式,没想到是这个,记录下。

sudo apt-get install gcc-multilib

继续制作img文件

cd ../rootfs
cp ../menu/init ./
find . | cpio -o -Hnewc |gzip -9 > ../rootfs.img

在这里插入图片描述
接下来输入命令启动MenuOS

qemu-system-i386 -kernel arch/x86/boot/bzImage -initrd rootfs.img

在这里插入图片描述
跟踪调试内核启动

qemu-system-i386 -kernel linux-5.0.1/arch/x86/boot/bzImage -initrd rootfs.img -S -s -append nokaslr

打开另一终端进行跟踪调试

cd linux-5.0.1
gdb vmlinux
(gdb) target remote:1234
(gdb) b start_kernel
(gdb) c
(gdb) l
(gdb) s

在这里插入图片描述

跟踪系统调用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值