构建调试Linux内核网络代码的环境MenuOS系统
Posted 引力束缚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建调试Linux内核网络代码的环境MenuOS系统相关的知识,希望对你有一定的参考价值。
实验目标
- 通过本地Linux系统完成构建调试Linux内核网络代码的环境MenuOS系统
- 截图证实已经在MenuOS上能够完成TCP客户端和服务器发送和接收hello/hi,也就是MenuOS的网络可以正常工作
- 截图证实通过gdb可以跟踪到内核代码,比如start_kernel、sys_socketcall等内核函数
实验环境
内核代码:Linux 5.0.1;
操作系统:Ubuntu19.04;
qemu:本次使用的模拟器,运行内核代码;
gdb:linux下的断点调试工具;
实验过程
一、构建MenuOS系统
创建一个目录kernel,下载linux-5.0.1内核,下载相关编译工具,编译。命令如下:
mkdir kernel #创建目录 cd kernel #进入此目录 wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar #下载内核 xz -d linux-5.0.1.tar.xz # 解压缩 tar -xvf linux-5.0.1.tar #解压缩 cd linux-5.0.1 #进入刚解压缩的内核文件夹 sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev #下载编译工具
接着开始配置
sudo make i386_defconfig #生成32位的配置文件
make menuconfig #开启文本菜单选项,对窗口有限制,尽量调大窗口
输入以上命令后出现如下界面:
找到最后一个选项Kernel hacking
按回车后,选则Compile-time checks and compiler options
按回车后选择Compile the kernel with debug info,按Y,前面的方括号中出现星号即为选中
选择下方Save
选择OK,然后一路EXIT退出。
接着漫长的编译过程。
make
编译完成后,安装模拟器qemu
sudo apt-get install qemu
构造MenuOS
cd /kernel #进入工作目录 mkdir rootfs #创建MenuOS根目录 sudo git clone https://github.com/mengning/menu.git #下载menu系统 cd menu sudo apt-get install libc6-dev-i386 #在64位环境编译32位需要安装 sudo chmod 777 Makefile #将Makefile从只读修改为可读写 vim Makefile #修改Makefile中的内核版本
sudo make rootfs #初始化根目录
测试MenuOS环境#
将TCP网络通信程序的服务器端集成到MenuOS系统
cd /kernel #进入工作目录 sudo git clone https://github.com/mengning/linuxnet.git #下载实验代码 cd linuxnet/lab2 #进入服务器目录 sudo make #编译前检查一下Makefile文件中的目录是否与自己的匹配 cd ../../menu/ sudo make rootfs #编译,将服务器端集成到系统中
将TCP网络通信程序的客户端集成到MenuOS系统
cd /kernel #进入工作目录 cd linuxnet/lab3 #进入客户端目录 sudo make #同样,在编译前检查一下Makefile,修改其内核版本 sudo make rootfs #编译,将客户端集成到系统中
在我们将客户端与服务器端都集成到系统之后,qemu
虚拟机所显示的结果与之前构建MenuOS
的相同。
但是输入命令help
后会看到其中已经添加了客户端
以及服务器端
所对应的replyhi
和hello
命令。
以上是关于构建调试Linux内核网络代码的环境MenuOS系统的主要内容,如果未能解决你的问题,请参考以下文章