linux启动方式

来源:互联网 发布:淘宝ppc和cpc的区别 编辑:程序博客网 时间:2024/05/16 14:41
1:BIOS自检
    电脑开机后
,电脑会进入BIOS,、.BIOS的第一个步骤是加电自检,BIOS的第二个步骤是检测本地设备。,侦测电脑周边配套设备是否工作正    常,如cpu的类型,速度,缓存等;主板类型,内存的速度,容量,硬盘的大小,类型和工作模式,风扇速度等,主要是为了检查这些设备在开机的时候是否能正常的工作.
2:载入启动程序
   主板的BIOS会读取硬盘的主引导记录(MBR),MBR中存放的是一段很小的程序,他的功能是从硬盘读取操作系统核心文件并运行,因为这个小程序太小了,因此通常这个小程序不具备直接引导系统内核的能力,他先去引导另一个稍微大一点的小程序,再由这个大一点的小程序去引导系统内核.
3:加载内核
    
LINUX内核一般是压缩保存的,因此,它首先要进行自身的解压缩。内核映象前面的一些代码完成解压缩。解压后将其放入高端内存中,如果有初始RAM磁盘映像,就会将它移动到内存中,并标明以后使用,然后内核映象前面的代码调用内核,并开始启动内核引导的过 程 
4:启动init服务
    这里的Init程序,一般放在/sbin下,(到这里会出现很多不同的启动方式,主要有:
SystemV,BSD,upstart和systemd).
     
这里主要说SystemV,init进程是所有进程的起点,也是Linux内核启动后的第一个动作,所以这个程序的PID是永远是1,init进程是所有进程的发起者和控制
    init进程有以下两个作用。
    一:扮演父进程的角色。因为init进程永远不会被终止,所以系统总是可以确信它的存在,并在必要的时候以它      为参照。如果某个进程在它衍生出来的全部子进程结束之前被终止,就会出现必须以init为参照的情况。此时那些失去了父进程的子进程    就都会以init作为它们的父进程。
    二:读取运行等级。init它会读取/etc/inittab里面定义的运行等级,来决定启动哪个等级的服务

   运行等级
run level可以从0到6分成7种,一般是为了执行不同的程序或环境而设置的
    run level 0:是作关机,所以不能设置在/etc/inittab中,否者一开机就会作关机的动作。
    run level 1:是Single user mode模式,只允许root账号登录,主要是作一些系统维护的工作。
    run level 2:可以使所有的用户登录,但不会启用NFS working,也就是没有网络功能
    run level 3:可以使所有用户登录,并拥有完整的功能。包含run level 2没有的功能,但是开机后是用文本模式
    run level 4 :使用者自己定义,但是默认情况下和run level 3完全相同,
    run level 5:和run level 3几乎一样,唯一的不同是开机后是图形界面,
    run level 6:重启。所以run level 6也不会设置在/etc/inittab中,否者开机后立刻重启
5: 执行run level对应目录中的脚本,例如:等级为5,则执行/etc/rc.d/rc5.d下面的脚本
    执行时按脚本的文件名  串行执行,这样就造成开机比较慢。目前systemd是以并行执行(号称最快2秒开机) 

注意:假如是以busybox的init作为第一个进程,它没有运行等级之分,直接会执行/etc/下的rcS,然后由rcS来启动其它的脚本 
0 0
原创粉丝点击