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

Posted 宫挽月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建调试Linux内核网络代码的环境MenuOS系统相关的知识,希望对你有一定的参考价值。

实验环境:实验楼平台远程环境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系统的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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