linux系统启动流程

以ubuntu为例,开机引导流程分为三部分:BIOS检测硬件;引导程序加载系统内核;内核控制启动系统。

1.BIOS(Basic Input Output System,基本输入输出系统)保存在主板的闪存中,它对CPU的频率、系统时间、第一个启动的硬件设备等进行设定,根据BIOS的设定,计算机执行POST加电自检工作,以保证一些硬件设备正常运转。对硬件检测完毕后,计算机找到第一个开机的硬件设备,然后将控制权交给此硬件设备的MBR(Master Boot Record,主引导记录)区域里的开机引导程序(Grub或Lilo),引导程序根据相应的设定来找到想要启动的操作系统的内核文件,并且将控制权交给要启动的操作系统的引导分区。

        Grub:Grand Uinfied Bootloader

2.开机引导程序找到系统的内核文件,把内核文件调入内存,ubuntu内核文件位于/boot目录中,且是压缩文件,自解压后载入内存。内核加载成功,就利用内核的功能对系统的硬件进行检测,包括声卡、网卡等。

       内核检测硬件的过程中,可能有一些程序需要在一个可用的文件系统中才能完成,但内核加载后,系统只是以只读的方式将根目录进行了挂载,因此为了保证讷河工作顺利完成,加载内核同时也加载一个initrd的压缩镜像文件。initrd在系统引导过程中创建一个临时的根文件系统,initrd文件包含可执行的程序和驱动程序,可以用它来挂载实际的根文件系统,最后再将这个初始RAM硬盘文件系统删除,从而完成加载内核工作。

3. 内核在检测完硬件后,最后执行一个init程序,init进程是内核创建的第一个进程,init程序会读取init的配置文件/etc/inittab。该文件定义了系统启动的级别0~5。并且指定了系统初始化的脚本。不同运行级别启动脚本存放在rcn.d目录中(n表示运行级别),这些目录里的文件都是链接文件,所有脚本都存放在/etc/init.d目录中。启动相应的服务后,系统运行/etc/rc.local脚本,这个脚本将用户自定义的需要在系统启动时运行的一些脚本文件写入其中,使其在系统启动过程中同时运行这些脚本。最后系统将相应的模块调入后,开始执行/bin/login程序等待用户登录。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值