码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2019-12-12 23:32:56      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:之间   initrd   help   span   不能   运行   另一个   构建   调试器   

实验环境:实验楼平台远程环境https://www.shiyanlou.com/courses/1198/learning/?id=8925

若点击无访问权限,则请访问“庖丁解牛Linux网络核心”课程主页https://www.shiyanlou.com/courses/1198,关注后再次尝试。

进入虚拟环境后,双击Xfce图标进入控制台,值得注意的是,这里有一个坑:实验楼平台提供字符和桌面两种界面

但不是所有命令都能在字符界面中执行,请使用图形界面的Xfce终端而不是字符界面

输入以下两条指令:(如果复制黏贴请不要复制$)

$ cd ~/LinuxKernel/

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

技术图片

这个时候会跳出一个黑色的控制台界面并快速刷新信息

停止时的信息为:

技术图片

我们测试两条指令

replyhi和help

不出意外的话,第一条指令应当不能成功,因为还没有被添加入系统

技术图片

结果符合我们的预期

下一步我们使用-s和-S分析启动过程

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

-S表示暂停启动时的CPU的执行

-s等于-gdb tcp::1234 

如果发现鼠标不能移动,请使用CTRL+Alt释放鼠标

应当看到:

技术图片

打开另一个Xfce终端,执行如下命令

 # 进入LinuxKernel文件夹,这一步没有后续会提示找不到文件

cd ~/LinuxKernel/

 # 打开 GDB 调试器

$ gdb

# 在 GDB 中输入以下命令: # 在 gdb 界面中 targe remote 之前加载符号表

(gdb)file linux-3.18.6/vmlinux

# 建立 gdb 和 gdbserver 之间的连接

(gdb)target remote:1234

# 断点的设置可以在target remote之前,也可以在之后

(gdb)break start_kernel

# 按 c 让qemu上的Linux继续运行

(gdb)c

 

你应当看到

技术图片

技术图片

以及

技术图片

下一步我们把replyhi命令集成进MenuOS

从git clone 克隆一个 linuxnet.git(!!!这个过程可能会比较缓慢,这个过程中不要在这个界面使用键盘,否则clone有可能停止,),进入 lab2 目录执行 make 将我们集成好的代码 copy 到 menu 项目中。

然后进入 menu,已经有了一个脚本 rootfs,运行 make rootfs,脚本就可以帮助我们自动编译、自动生成根文件系统,还会帮我们运行起来 MenuOS 系统。

详细命令如下:

$ cd ~/LinuxKernel

$ git clone https://github.com/mengning/linuxnet.git

$ cd linuxnet/lab2

$ make

$ cd ../lab3

$ make rootfs

这个时候我们把replyhi添加进系统中了

技术图片

 

 

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

标签:之间   initrd   help   span   不能   运行   另一个   构建   调试器   

原文地址:https://www.cnblogs.com/Miliapus/p/12031824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!