实验要求:

  • 使用gdb跟踪调试内核从start_kernel到init进程启动

  • 详细分析从start_kernel到init进程启动的过程并结合实验截图撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下:

    • 题目自拟,内容围绕Linux内核的启动过程,即从start_kernel到init进程启动;

    • 博客中需要使用实验截图

    • 博客内容中需要仔细分析start_kernel函数的执行过程

    • 总结部分需要阐明自己对“Linux系统启动过程”的理解,尤其是idle进程、1号进程是怎么来的。

  • 3)请提交博客文章URL到网易云课堂MOOC平台Linux内核分析MOOC课程,编辑成一个链接可以直接点击打开。

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

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

内核启动完成后进入menu程序,支持三个命令help、version和quit,您也可以添加更多的命令,对选修过《软件工程C编码实践篇》的童鞋应该是a piece of cake.

使用gdb跟踪调试内核

这里我选择的help指令

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

另开一个shell窗口

输入 gdb

(gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表 (gdb)target remote:1234 # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行起初一直出现连接超时的问题

(gdb)break start_kernel # 断点的设置可以在target remote之前,也可以在之后

设置断点 程序执行到断点处

实验结束。
 

转载于:https://www.cnblogs.com/jorilee/p/5271776.html

实验三:跟踪分析Linux内核的启动过程 ----- 20135108 李泽源相关推荐

  1. 实验三 Linux的启动与关闭,实验三:跟踪分析Linux内核的启动过程

    Ubuntu 16.04下搭建MenuOS的过程: 1.下载内核源代码编译内核 1 # 下载内核源代码编译内核 2 cd ~/LinuxKernel/ 3 wget https://www.kerne ...

  2. 实验三:跟踪分析Linux内核的启动过程

    Ubuntu 16.04下搭建MenuOS的过程: 1.下载内核源代码编译内核 1 # 下载内核源代码编译内核2 cd ~/LinuxKernel/3 wget https://www.kernel. ...

  3. linux内核启动分析 三,Linux内核分析 实验三:跟踪分析Linux内核的启动过程

    贺邦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. 实验过程 ...

  4. linux内核分析作业3:跟踪分析Linux内核的启动过程

    内核源码目录 1. arch:录下x86重点关注 2. init:目录下main.c中的start_kernel是启动内核的起点 3. ipc:进程间通信的目录 实验 使用实验楼的虚拟机打开shell ...

  5. 通过gdb调试分析Linux内核的启动过程

    作者:吴乐 山东师范大学 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验流程 1.打开环境 执 ...

  6. 实验六:分析Linux内核创建一个新进程的过程

    20135108 李泽源 阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/sched.h ...

  7. 跟踪分析Linux内核5.0系统调用处理过程

    跟踪分析Linux内核5.0系统调用处理过程 学号384 原创作业转载请注明出处+中国科学技术大学孟宁老师的Linux操作系统分析 https://github.com/mengning/linuxk ...

  8. Bochs调试Linux内核6 - 启动过程调试 - 跳到bootsect引导程序执行

    接此,​​​​​​Bochs调试Linux内核5 - 启动过程调试 - 认识Bootsect.S_bcbobo21cn的专栏-CSDN博客 看一下,0x00007c11 这里是重复执行串传送:而后一条 ...

  9. linux启动过程剖析,分析Linux系统的启动过程

    导读 一直使用linux系统,却对系统启动过程及系统初始化和各种服务的启动不太清楚.今天终于搞明白整个是怎么一回事了.本来想自己写篇文章,刚好在网上看到一篇不错的介绍,很详细,就直接拿来了. Linu ...

最新文章

  1. 'or'='or'经典漏洞原理分析
  2. ArcGIS为面要素生成邻接矩阵
  3. python 基础 列表
  4. React和设计良好的jQuery插件并没有什么不兼容的问题。
  5. jsonarray转liast_jsonArray转换成List
  6. 【求助】小系统组成大系统所遇到的问题
  7. Python3常用数据结构
  8. Android NDK升级17后编译提示找不到mips64el-linux-android-strip
  9. Spring:aspectj-autoproxy 简介
  10. Firefox扩展批量安装脚本
  11. Vue父子组件传递数据
  12. 分水岭算法(Watershed Algorithm)
  13. sklearn学习笔记之开始
  14. SQL注入漏洞解决心得
  15. 2020年的工程咨询将如何影响建设工程?
  16. 组策略禁止自动锁定计算机,让Win10自动锁屏的设置技巧
  17. 平面方程、两平面夹角、点到平面距离
  18. OCR中文简体汉字字符材料制作
  19. 我的世界服务器信息变英文,我的世界服务器
  20. 手机IMSI码规则更新-通过IMSI判断运营商的方法

热门文章

  1. 阿里巴巴收购 Yahoo! 中国之后的风险
  2. Unity 制作愤怒的小鸟
  3. ZooKeeper :Java客户端Watcher API介绍
  4. 用实战项目经验告诉你什么是二方包!
  5. xp计算机远程桌面设置密码,远程桌面连接设置,详细教您xp怎么设置远程桌面连接...
  6. cogs 1487 麻球繁衍
  7. hautoj1262: 魔法宝石
  8. 加勒比海盗船——最优解转载问题c++
  9. 2021春项目需求记录 python实现模拟登录+爬取NASA Modis 上的产品数据
  10. ker矩阵是什么意思_矩阵形式下的最小二乘法推导