码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2019-12-12 21:14:08      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:编译过程   括号   start   16px   服务器   elf   目录   libssl   网络   

实验目标

  • 通过本地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后会看到其中已经添加了客户端以及服务器端所对应的replyhihello命令。

 

技术图片

 

 技术图片

 

 

 

 

 

 

 

 

 

 

 

 

 

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

标签:编译过程   括号   start   16px   服务器   elf   目录   libssl   网络   

原文地址:https://www.cnblogs.com/gfsh/p/12031610.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!