构建调试Linux内核网络代码的环境MenuOS系统
Posted 千株松
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建调试Linux内核网络代码的环境MenuOS系统相关的知识,希望对你有一定的参考价值。
本实验是在虚拟机中的Ubuntu 18.04系统下进行的。
一、安装编译Linux内核
mkdir LinuxKernel cd ~/LinuxKernel/ 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
然后直接编译:
make
编译结果如图:
二、制作根文件目录
sudo apt install qemu #安装qemu命令
mkdir rootfs
git clone https://github.com/mengning/menu.git
cd menu
sudo apt-get install libc6-dev-i386
vim Makefile
修改Makefile的内容为如图所示:
然后启动MenuOS系统
make rootfs
如图所示:
三、在MenuOS上完成TCP客户端和服务器发送和接收hello/hi
下载测试通信代码:
cd ~/LinuxKernel/ git clone https://github.com/mengning/linuxnet.git cd linuxnet/lab2 make cd ../../menu/ make rootfs
修改lab3下的Makefile的qemu为自己电脑的绝对路径:
cd ~/LinuxKernel/ cd linuxnet/lab3 vim Makefile
然后运行
make rootfs
最后在qemu中输入:
replyhi
hello
结果如图:
四、证实通过gdb可以跟踪到内核代码
在qemu中启动gdb server:
qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img -append nokaslr -s -S
重新打开一个终端:
gdb file ~/LinuxKernel/linux-5.0.1/vmlinux target remote:1234 break start_kernel c list
结果如图所示:
结果显示gdb可以追踪到内核代码
以上是关于构建调试Linux内核网络代码的环境MenuOS系统的主要内容,如果未能解决你的问题,请参考以下文章