构建调试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

此时可以执行helloreplyhi命令

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

posted @ 2019-12-09 19:33  zavierxing  阅读(184)  评论(0)    收藏  举报