首页 > 系统服务 > 详细

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

时间:2019-12-10 20:56:31      阅读:90      评论:0      收藏:0      [点我收藏+]

编译Linux内核

下载内核到home目录下,并且将其解压

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

安装内核编译工具,也就是整个实验所需要的依赖包,命令如下:

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

配置并编译内核

cd ~/linux-5.0.1
#使用现存内核的配置文件:xxx指命令输入此处可以按Tab键补全
cp /boot/config-xxx -r .config
 #应用现存配置文件
make oldconfig
#仅安装已有module
make localmodconfig
#开始编译
make -j 4

安装qemu,构造MenuOS

安装qemu,然后创建软连接,然后下载MenuOS,并安装依赖

sudo apt install qemu  -y
sudo ln -s /usr/bin/qemu-system-x86_64  /usr/bin/qemu
cd ~
git clone https://github.com/mengning/menu.git
sudo apt install libc6-dev-i386 -y

此时需要修改menu目录下的Makefile文件,将qemu所在行修改成刚才编译好的内核路径,修改后内容如下:

qemu -kernel ../linux-5.0.1/arch/x86_64/boot/bzImage ../rootfs.img

完成后编译,初始化根目录:

make rootfs

技术分享图片

将TCP集成进MenuOS

TCP的服务端

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

再集成TCP客户端,集成客户端要修改MakeFile中qemu处,方法如上,之后执行:

cd ~/linuxnet/lab3
make rootfs

此时可以在qemu中执行helloreplyhi
技术分享图片

用gdb跟踪start_kernel代码

执行命令

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

此时另外新建一个新终端,输入gdb,会打开一个GDB调试器,调试器内输入:

file ~/linux-5.0.1/vmlinux
target remote:1234
break start_kernel
c
list

技术分享图片
图中538行处为start_kernel(),说明成功设置了断点。

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

原文:https://www.cnblogs.com/guoyuhuan/p/12018736.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!