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

第一步:下载,编译linux内核

mkdir LinuxKernel  
cd LinuxKernel
wget https://mirror.bjtu.edu.cn/kernel/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
cd linux-5.0.1
sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev 
make i386_defconfig 
make menuconfig #配置编译需要的debug信息,如下图所示
make -j4 多核make,提升速度
#升级内核重启一直报错,所以就跳过了这一步

第二步 构造MenuOS

cd ~/LinuxKernel/
sudo apt install qemu
git clone https://github.com/mengning/menu.git
mkdir rootfs
sudo apt-get install libc6-dev-i386
#修改Makefile,使用一个软连链接将qemu和emu-system-i386链接起来
cd menu

vim Makefile
qemu -kernel ../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img  #修改前
qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img #修改后
:wq

sudo ln -s /usr/bin/qemu-system-i386  /usr/bin/qemu

make rootfs#初始化根目录

第三步 gdb调试

qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img -append  nokaslr -s -S#打开QEMU
#打开另一个终端
gdb
file ~/LinuxKernel/linux-5.0.1/vmlinux
break start_kernel
target remote:1234
c
list

第四步:构建MenuOS的网络功能

#将 TCP 网络通信程序的服务端集成到 MenuOS 系统中
cd ~/LinuxKernel  
git clone https://github.com/mengning/linuxnet.git
cd linuxnet/lab2
make
cd ../../menu/
make rootfs 

#将 TCP 网络通信程序的客户端集成到 MenuOS 系统中
cd ~/LinuxKernel  
git clone https://github.com/mengning/linuxnet.git
cd linuxnet/lab3
make rootfs 
#记得在Makefile中更改一下linux内核的版本
#

猜你喜欢

转载自www.cnblogs.com/yxzh-ustc/p/12024309.html