构建调试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系统的主要内容,如果未能解决你的问题,请参考以下文章