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

     

    实验环境:

    实验楼中老师的课程实验对这个实验进行了很好的封装进行起来很便捷,因此使用老师提供的实验楼的实验教程来完成此次实验:

    先构建完整实验环境,实验楼的环境中已经有了Linux-3.18.6的文件的,只要的指定的文件夹下面进行编译即可:

    $ cd ~/LinuxKernel/
    $ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
    

      

    menuos已经编译完成,可以成功启动了:

     使用跟踪分析 ~/Linux 内核的启动过程的 -s 和 -S 选项启动 MenuOS 系统:

    qemu -kernel linux-3.18.6/arch/x86/boot/bzImage-initrd rootfs.img -s -S

    使用gbd跟踪调试start_kernel 命令:

    (gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表
    (gdb)target remote:1234 # 建立gdb和gdbserver之间的连接
    (gdb)break start_kernel # 断点的设置可以在target remote之前,也可以在之后
    (gdb)c # 按c 让qemu上的Linux继续运行
    

      

    
    

    程序定位到指定的断点处:

    将网络通信的服务集成到MENUOS中来,增加了命令replyhi,功能是回复hi的TCP服务. :

    $ cd ~/LinuxKernel  
    $ git clone https://github.com/mengning/linuxnet.git
    $ cd linuxnet/lab2
    $ make
    $ cd ../../lab3/
    $ make rootfs
    

     如图所示,MENUOS已经可以进行TCP网络通信功能了:

     

  • 相关阅读:
    #define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
    互联网地址处理例程
    Android系统工程模式启动过程详解
    知识填充
    git 本地回退
    理解JS中的Promise对象
    MySQL server version for the right syntax to use near 'identified
    尾递归要注意的点
    事件捕获和事件冒泡的理解
    v 2ra-y_build_a_sever_in_vltru
  • 原文地址:https://www.cnblogs.com/zzydexiaowu/p/12019330.html
Copyright © 2011-2022 走看看