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

编译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

构建调试Linux内核网络代码的环境MenuOS系统_第1张图片

将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
构建调试Linux内核网络代码的环境MenuOS系统_第2张图片

用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

构建调试Linux内核网络代码的环境MenuOS系统_第3张图片
图中538行处为start_kernel(),说明成功设置了断点。

你可能感兴趣的:(构建调试Linux内核网络代码的环境MenuOS系统)