构建调试Linux内核网络代码的环境MenuOS系统

本实验是在虚拟机中的Ubuntu 18.04系统下进行的。

一、安装编译Linux内核

mkdir LinuxKernel  
cd ~/LinuxKernel/
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz #下载安装包

下载结果如下:

构建调试Linux内核网络代码的环境MenuOS系统_第1张图片

xz -d linux-5.0.1.tar.xz #解压 
tar -xvf linux-5.0.1.tar 

构建调试Linux内核网络代码的环境MenuOS系统_第2张图片

解压结果如图

安装所需依赖:

sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev

 

然后直接编译:

make

编译结果如图:

构建调试Linux内核网络代码的环境MenuOS系统_第3张图片

 

 

二、制作根文件目录

sudo apt install qemu #安装qemu命令
mkdir rootfs
git clone https://github.com/mengning/menu.git
cd menu
sudo apt-get install libc6-dev-i386
vim Makefile

修改Makefile的内容为如图所示:

构建调试Linux内核网络代码的环境MenuOS系统_第4张图片

然后启动MenuOS系统

make rootfs

如图所示:

构建调试Linux内核网络代码的环境MenuOS系统_第5张图片

 

三、在MenuOS上完成TCP客户端和服务器发送和接收hello/hi

下载测试通信代码:

cd ~/LinuxKernel/ 
git clone https://github.com/mengning/linuxnet.git
cd linuxnet/lab2
make
cd ../../menu/
make rootfs

修改lab3下的Makefile的qemu为自己电脑的绝对路径:

cd ~/LinuxKernel/
cd linuxnet/lab3
vim Makefile

然后运行

make rootfs

最后在qemu中输入:

replyhi

hello

结果如图:

构建调试Linux内核网络代码的环境MenuOS系统_第6张图片

 

 

 

四、证实通过gdb可以跟踪到内核代码

在qemu中启动gdb server:

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

重新打开一个终端:

gdb
file ~/LinuxKernel/linux-5.0.1/vmlinux
target remote:1234
break start_kernel
c   
list

结果如图所示:

构建调试Linux内核网络代码的环境MenuOS系统_第7张图片

结果显示gdb可以追踪到内核代码

你可能感兴趣的:(构建调试Linux内核网络代码的环境MenuOS系统)