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

构造一个简单的Linux系统MenuOS

时间:2016-03-12 14:42:05      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:

陈智威20135125

原创作品转载请注明出处 

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 

 

实验指导

 

 

使用实验楼的虚拟机打开shell:

 

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

技术分享

 

使用gdb跟踪调试内核

 

  1. qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S # 关于-s和-S选项的说明:
  2. # -S freeze CPU at startup (use ’c’ to start execution)
  3. # -s shorthand for -gdb tcp::1234 若不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项技术分享

 另开一个shell窗口

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

技术分享

技术分享技术分享技术分享

 

 实验结果理解与体会:

        经过对start_kernel()函数的分析,我发现start_kernel() 中调用了一系列初始化函数,以完成kernel本身的设置。这些动作有的是公共的,有的则是需要配置的才会执行的。

        和孟宁老师说的一样,start_kernel()函数相当于C语言函数中的main.c函数,start_kernel()在启动后会一直存在,并且其中的rest_init中的kernel_init 并且会创建1号进程,即init process(一号进程,第一个用户态进程)。

 

构造一个简单的Linux系统MenuOS

标签:

原文地址:http://www.cnblogs.com/vioczw/p/5268597.html

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