首页 > 其他 > 详细

init

时间:2018-02-14 00:06:50      阅读:309      评论:0      收藏:0      [点我收藏+]

init 程序的类型:

    SysV: 
        init, CentOS 5 之前
        配置文件:/etc/inittab
    Upstart: 
        init,CentOS 6
        配置文件:/etc/inittab,/etc/init/*.conf
    
    Systemd :
        systemd, CentOS 7
        配置文件:/usr/lib/systemd/system,/etc/systemd/system
        

init 启动级别

    在init配置文件中有个非常重要的配置项目,那就是默认的系统启动级别。
    启动级别就是为系统维护的目的而设定,途径是设定启动或关闭服务实现。
    sbin/init是CentOS6 之前的。
    运行级别:
        为系统运行或维护等目的而设定;0-6 的7 个级别
        0 : 关机;关闭所有服务。
        1 : 维护模式;单用户模式;single模式;此级别可允许root用户直接登录而无需认证
        2 :     维护模式;多用户模式,启动网络功能,但不会启动NFS ,需要用户认证
        3 : 正常模式;多用户模式,文本界面
        4 : 预留级别;可同3 级别
        5 : 正常模式;多用户模式,图形界面
        6 : 重启;关闭所有服务,且再重启所有服务
    默认级别: 
        3或5,服务器基本上使用3级别。
    切换级别:
        init #
    查看级别:
        runlevel ; who -r
    启动时:
        可以选择e,a,c来进行相关操作

init 第一步初始化

    init 读取其初始化文件:
        /etc/inittab
        1》初始运行级别(runlevel)
        2》使用/etc/rc.d/rc.sysinit脚本来进行系统初始化
        3》对应进行运行级别的脚本目录,初始运行级别是几,这里就进行那个脚本
        4》捕获某个关键字顺序,这里是配置组合键功能
        5》定义UPS 电源终端/恢复脚本,也就是配置不断电系统pf、pr两种机制
        6》在虚拟控制台生成getty
        7》在运行级别N上来初始化X,以/etc/X11/prefdm-nodaemon启动图形化界面

CentOS 5 的inittab 文件

    配置文件:
        /etc/inittab
        此配置文件中,每一行定义一个由init执行的action以及与之对应的process,action用于定义程序啥时候被运行
    开头第一行格式:id:runlevel:action:process
        action:
            wait: 切换至此级别运行一次
            respawn:此process 终止,就重新启动之
            initdefault:设定默认运行级别;process会被省略
            sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit
        默认的runlevel配置,次runlevel为3
            id:3:initdefault:
    系统软件运行环境的初始化脚本
        si::sysinit:/etc/rc.d/rc.sysinit
        /etc/rc.d/rc.sysinit为初始化用户空间环境,会执行许多系统初始化任务
    7个不同runlevel,这是需要启动的服务的script放置路径。
        此处系统会启动对应级别下设定为要启动的服务和关闭的服务。
        这意味着通过/etc/rc.d/rcN.d/下所有链接文件来决定如何启动或关闭服务。
         l0:0:wait:/etc/rc.d/rc 0
         l1:1:wait:/etc/rc.d/rc 1
         l2:2:wait:/etc/rc.d/rc 2
         l3:3:wait:/etc/rc.d/rc 3
         l4:4:wait:/etc/rc.d/rc 4
         l5:5:wait:/etc/rc.d/rc 5
         l6:6:wait:/etc/rc.d/rc 6
    是否允许按下ctrl +alt+del就重新启动配置项目:
        ca::ctrlaltdel:/sbin/shutdown -t3 -r now
    有关不间断电源系统(UPS),一个是断电时的关机,一个是恢复供电时的处理。
        pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
        pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
    tty1--tty6是由底下这六行决定
         1:2345:respawn:/sbin/mingetty tty1
         2:2345:respawn:/sbin/mingetty tty2
         3:2345:respawn:/sbin/mingetty tty3
         4:2345:respawn:/sbin/mingetty tty4
         5:2345:respawn:/sbin/mingetty tty5
         6:2345:respawn:/sbin/mingetty tty6
    X window 是由以下这行决定的
        x:5:respawn:/etc/X11/prefdm -nodaemon

CentOS 6 /etc/inittab 和相关文件

    /etc/inittab
        设置系统默认的运行级别:id:3:initdefault:
    /etc/init/*.conf
        /etc/init/control-alt-delete.conf
        /etc/init/tty.conf
        /etc/init/start-ttys.conf
        /etc/init/rc.conf
        /etc/init/prefdm.conf
    破解CentOS5和6的root口令
        直接使用单用户登录,在启动时进入grub,在进入单用户

init进行的第二步初始化

    /etc/rc.d/rc.sysinit: 系统初始化脚本
        1)  设置主机名(读取/etc/sysconfig/network文件中的HOSTNAME进行)
        2)  设置欢迎信息
        3)  激活udev 和selinux
        4)  挂载/etc/fstab 文件中定义的文件系统
        5)   检测根文件系统,并以读写方式重新挂载根文件系统
        6)  设置系统时钟
        7)  激活swap 设备
        8)  根据/etc/sysctl.conf 文件设置内核参数
        9)  激活lvm 及software raid 设备
        10) 加载额外设备的驱动程序
        11) 清理操作

启动各项服务

    说明:rc N -->  意味着读取/etc/rc.d/rcN.d/
        K*: K##* 
        S*: S##* 
            ##运行次序,数字越小,越先运行,数字越小的服务,通常为被依赖到的服务
            以K开头的都被传递stop参数来停止。
            以S开头的都被传递start参数来开启
    开机过程/etc/rc.d/rc3.d/的脚本是这样执行的:
        for srv in /etc/rc.d/rcN.d/K*; do
            $srv stop
        done
        for srv in /etc/rc.d/rcN.d/S*; do
            $srv start
        done
    
    /etc/rc.d/rc3.d/目录下符号链接文件可以通过两种方法创建:
        1》通过在/etc/init.d/(/etc/rc.d/init.d )目录下编辑服务脚本,格式有要求。
            然后在/etc/rc.d/rcN.d/目录下创建对应与/etc/init.d/目录下服务脚本的符号链接文件。
        2》此符号链接文件也可通过chkconfig命令来实现

注意:

    正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d 一个服务脚本,而是指向了/etc/rc.d/rc.local 脚本(计算机启动最后启动的服务,可以在这里面添加需要开机启动的东西)。
    不便或不需写为服务脚本放置于/etc/rc.d/init.d/ 目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local 文件中。
    /etc/rc.d/rc.local 在指定运行级别脚本后运行,可以根据情况,进行自定义修改。
    1:2345:respawn:/usr/sbin/mingetty tty1
    2:2345:respawn:/usr/sbin/mingetty tty2
     ...
    6:2345:respawn:/usr/sbin/mingetty tty6
        mingetty 会自动调用login 程序
    x:5:respawn:/etc/X11/prefdm -nodaemon

总结:

    /sbin/init --> (/etc/inittab) -->  设置默认运行级别 --> 运行系统初始脚本、完成系统初始化 --> ( 关闭对应下需要关闭的服务)务 启动需要启动服务 -->  设置登录终端
    CentOS6,init 程序为upstart, 其配置文件/etc/inittab, /etc/init/*.conf,配置文件的语法遵循upstart 配置文件语法格式,和CentOS5 不同。
    CentOS 6 启动流程:
        POST --> Boot Sequence(BIOS) --> Boot Loader -->Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 设定默认运行级别 -->  系统初始化脚本 rc.sysinit --> 关闭或启动对应级别的服务 -->  启动终端

init

原文:https://www.cnblogs.com/shenxm/p/8447744.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!