一、构建调试Linux内核网络代码的环境MenuOS系统
1.编译Linux内核:
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 cd linux-5.0.1 sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev make defconfig make menuconfig # Kernel hacking—>Compile-time checks and compiler options ---> [*] Compile the kernel with debug info make # 或者使用make -j4,其中4为多核CPU核心数,可以加快编译过程 sudo apt install qemu qemu-system-x86_64 -kernel linux-5.0.1/arch/x86/boot/bzImage
2.构建根文件系统
dd if=/dev/zero of=rootfs.img bs=1M count=128 mkfs.ext4 rootfs.img mkdir rootfs cp init rootfs/#用户态至少要有一个init可执行程序,生成并放入rootfs中 qemu-system-x86_64 -kernel linux-5.0.1/arch/x86_64/boot/bzImage -hda rootfs.img -append "root=/dev/sda init=/init nokaslr" -s -S
3.运行调试内核
# 另一个shell窗口 gdb file linux-5.0.1/vmlinux target remote:1234 #则可以建立gdb和gdbserver之间的连接 break start_kernel 按c 让qemu上的Linux继续运行
二、运行结果