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

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

根据参考给出的操作命令,主要分为以下几个步骤:

  1. 安装编译内核的依赖

    sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev

    安装过程可能会遇到下载速度太慢而导致失败的情况,可以更换软件源或换个网。。。
  2. 下载内核并编译

    在这里出了一点小问题,那就是官网下载速度实在是太慢了....建议直接到官网,右键复制链接地址,然后用迅雷下载,亲测下载速度可以达到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

  1. 制作根文件虚拟机
    • 安装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目录下)
      启动MenuOS

  2. 构建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 #查看之前设置的断点
      启动gdb server
      gdb 和 gdb server连接

  3. 将TCP网络程序集成到MenuOS中运行 实验结果如下所示:
    实验结果

猜你喜欢

转载自www.cnblogs.com/sa19225475/p/12018741.html