博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux内核分析第三周学习总结
阅读量:7114 次
发布时间:2019-06-28

本文共 1203 字,大约阅读时间需要 4 分钟。

Linux内核源码简介

arch/

该目录中包含和硬件体系结构相关的代码,每种平台占一个相应的目录。

和32位PC相关的代码存放在x86目录下。
每种平台至少包含3个子目录:kernel(存放支持体系结构特有的特征实现)、lib(存放体系结构特有的对通用函数的实现)、mm(存放体系结构特有的内存管理程序的实现),除了这3个子目录之外,大多数体系结构在必要的情况下还有一个boot子目录,包含了在这种硬件平台上启动内核所使用的部分或全部平台特有代码。

init/

内核启动相关代码 -> main.c

Linux内核启动初始化的起点就位于main.c中的函数start_kernel,相当于普通程序的main函数。

kernel/

存放linux内核最核心的代码,用于实现系统的核心模块,包括进程管理、进程调度器、中断处理、系统时钟管理、同步机制等。

该目录中的代码实现这些核心模块的主体框架,独立于具体的平台和系统架构。
核心模块与平台相关的代码放在arch/中。

构造一个简单的Linux系统

跟踪分析Linux内核的启动过程

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

cd LinuxKernel/

qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
内核启动完成后进入menu程序(《软件工程C编码实践篇》的课程项目),支持三个命令help、version和quit,您也可以添加更多的命令,对选修过《软件工程C编码实践篇》的童鞋应该是a piece of cake.
745383-20160313131218819-615769872.png

使用gdb跟踪调试内核

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选项
另开一个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之前,也可以在之后
745383-20160313131257522-9386950.png
745383-20160313131306897-620442984.png

总结

init/main.c ->stat_kernel

是linux内核的入口。

参考资料

转载于:https://www.cnblogs.com/20135237zero/p/5271771.html

你可能感兴趣的文章
CentOS 5.5升级内核到2.6.35.4
查看>>
查询整个数据库中某个特定值所在的表和字段的方法
查看>>
JS把数组中相同元素组合成一个新的数组问题
查看>>
《Linux内核设计与实现》读书笔记(三)- Linux的进程
查看>>
AngularJS快速入门指南08:表格
查看>>
C++矩阵运算库推荐
查看>>
在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)
查看>>
Android 控件在布局中按比例放置[转]
查看>>
内核通知链 学习笔记 【转】
查看>>
Input Method of Win32 System
查看>>
count(*) VS count(X)
查看>>
MS ASP.Net Ajax 服务端扩展
查看>>
android102 查询,插入联系人
查看>>
数据库邮件
查看>>
adstrtal.sh报超时错误 ERROR : Timed out( 100000 ): Interrupted Exception
查看>>
一个前端工程师的基本修养
查看>>
ZT:三十个好习惯
查看>>
.Net开发笔记(七)使用组件编程
查看>>
ASP.NET企业开发框架IsLine FrameWork系列之八--AppLogProvider日志框架(下)
查看>>
DataBase异常状态:Recovery Pending,Suspect,估计Recovery的剩余时间
查看>>