Linux 启动过程剖析

参考http://blog.chinaunix.net/uid-26495963-id-3066282.html

1,加载BIOS

BISO,英文Basic input Output System,基本的输入输出系统,它是一组固化在计算机主是的ROM芯片上的程序,为计算器提供最底层的、最直接的硬件设置和控制。

 

(1)       计算机刚上电时对硬件部分的检测,机加电自检,Power On Self Test,简称POST,

检查内容包括CUP,640K基本内存,1M以上内存扩展,ROM,主板,CMOS存储器,串并口,显卡,软硬盘,键盘等进行检查,发现问题则鸣笛警告,如严重错误,则停机;

(2)       初始化,包括创建中断向量、设置寄存器,对一些外部设备进行初始化和检测,其中很重要的一部分是BIOS设置,这样是对硬件设置一些参数;

(3)       引导程序,即引导DOS或其他操作系统,从软盘,硬盘,USB的开始失去读取引导记录。

 

2.读取MBR

 

硬盘的主引导扇区位于硬盘的第0磁道0柱面第一个扇区称为MBR,大小512 bytes,由3部分组成:

(1)       硬盘主引导记录MBR(Master Boot Record)占446 Bytes

(2)       分区表DPT(Disk Partition Table)占64Bytes

(3)       硬盘有效标志(Magic Number)占2Bytes

 

MBR包含硬盘的一系列参数和一段引导程序,其中硬盘引导程序的主要作用是检查分区表是否正确并且在POST完成后引导分区上的操作系统,将Boot Loader复制到物理内存0x7c00;

 

3.Boot Loader

(1)Boot Loader是在操作系统内核运行之前运行的一段程序,初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件带到一个合适的状态,以便最终调用操作系统内核;Boot Loader严重依赖硬件;

(2)Boot Loader有若干种,其中Grub,Lilo,Spfdisk是常见的Loader;

Grub使用的最多,系统读取内存中的Grub配置信息,一般为menu.lst或grub.lst,并依照此配置信息来启动不同的操作系统;

 

4.加载内核

根据Grub设定的内核映像路径,读取内存映像,并进行解压操作;屏幕上会输出“Uncompressing Linux”的提示,解压完成后,输出“Ok,booting the kernel”

系统将解压后的内核放在内存中,并调用start_kernel()函数来启动一系列的初始化动作,完成Linux核心环境的建立;

至此,Linux内核已经建立起来了,基于Linux的程序可以正常运行。

 

5.用户init设定运行等级

内核加载完成后,第一个运行的程序是/sbin/init,该文件会读取/etc/inittab文件,并以此来进行初始化操作;

/etc/inittab文件最主要的作用就是设定Linux的运行等级,Linux包含5个等级;

 

6.init进程执行rc.sysinit

设定运行等级后,Linux系统执行的第一个用户层文件是/etc/rc.d/rc.yssinit脚本程序,该脚本会设定PATH,网络配置,启动swap分区,设定/proc等;

 

 

 

 

7.启动内核模块

依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块;

 

8.执行不同运行基本的脚本程序

根据不同的运行级别,系统会运行rc0.d到rc9.d中相应的脚本程序,来完成相应的初始化工作和启动相应的服务;

 

9.执行/etc/rc.d/rc.local

rc.local就是在一切初始化工作完成后,linux留给用户个性化的设定的位置;

 

10.执行/bin/login程序,进入登录状态

此时,系统已经进入到了等待用户输入username和password,输入用户名和密码登录,启动过程完成;

 

转载于:https://www.cnblogs.com/thoughtInShare/p/4271042.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值