构建调试Linux内核网络代码的环境MenuOS系统
编译linux 5.0.1内核
本机下载好内核后,scp传到虚拟机上,解压
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz
scp ./linux-5.0.1.tar.xz mn:~
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,然后创建软连接
sudo apt install qemu -y
sudo ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu
下载MenuOS,并安装依赖
cd ~
git clone https://github.com/mengning/menu.git
sudo apt install libc6-dev-i386 -y
修改menu目录下的Makefile文件,搜索找到qemu所在行,将该行的内核路径修改为自己编译好的内核路径,示例如下,menu目录与linux-5.0.1同级
qemu -kernel ../linux-5.0.1/arch/x86_64/boot/bzImage -initrd ../rootfs.img
初始化根目录
make rootfs

将程序集成进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
此时可以执行hello和replyhi命令

gdb跟踪
执行命令
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

浙公网安备 33010602011771号