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

    一、下载内核源代码编译内核

    1.下载linux-5.0.1的内核

    mkdir LinuxKernel  #创建一个项目目录
    cd LinuxKernel
    wget 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

    2.安装内核编译工具

    sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev
    make i386_defconfig#生成32位x86的配置文件

    3. 配置编译内核

    make menuconfig

    进入图形界面:

    选择:Kernel hacking 回车

    选择:Compile-time checks and compiler options回车

    选择:Compile the kernel with debug info 键入y

    选择:save 回车

    选择:ok 回车

    选择:exit 回车

    一直按esc直到退出图形界面

    make  #编译 时间有点长

    4.升级当前系统内核

    #升级内核这里建议别做了,我试了3次没成功过。。。
    sudo make modules_install  #安装前通过系统快照备份系统,以防出现故障前功尽弃
    sudo make install
    sudo update-grub
    reboot
    uname -a

    二、制作根文件系统

    1. QEMU虚拟机加载内核

    cd ~/LinuxKernel/
    sudo apt install qemu  # 安装qemu命令

    2. 构造MenuOS

    #下载menu系统,并在LinuxKernel目录下建一个子目录rootfs,当作menuOS的根目录
    git clone https://github.com/mengning/menu.git
    mkdir rootfs
    cd menu
    sudo apt-get install libc6-dev-i386 #安装libc6-dev-i386
    sudo ln -s /usr/bin/qemu-system-i386  /usr/bin/qemu #建立一个软链接 之后可以直接执行qemu
    vim Makefile  #修改一下Makefile文件
    qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img  #创建的根文件系统
    make rootfs  #初始化根目录

    三、构建Linux内核的gdb调试环境

    1.先关闭qemu虚拟机,在qemu中启动gdb server

    qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img -append  nokaslr -s -S

     在新打开的qemu虚拟机上,出现的是一个黑屏,此时的qemu在等待gdb的连接

    2. 建立gdb与gdbserver之间的连接

    打开另一个终端

    gdb
    file ~/LinuxKernel/linux-5.0.1/vmlinux # # 在gdb界面中targe remote之前加载符号表
    break start_kernel # 断点的设置可以在target remote之前,也可以在之后
    target remote:1234 # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行
    c #按c 让qemu上的Linux继续运行
    list #输入list指令可以查看断点处的代码。

    四、构建调试Linux内核网络代码的环境MenuOS

    1.将TCP网络通信程序的服务端集成到MenuOS 系统中

    cd ~/LinuxKernel  
    git clone https://github.com/mengning/linuxnet.git
    cd linuxnet/lab2
    make
    cd ../../menu/
    vim Makefile #修改Makefile文件
    make rootfs 

    2.将TCP网络通信程序的客户端集成到MenuOS系统中

    cd ~/LinuxKernel  
    cd linuxnet/lab3
    vim Makefile #修改Makefile文件
    make rootfs

    menuOS下多出了replyhi,和hello命令

    3.查看结果

    在MenuOS中输入replyhi,再输入hello

  • 相关阅读:
    wireshark解析https协议方法
    (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案
    selenium--判断元素是否存在
    lambda(匿名函数)---基于python
    python单元测试之参数化
    获取文件夹下某个类型的文件名---基于python
    python操作Excel读写--使用xlrd
    PCAP文件格式分析(做抓包软件之必备)
    pip安装Crypto注意事项
    使用PYTHON解析Wireshark的PCAP文件
  • 原文地址:https://www.cnblogs.com/yll333/p/12002621.html
Copyright © 2011-2022 走看看