*/

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

.Linux内核源码下载

下载网址为:https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz

下载完成后放入home/MenuOS

 

然后解压缩 得到一个tar的归档包

#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 x86_64_defconfig  #生成64位x86的配置文件

配置编译内核:

make menuconfig

紧接着就会出现图形界面

用键盘↑↓键依次选择Kernel hackingCompile-time checks and compiler options[*]Compile the kernel with debug info再选定Save然后逐步选定Exit,直到退出该界面。

 

 

 

 

完成之后在linux内核目录下执行make命令,等待完成。可能需要几十分钟

 

.准备qemu模拟器加载内核

1.下载安装QEMU

cd ..
sudo apt install qemu
qemu-system-x86_64 -kernel linux-5.0.1/arch/x86_64/boot/bzImage
#构建MenuOS的根文件目录rootfs 
mkdir rootfs
#git clone所给的munuOS文件
git clone https://github.com/mengning/menu.git
cd menu
sudo apt-get install libc6-dev-i386

2.构造MenuOS

需要编辑一下menu目录下Makefile文件的如下内容

 

然后在~/MenuOS/menu路径下执行

make rootfs命令,成功在能看到如下界面

 

.MenuOS上能够完成TCP客户端和服务器发送和接收hello/hi

1.把程序集成至MenuOS中测试

集成服务器端:

cd ..

git clone https://github.com/mengning/linuxnet.git

cd ./linuxnet/lab2

make

 

cd ../../menu/
make rootfs

集成客户端:

需要修改一下lab3Makefile的内容:

 

然后同理执行make rootfs把它集成到MenuOS中。

完成之后我们就可以在MenuOS中进行测试

2.MenuOS测试:

QEMU下输入如下命令:

Replyhi

Hello

出现下图所示则代表网络正常

 

.GDB进行内核代码跟踪

首先,修改menu目录下的Makefie文件

 

此时在~/MenuOS/menu路径下输入 make rootfs

出现下图所示情况。此时不需要关闭终端以及QEMU界面

 

重新开一终端

例如本例是在MenuOS目录下重新开的终端。然后依次输入下图所示红色箭头的命令

gdb

file ./linux-5.0.1/vmlinux

 

target remote:1234

break start_kernel

 

可以发现在main.cline 538处中断

c

list

 

至此gdb跟踪到内核代码start_kernel

参考资料:

https://github.com/mengning/net

posted @ 2019-12-09 19:52  maizeDu  阅读(267)  评论(0编辑  收藏  举报