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

Posted 千株松

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建调试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 #下载安装包

下载结果如下:

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

解压结果如图

安装所需依赖:

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

 

然后直接编译:

make

编译结果如图:

 

 

二、制作根文件目录

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的内容为如图所示:

然后启动MenuOS系统

make rootfs

如图所示:

 

三、在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

结果如图:

 

 

 

四、证实通过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

结果如图所示:

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

以上是关于构建调试Linux内核网络代码的环境MenuOS系统的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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