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

一、实验环境

uname -a

本实验所用Linux系统为虚拟机,实验前已备份快照,为方便输入命令,采用SSH远程连接,最后启动QMENU在虚拟机终端运行。

 二、编译Linux内核

1. 下载并解压linux_5.0.1内核

mkdir LinuxKernel #在root目录建立实验文件夹
cd LinuxKernel
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz
xz -d linux-5.0.1.tar.xz
tar -xvf linux-5.0.1.tar
ll

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

2.安装相关编译工具

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

3.编译内核

make i386_defconfig  
make menuconfig
make  #编译内核

其中在make menuconfig 命令执行后会出现一个图像界面, 我们需要依次选择 Kernel hacking,Compile-time checks and compiler options,Compile the kernel with debug info 最后Save保存,退出界面。

!!!注意,最后是按Y确认,不是直接回车就可以确认选择,我就是由于这步错误,导致后面无法看到debug信息。

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

三、QMENU启动内核

cd LinuxKernal
sudo apt-get install qemu 
git clone https://github.com/mengning/menu.git
cd menu
vi Makefile 
#修改Makefile文件qemu-system-i386 -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img
make rootfs

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

四、测试网络程序

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

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

#另开一终端 cd
~/LinuxKernel cd linuxnet/lab3#修改Makefile文件make rootfs

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

五、GDB调试

vi Makefile
#修改其中的参数,在qemu后面加上-append nokaslr -s -S参数
make rootfs
##另开一个终端
gdb
file ~/linuxlab/linux-5.0.1/vmlinux
#连接刚刚停止的qemu
target remote:1234 
#在start_kernel处打上断点
b start_kernel
#运行
c
#可以看到已经在start_kernel函数处停止运行了

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

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