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

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

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

 

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

1. 下载linux内核:

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

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

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

 

解压后进入linux-5.0.1目录

 

 

 

 

2.  安装内核编译工具

 

 

 

3.  配置编译内核

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

 

 

 

 

 

之后会出现一个界面

 

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

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

 

 

 

 

 

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

 

 

 

 

4.  升级当前系统内核

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

 

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

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

 

重命名一下

 

 

 

 

 

6.  构造MenuOs

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

 

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

sudo apt-get install git

 

 

 

make rootfs

cd menu

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

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

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

 

 

 

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

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

 

 

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

 

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

2.  在qemu中启动gdb server

 

 

3. 建立gdb与gdb server之间的连接

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

 

4. 加载vnlinux中的符号表设置断点

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

第二阶段的过程如上所示,实验过程截图

先启动gdb serve

 

 

打开另一终端输入gbd相关命令

 

 

 

结果如下:

 

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

 

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

 

测试一下网络是否能正常执行

在netlab目录执行以下命令

 

 

 

 

在qemu窗口测试结果hi/hello

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

 

 

 可以正常运行

 

本博客内容参考自:

https://github.com/mengning/

 

 

 

 

 

 

 

 

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