zoukankan      html  css  js  c++  java
  • 构建调试Linux内核网络代码的环境MenuOS系统

    以下是构建调试Linux内核网络代码的环境MenuOS系统的完整步骤:

    步骤1:在虚拟机中安装Linux系统 (推荐Ubuntu 18.04)

     1.1点击右上角的新建虚拟机

     

    1.2 选择虚拟机镜像,然后点击下一步

     

    1.3 输入Ubuntu 所需要的一切信息,然后一直点下一步!

     

    Ubuntu就此安装完成

     

    步骤二:下载Linux内核(Linux-5.0.1)

    get https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz #下载linux-5.0.1的内核,当然也可以下载其他版本的,就是有点慢。
    
    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 i386_defconfig #生成32位x86的配置文件

    执行上述命令之后:可以看见文件结构中已经有了linux-5.0.1文件夹

     

    步骤3:制作带有debug调试的内核

    make menuconfig #执行make menuconfig之后,会跳出一个图形化界面,就在图形化界面中完成以下操作,如果没有跳出,或者报错,自行解决界面大小适应问题:安装vmware tool,或者在设置中调整分辨率。
    
    1:选择 Kernel hacking
    
    2:选择 Compile-time checks and compiler options
    
    3:选择 [ ]Compile the kernel with debug info
    
    4:按Y 前面就多了一个 [*] Compile the kernel with debug info
    
     5:选择 save
    
     6:按 esc,直到退出图形化界面

    步骤4: 编译

    输入make指令

    开始制作根文件系统:

    步骤1:下载并加载QEMU虚拟机,并加载内核

    sudo apt install qemu # 安装qemu命令
    
    qemu-system-i386 -kernel linux-5.0.1/arch/x86/boot/bzImage #qemu虚拟机加载 linux-5.0.1内核,这条命令可以不用执行,因为后面构造menuOS的makefile中是包含了这条命令的
    
    如果提示错误,请修改qemu中的makefile文件

     

    步骤2:构造MenuOs

    #下载menu系统,并在LinuxKernel目录下建一个子目录rootfs,当作menuOS的根目录
    
    git clone https://github.com/mengning/menu.git
    
    mkdir rootfs
    
    sudo apt-get install libc6-dev-i386 #安装libc6-dev-i386

    步骤3:编译并加载

    cd menu
    
    make rootfs

    完成后应该有以下界面:

    执行Gdb调试测试

    步骤一:启动gdb server

    关闭打开的menu OS 系统界面
    
    qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img -append nokaslr -s –S

    步骤二:建立gdb连接(从另外一个命令行窗口打开)

    gdb
    
    file ~/LinuxKernel/linux-5.0.1/vmlinux
    
    break start_kernel
    
    target remote:1234

    步骤三:测试gdb连接

    在gdb窗口,按下c

    观看调试信息,和menu OS系统启动停滞,在按下Enter后,继续执行,则表示gdb测试成功

     

    构建Menu OS的网络功能

    在这里首先看一下目前的文件结构·

    步骤一:将TCP网络通信程序集成到MenuOS中

    cd linux-5.0.1
    
    git clone https://github.com/mengning/linuxnet.git
    
    cd linuxnet/lab2
    
    make
    
    cd ../../../menu/
    
    make rootfs #改一下Makefile

    步骤2:将TCP通信的客户端集成到MenuOS中

    cd ../linux-5.0.1/linuxnet/lab3
    
    Make rootfs

    在这里同样需要修改make file

    当menuOS中包含replyhi和hello命令时,就已经制作成功了

     

    到此,构建调试Linux内核(32位)网络代码的环境MenuOS系统完成。

  • 相关阅读:
    bootstrap模版
    spark
    断点
    如何让数据动起来?Python动态图表制作一览。
    证据就在代码里
    windows下oracle的ora-27100错误
    SQL优化 | MySQL问题处理案例分享三则
    MySQL安装好之后本地可以连接,远程连接卡死
    MySQL千万级大表在线变更表结构
    ORA-39006错误原因及解决办法
  • 原文地址:https://www.cnblogs.com/AmosYang6814/p/12027988.html
Copyright © 2011-2022 走看看