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

Posted LittleTurtle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建调试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内核的版本
#

以上是关于构建调试Linux内核(32位)网络代码的环境MenuOS系统的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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