linux内核启动过程分析
2015-03-22 09:33
323 查看
董涛
原创作品转载请注明出处
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
基于实验楼网站提供的《Linux内核分析》实验平台,通过设置断点,跟踪调试linux内核的启动过程,概括了解linux内核的启动机制。
首先,打开存放linux内核的文件夹LinuxKernel,在qemu虚拟机环境下运行kernel命令,并通过-S和-s命令冻结cpu执行并在另一个shell中用break命令设置断点,跟踪内核程序执行,截图如下所示:
用gdb命令跟踪调试,截图如下:
用(gdb) break start_kernel命令在start_kernel函数处设置断点,截图如下:
下面概括的分析linux内核启动过程:
在bois程序和磁盘引导程序将linux操作系统加载到内存中后,计算机将linux文件中的start_kernel函数作为入口函数被首先执行,start_kernel函数中包含很多功能函数模块,比如中断处理模块trap_init(),内存管理模块mm_init(),调度模块sched_init()等等,这些功能函数模块在start_kernel函数中被初始化,在start_kernel函数中被执行的第一个进程是功能函数模块rest_init()中的0号进程即idle进程,0号进程创建1号进程即init进程,int进程是系统启动的默认进程,至此,linux内核启动完毕,并开始执行用户程序。
原创作品转载请注明出处
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
基于实验楼网站提供的《Linux内核分析》实验平台,通过设置断点,跟踪调试linux内核的启动过程,概括了解linux内核的启动机制。
首先,打开存放linux内核的文件夹LinuxKernel,在qemu虚拟机环境下运行kernel命令,并通过-S和-s命令冻结cpu执行并在另一个shell中用break命令设置断点,跟踪内核程序执行,截图如下所示:
用gdb命令跟踪调试,截图如下:
用(gdb) break start_kernel命令在start_kernel函数处设置断点,截图如下:
下面概括的分析linux内核启动过程:
在bois程序和磁盘引导程序将linux操作系统加载到内存中后,计算机将linux文件中的start_kernel函数作为入口函数被首先执行,start_kernel函数中包含很多功能函数模块,比如中断处理模块trap_init(),内存管理模块mm_init(),调度模块sched_init()等等,这些功能函数模块在start_kernel函数中被初始化,在start_kernel函数中被执行的第一个进程是功能函数模块rest_init()中的0号进程即idle进程,0号进程创建1号进程即init进程,int进程是系统启动的默认进程,至此,linux内核启动完毕,并开始执行用户程序。
相关文章推荐
- Linux内核启动过程分析
- linux内核启动内核解压过程分析
- Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
- Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)
- 学习笔记 --- LINUX内核启动第二阶段分析(不考虑自解压过程)
- linux内核启动过程分析
- Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
- Linux内核启动过程分析
- Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)
- Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)
- Linux内核启动过程分析
- linux内核启动解压过程分析
- Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)
- linux内核启动内核解压过程分析
- linux内核无难事之(一):系统启动过程分析
- linux内核启动内核解压过程分析
- linux内核启动过程分析(2)
- linux内核启动过程分析
- 【转载】linux内核启动android文件系统过程分析
- 通过Bochs分析Lilo启动Linux内核的过程