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

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

posted @ 2019-12-10 19:43  Dlemon  阅读(242)  评论(0编辑  收藏  举报