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

一 搭建环境

本文环境基于unbuntu16.04、Linux-5.0.1和QEMU2.5.0

1.1 编译内核

 1 mkdir ~/linuxlab
 2 cd ~/linuxlab 
 3 cp  /mnt/hgfs/networking/linux-5.0.1.tar.xz ./ #因为wget下载的速度太慢,直接从本机拷贝了一份
 4 tar -xvf linux-5.0.1.tar.xz
 5 cd linux-5.0.1
 6 
 7  
 8 ## 安装编译内核相关的库
 9 sudo apt-get install build-essential  flex libncurses-dev libelf-dev bison  libssl-dev
10 
11 make i386_defconfig  
12 make menuconfig
13     --- 先进入Kernel hacking
14     --- 再进入Compile-time checks and compiler options
15     --- 选择Compile the kernel with debug info,这样会使编译好的内核有调试信息
16   
17 make  #编译内核

1.2 QEMU启动内核

 1 cd ~/linuxlab
 2 sudo apt-get install qemu 
 3  #先安装git
 4 sudo apt-get install git
 5 git clone https://github.com/mengning/menu.git
 6 make rootfs
 7 
 8 cd menu
 9 #修改Makefile文件
10 qemu-system-x86_64 -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img
11 #启动
12 make rootfs 

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

 

二 测试网络程序

cd ~/linuxlab
#下载程序
git clone https://github.com/mengning/linuxnet.git 

cd linuxnet/lab2
#将lab2中的测试文件拷贝
make
cd ../../menu/ 
make rootfs 


cd ~/linuxlab
cd linuxnet/lab3 
---此处记得修改Makefile文件,参照上面
make rootfs

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

输入repkyhi 再输入hello即可看到结果

三、gdb调试

cd ~/linuxlab/menu
vim Makefile
 #修改其中的参数,在qemu后面加上-append nokaslr -s -S参数
make rootfs
#此时出现的是一个stop的qemu,等待连接

##另外一个终端
gdb
file ~/linuxlab/linux-5.0.1/vmlinux
#连接刚刚停止的qemu
target remote:1234 
#在start_kernel处打上断点
b start_kernel
#运行
run 
#可以看到已经在start_kernel函数处停止运行了

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

 

 

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