跟踪调试Linux内核的启动过程
跟踪调试Linux内核的启动过程---使用gdb
符钰婧
原创作品转载请注明出处
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”
本次的实验是使用gdb跟踪调试内核从start_kernel到init进程启动,并分析启动的过程。
1、首先是在实验楼虚拟机上进行调试跟踪的过程。
(1) 先构造一个简单的Linux系统

(2) 接下来使用gdb跟踪调试内核
启动(窗口被冻结)

另开一个shell窗口(水平分割),然后gdb

先读取符号表,接着连接Linux系统并设断点(start_kernel)

按“c"回车,系统开始启动到start_kernel处:

“list”可看到start_kernel上下的代码

设断点rest_init并运行

“list”可看到rest_init上下的代码(可看出它是在start_kernel函数的尾部被调用)

还可再设断点(如kernel_init),查看运行结果

2、接下来简单分析一下start_kernel(这里只关注较重要的地方)
(1)先打开init目录下的main.c找到start_kernel:

510行处的init_task为全局变量,相当于一个进程的pcb,0号进程为最终的idle进程。
注:不管内核的哪一方面都会涉及到start_kernel。
(2) 搜索trap_init,找到arch/x86下的代码:

其中的一个硬件中断:

这里的SYSCALL_VECTOR是一个系统调用,用指令的方式来触发中断。
(3)之后有很多个初始化,需要注意的还有整个函数的最后一句rest init():

总结:
跟踪调试Linux内核的启动过程的更多相关文章
- 跟踪分析Linux内核的启动过程--实验报告 分析 及知识重点
跟踪分析Linux内核的启动过程 攥写人:杨光 学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.stud ...
- 20135202闫佳歆--week3 跟踪分析Linux内核的启动过程--实验及总结
实验三:跟踪分析Linux内核的启动过程 一.调试步骤如下: 使用gdb跟踪调试内核 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd r ...
- 跟踪分析Linux内核的启动过程小解
跟踪分析Linux内核的启动过程 “20135224陈实 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029 ...
- 实验三:跟踪分析Linux内核的启动过程
实验三:跟踪分析Linux内核的启动过程 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.16 ...
- 20135239 益西拉姆 linux内核分析 跟踪分析Linux内核的启动过程
回顾 1.中断上下文的切换——保存现场&恢复现场 本节主要课程内容 Linux内核源代码简介 1.打开内核源代码页面 arch/目录:支持不同CPU的源代码:其中的X86是重点 init/目录 ...
- Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程
Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...
- Linux内核分析实验三----跟踪分析Linux内核的启动过程
一.Linux内核源代码介绍 1.根目录 arch/x86目录下的代码是我们重点关注的,arch中包括支持不同CPU的源代码. init目录下包含内核启动相关的代码,如main.c(start_ker ...
- Linux内核分析 实验三:跟踪分析Linux内核的启动过程
贺邦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. 实验过程 ...
- linux内核分析第三周-跟踪分析Linux内核的启动过程
一.实验流程 1.打开环境 执行命令:cd LinuxKernel/ 执行命令:qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd root ...
随机推荐
- 蓝桥杯-k倍区间
http://lx.lanqiao.cn/problem.page?gpid=T444 问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, .. ...
- 让你的QT显示一个窗口吧
项目文件 01_QtTest.pro #------------------------------------------------- # # Project created by QtCreat ...
- SMARTFORMS关闭失败
用户要调整表单样式,结果调整完发现打印时报错. 检查表单后发现,是因为用户要求删除表单中的一个单元格,但是删除TEMPLATE中的一个格子后,忘了调整后续单元格内容输出的位置.导致输出错误.
- pyhon 列表的增删改查
li = ['alex', 'wusir', 'egon', '女神', 'taibai'] l1 = li[2] print(l1) #增加 append() 增加到最后 insert(index, ...
- PostgreSQL的索引膨胀
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL内部结构与源代码研究索引页 回到顶级页面:PostgreSQL索引页 索引膨胀,主要是针对B-tree而言. 索引膨 ...
- CF535E Tavas and Pashmaks
今天Fakehu考的T1. 大致意思就是有n个人每个人有两个速度\(v_1,v_2\),比赛有两个路程\(A,B\),最后时间是\(A/v_1+B/v_2\).求每个人是否可能成为冠军中的一个. 显然 ...
- idea 搜索不到前端的ajax controller接口的原因
这是因为我把 web 目录设置成了 Excluded ,没有索引所以找不到了 参考: https://www.cnblogs.com/kinome/p/9991022.html IDEA 出现 upd ...
- UWP 检测网络状态
最近发现Community Toolkit有了网络辅助类,貌似很早就有了... 很不错,还是用.给大家分享一下. 1. 检测网络是否可用 2. 检测网络是否是计费模式? 3. 检测网络接入类型 4. ...
- 有关onpropertychange事件
<div style="border:1px solid #fc0;height:24px;width:300px;" id="target">&l ...
- 2018年美国大学生数学建模竞赛(MCM/ICM) F题解题思路
任务一:开发价格点,建立综合定价模型. 其中 a 代表开发价格点系数,代表个人财产评估.K 为 PI 交易系数 以这个进行评估,将个人划分为具有合理相似性的子组: 当 a 等于 0-30 时,子组为: ...