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


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

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

    1. 安装编译内核的依赖

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

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

    2. 下载内核并编译

      • 下载内核

      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

    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中运行

      • 集成服务端

      git clone https://github.com/mengning/linuxnet.git
      cd linuxnet/lab2
      make
      cd ..

      • 集成客户端

      cd lab3
      gedit Makefile #将Linux版本号修改为linux-5.0.1
      make rootfs

      实验结果如下所示:
      实验结果

  • 相关阅读:
    jQuery
    BOM与DOM操作
    剑指offer 面试题10.1:青蛙跳台阶
    剑指offer 面试题10:斐波那契数列
    剑指offer 面试题9.1:用两个队列实现栈
    剑指offer 面试题9.1:用两个队列实现栈
    剑指offer 面试题9:用两个栈实现队列
    剑指offer 面试题8:二叉树的下一个节点
    剑指offer 面试题7:重建二叉树
    剑指offer 树的基本操作:四种遍历方式
  • 原文地址:https://www.cnblogs.com/sa19225475/p/12018741.html
Copyright © 2020-2023  润新知