linux内核启动过程分析

时间:2021-10-12 16:50:10

董涛  

原创作品转载请注明出处

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

 

基于实验楼网站提供的《Linux内核分析》实验平台,通过设置断点,跟踪调试linux内核的启动过程,概括了解linux内核的启动机制。

首先,打开存放linux内核的文件夹LinuxKernel,在qemu虚拟机环境下运行kernel命令,并通过-S和-s命令冻结cpu执行并在另一个shell中用break命令设置断点,跟踪内核程序执行,截图如下所示:

 

linux内核启动过程分析

用gdb命令跟踪调试,截图如下:

linux内核启动过程分析

用(gdb) break start_kernel命令在start_kernel函数处设置断点,截图如下:

linux内核启动过程分析

下面概括的分析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内核启动完毕,并开始执行用户程序。