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

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

时间:2019-12-10 16:48:15      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:初始化   镜像   deb   install   linux内核   arch   wget   targe   断点   

1 下载Linux 5.0.1内核源代码

mkdir LinuxKernel               #在主文件夹下建立一个实验的工作区
cd LinuxKernel
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz    #利用linux内核镜像的镜像源,能够利用更快的下载
xz -d linux-5.0.1.tar.xz        #解压命令,得到一个tar的归档包
tar -xvf linux-5.0.1.tar    #解包命令,将归档包中的文件解放出来;-cvf是打包
cd linux-5.0.1

技术图片

技术图片

安装内核编译工具

在安装内核时需要相应的编译环境,所以我们需要安装内核编译工具。

sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev

技术图片

配置编译内核

make defconfig      #按照默认值生成.config,我生成是是x86_64_defconfig
make allyesconfig   #启用内核全部功能
make?menuconfig      #开启文本菜单选项,对窗口有限制,尽量调大窗口
make?-j4            #其中的4是我分配虚拟机的CPU核心数,可以加快编译速度

对于make menuconfig有补充说明的内容:

    执行该命令后,会弹出图形界面,进入“Kernel hacking ”>“Compile-time checks and compiler options”>“Compile the kernel with debug info”勾上y。 然后点击save按钮 ,配置好编译选项之后,就可以开始正式编译内核了。

<center>下面是运行命令的运行截图</center>

技术图片

技术图片

技术图片

2 QEMU加载内核

下载QEMU和MenuOS

cd ..                                              #回到~/LinuxKernel/
sudo apt install qemu                               #安装qemu     
sudo ln -s /usr/bin/qemu-system-i386  /usr/bin/qemu    #建立一个软链接 之后才可以使用qem
git clone https://github.com/mengning/menu.git         #下载MenuOS
mkdir rootfs                                        #为MenuOS创建根目录
sudo apt-get install libc6-dev-i386
vim Makefile

技术图片

技术图片

初始化根目录

#在menu目录下执行一下命令
make rootfs

技术图片

技术图片

3 gdb调试

在执行gdb 调试之前,保证make menuconfig那个步骤已经执行,不然编译的内核系统不含调试信息。

1 启动gdb server

qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img -append  nokaslr -s -S

技术图片

2 gdb客户端连接gdb server

#打开另一个终端

gdb
file ~/LinuxKernel/linux-5.0.1/vmlinux
break start_kernel   
target remote:1234   #设置断点对start_kernel进行跟踪
c                   #继续运行
list                  #查看上下文

技术图片

4 构建MenuOS的网络功能

1将TCP网络通信程序的server集成到menuOS中

cd ~/LinuxKernel  
git clone https://github.com/mengning/linuxnet.git
cd linuxnet/lab2
make
cd ../../menu/
make rootfs #改一下Makefile

技术图片

2 将TCP网络通信程序的client集成到menuOS

先将linuxnet/lab3下的Makefile文件中的内核版本从3改到5.0.1

技术图片

cd linuxnet/lab3
make rootfs

此时menuOS下多了replyhi和hello命令了

技术图片

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

标签:初始化   镜像   deb   install   linux内核   arch   wget   targe   断点   

原文地址:https://www.cnblogs.com/kttme/p/12017352.html

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