当前位置: IT大杂烩 > Ubuntu  > Linux内核(一)系统启动过程

Linux内核(一)系统启动过程

www.someabcd.com  网友分享于:Jun 8, 2018 5:51:59 PM

标签:

 转载请注明出处:jiq?钦‘s technical Blog 

技术分享

 

(1) CPU自身初始化:

CPU加电之后需要进行一系列的初始化工作;

(2) CPU加载BIOS(Basic InputOutput System)

CPU执行一个固定的位置(一般是0xFFFFFFF0)的指令。这是一条跳转指令,跳转到BIOS代码的首部。BIOS固化在主板上一个很小的ROM中,主要完成两个工作:

(a) 加电自检(POST):完成系统硬件(内存,系统总线等)检测;

(b) 加载内核引导程序:读取主引导记录MBR(启动设备的第一个扇区)MBR中保存了内核引导程序的开始部分,BIOS加载MBR并执行。

(3) 引导程序加载内核映像

内核引导程序分为两个阶段:

(a)主引导程序扫描分区表,将位于活动分区引导记录中的次引导程序加载到内存并执行;

(b)次引导程序负责加载内核映像到内存;

(4) 内核映像开始工作:

自解压,然后调用init/main.c中的start_kernel()函数执行;

至此内核的引导过程已经结束,下面进入内核的初始化过程!!!

内核的初始化过程从start_kernel()函数开始,直至第一个用户进程init结束:

(1) start_kernel()函数:相当于内核整个初始化工作的man函数

完成内核的大部分初始化工作,主要是存储管理、设备管理、文件管理、进程管理等任务的初始化;

(2) reset_init()函数:后续初始化,由start_kernel()函数调用;

(3) kernel_init()函数:完成设备驱动程序的初始化,并调用init_post()函数启动用户空间中的init进程;

(4) init_psot()函数:启动用户空间中的init进程init标准位置在/sbin/initinit进程读取/etc/inittab文件来触发诸如接受用户登录,设置键盘,网络等这些进程。至此系统已经成功启动了!!!

Linux内核(一)系统启动过程

标签:

发布此文章仅为传递网友分享,不代表本站观点,若侵权请联系我们删除,本站将不对此承担任何责任。
Copyright ©2018  IT大杂烩  版权所有  京ICP备11030978号-1 网站地图