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

hickwu 2019-12-11

一、Linux内核

1、下载解压内核源码

mkdir LinuxKernel  #创建LinuxKernel根目录
cd ~/LinuxKernel/
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz #下载Linux内核,这里用的是5.0.1版本
xz -d linux-5.0.1.tar.xz #解压 
tar -xvf linux-5.0.1.tar 
cd linux-5.0.1

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

2、 配置编译信息

#进入解压出来的目录
cd /linux-5.0.1/
#使用现存内核的配置文件:(xxx处使用TAB补全)
sudo cp /boot/config-xxx -r .config
#应用现存配置文件
sudo make oldconfig
#仅安装已有module
sudo make localmodconfig
#配置其他编译选项
sudo make menuconfig

3、下载依赖包

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

4、编译

sudo make

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

5、升级内核

#安装modules
sudo make modules_install
#安装
sudo make install
#重启虚拟机
sudo shutdown -r now
#查看内核版本
uname -a

二、qemu虚拟机

1、下载安装qemu

cd ~/LinuxKernel/
sudo apt install qemu  # 安装qemu命令

2、构造menuOs

#下载menu系统,并在LinuxKernel目录下建一个子目录rootfs,当作menuOS的根目录
git clone https://github.com/mengning/menu.git
mkdir rootfs
cd menu
sudo apt-get install libc6-dev-i386 #安装libc6-dev-i386
sudo ln -s /usr/bin/qemu-system-i386  /usr/bin/qemu #建立一个软链接 之后可以直接执行qemo

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

三、集成tcp服务端测试网络功能

在MenuOS中集成我们的TCP服务端程序:

git clone https://github.com/mengning/linuxnet.git
cd linuxnet/lab2
make
cd ~/LinuxKernel/menu/

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

四、gdb调试

1、启动gdb server

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

2、建立gdb与gdb server连接

file ~/LinuxKernel/linux-5.0.1/vmlinux # # 在gdb界面中targe remote之前加载符号表
break start_kernel # 断点设置
target remote:1234 # 建立gdb和gdbserver之间的连接
c #按c
list

相关推荐