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

在这个博客中我们将要完成以下任务:

  • 通过本地Linux系统或实验楼在线环境完成构建调试Linux内核网络代码的环境MenuOS系统
  • 截图证实已经在MenuOS上能够完成TCP客户端和服务器发送和接收hello/hi,也就是MenuOS的网络可以正常工作
  • 截图证实通过gdb可以跟踪到内核代码,比如start_kernel、sys_socketcall等内核函数

 

根据孟老师上课给出的步骤:

1. 下载linux内核:

因为直接下载比较慢,因此使用镜像 http://mirror.bjtu.edu.cn/kernel/linux/kernel/

 

解压后进入linux-5.0.1目录

 

 

 

 

2.  安装内核编译工具

 

 

 

3.  配置编译内核

 

 

 

 

 

之后会出现一个界面

 

 Kernel hacking  -> Compile-time checks and compiler options -> Compile the kernel with debug info (此处用y勾选,之后保存退出)

 

 

 

 

 

 需要几分钟时间,得到结果;

 

 

 

 

4.  升级当前系统内核

 

5.  通过QEMU虚拟机加载内核

 

重命名一下

 

 

 

 

 

6.  构造MenuOs

 

 首先确认自己的系统安装了git,没有的话用下面的命令

sudo apt-get install git

 

 

 

make rootfs

cd menu

修改Makefile文件,将3.18.6修改为5.0.1:

执行执行 make rootfs
出现如下界面,完成第一阶段任务

 

 


 

 

下面的步骤是构建Linux内核的gdb调试环境

 

 

1.  重新配置编译内核使之携带调试信息

 

2.  在qemu中启动gdb server

保持当前终端不变,打开另一个终端进入工作目录menuLab并执行下面的命令:

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

 

 

 

 

 

 

 

 

 

 

 继续验证meos网络:

在netlab目录下执行一下命令:

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

再次切换到menuLab目录,执行下面命令,将Makefile文件中的3.18.6改为5.0.1:

cd linuxnet/lab3
vi Makefile #3.18.6改为5.0.1 make rootfs

在QEMU窗口中输入以下命令

replyhi和hello

 

 

在qemu窗口测试结果hi/hello

 

 

 可以正常运行

 

本博客内容参考及部分实验资源来自:

https://github.com/mengning/
posted @ 2019-12-12 21:23  zjce  阅读(212)  评论(0)    收藏  举报