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

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

下载linux内核并编译

1. 下载linux源码

下载地址,下载之后解压即可。【本次使用的linux-5.0.1版本】

安装编译所需的工具
 1 sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev 

生成X86配置文件

1 make i386_defconfig#生成x86的配置文件
2 make menuconfig

进入GUI编辑配置文件的生成

依次选择:Kernel hacking  =====》 Compile-time checks and compiler options ====》Compile the kernel with debug info 然后保存配置文件并退出。

之后make开始编译:

1 make

通过qemu来加载menuOS

首先安装qemu工具

1 sudo apt-get install qemu

建立软连接,使得之后可以直接执行qemu

1 sudo ln -s /usr/bin/qemu-system-i386  /usr/bin/qemu

制作根文件系统:

1 git clone https://github.com/mengning/menu.git
2 mkdir rootfs  #创建根文件系统
3 cd menu
4 sudo apt-get install libc6-dev-i386 #在64位环境下编译32位安装
5 vim Makefile  #修改git来的menu下的Makefile文件
6 qemu -kernel /home/lmm/linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img
7  make rootfs  #初始化根目录

得到:

成功!

通过gdb可以跟踪内核代码

另外打开一个终端,输入

gdb
flie /home/lmm/linux-5.0.1/vmlinux
break start_kernel #打断点,跟踪内核代码执行
c #执行

查看跟踪结果:

可以看到成功跟踪到start_kernel内核函数。

验证MenuOS的网络可以正常工作【TCP通信】

下载老师的通信代码:

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

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

1 qemu -kernel /home/lmm/linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img

然后分别在lab2和lab3执行如下代码:

1.make rootfs

然后使用help查看可食用命令并键入一下代码验证可使用TCP通讯:【如下】

原文地址:https://www.cnblogs.com/tlxclmm/p/12029766.html