系统相关
首页 > 系统相关> > linux

linux

作者:互联网

1:实验环境选择

我选择的是实验楼平台,在 LinuxKernel 目录已经构建好了基于 3.18.6 的内核环境,可以使用实验楼的虚拟机打开 Xfce 终端(Terminal), 运行 MenuOS 系统。

2:启动内核

打开终端键入以下命令:

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

内核启动:

 

 

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

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

关于 -s 和 -S 选项的说明:

 

3:执行gdb

打开一个 Xfce 终端(Terminal),执行 gdb

# 打开 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   

 

gdc的继续执行命令会执行到设置的断点

 

 

4:将网络通信程序的服务端集成到 MenuOS 系统中

接下来我们需要将 C/S 方式的网络通信程序的服务端集成到 MenuOS 系统中,成为 MenuOS 系统的命令 replyhi。

我们 git clone 克隆一个 linuxnet.git,进入 lab2 目录执行 make 可以将我们集成好的代码 copy 到 menu 项目中。

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

详细命令如下:

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

 

尝试输入replyhi命令

 

 可以正常通信

5:gdb调试

 接下里可以使用gdb对内核进行调试,如list命令:

 

 

 

 

标签:3.18,MenuOS,cd,gdb,内核,linux,rootfs
来源: https://www.cnblogs.com/lambdoor/p/12019412.html