编译构建调试Linux内核网络代码环境MenuOS系统
编译构建调试Linux内核网络代码环境MenuOS系统
根据参考给出的操作命令,主要分为以下几个步骤:
-
安装编译内核的依赖
sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev
安装过程可能会遇到下载速度太慢而导致失败的情况,可以更换软件源或换个网。。。
-
下载内核并编译
- 下载内核
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz
xd -d linux-5.0.1.tar.xz
tar -xvf linux-5.0.1.tar # 将下载好的压缩文件解压
cd linux-5.0.1 #进入解压文件夹,准备编译内核在这里出了一点小问题,那就是官网下载速度实在是太慢了....建议直接到官网,右键复制链接地址,然后用迅雷下载,亲测下载速度可以达到6M/s
- 编译内核
make i386_defconfig #按照默认生成内核配置文件
make menuconfig
make 或者 make -j #j为CPU核心数
输入这两条命令之后会进入一个可视化的界面用于配置内核,具体操作如下:
(1)选择 Kernel hacking 回车
(2)选择 Compile-time checks and compiler options 回车
(3)选择 Compile the kernel with debug info 按空格键,然后左移光标save直接默认保存,最后exit
-
制作根文件虚拟机
- 安装qemu
sudo apt install qemu
qemu-system-i386 -kernel linux-5.0.1/arch/x86/boot/bzImage #qemu加载linux内核- 构建MenuOS
git clone https://github.com/mengning/menu.git
sudo apt-get install libc6-dev-i386 #安装libc6-dev-i386
qemu -kernel linux-5.0.1/arch/x86/boot/bzImage -initrd rootfs.img #创建系统镜像 (linux-5.0.1目录下)
make rootfs #初始化(menu目录下)
-
构建gdb调试环境
- 在qemu中启动gdb server
qemu -kernel linux-5.0.1/arch/x86/boot/bzImage -initrd rootfs.img -append nokaslr -s -S
- 建立gdb server和gdb之间的连接
不要关闭当前正处于黑屏状态的gdb server,打开一个新终端,输入gdb
cd linux-5.0.1
file vmlinux #加载符号表
break start_kernel #在内核函数处设置断点
target remote:1234 #建立gdb和gdb server之间的连接
c #回车让qemu上的Linux继续运行
list #查看之前设置的断点
-
将TCP网络程序集成到MenuOS中运行
- 集成服务端
git clone https://github.com/mengning/linuxnet.git
cd linuxnet/lab2
make
cd ..- 集成客户端
cd lab3
gedit Makefile #将Linux版本号修改为linux-5.0.1
make rootfs实验结果如下所示: