构建调试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/

浙公网安备 33010602011771号