码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2015-06-21 18:36:24      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

 转载请注明出处: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内核(一)系统启动过程

标签:

原文地址:http://blog.csdn.net/jiyiqinlovexx/article/details/46582659

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!