您的位置:首页 > 运维架构 > Linux

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

2015-06-21 16:41 393 查看

 转载请注明出处: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/init,init进程读取/etc/inittab文件来触发诸如接受用户登录,设置键盘,网络等这些进程。至此系统已经成功启动了!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: