13-linux系统启动流程2

前面讲到了linux系统初始化的流程:
        POST-->bootsequence(bios)-->bootloader(MBR)-->kernel(ramdisk)-->rootfs(只读)-->init

这里介绍/sbin/init如何运作?

    以centos5为例:
        不同的安全模式加载不同的驱动,只满足基本的运行要求。
        运行级别:为了系统的运行或维护等应用目的而设定,由init决定
            0-6:7个级别
                0:关机
                1:单用户模式(root,无需登陆),single,维护模式
                2:多用户模式,会启动网络功能,但不会启动NFS网络文件系统,维护模式
                3:多用户模式,正常模式,文本界面(默认),
                4:多用户模式,预留级别,可同3级别
                5:多用户模式,正常模式,图形界面
                6:重启
            默认级别:
                3,5
            切换级别:
                init #
            查看级别:
                who -r
                runlevel 显示上次的级别

    关于配置文件:/etc/inittab
        每一行定义一种action以及与之对应的process
            id:runlevel:action:process
                常用action:
                    wait 切换至此级别运行一次
                    respawn 此process终止,就重新启动之
                    initdefault 设定默认运行级别,process省略
                    sysinit 设定系统初始化方式,此处一般为/etc/rc.d/rc.sysinit
            id:3:initdefault
            si::sysinit:/etc/rc.d/rc.sysinit 设定程序后会挂载此脚本,很多功能由此脚本完成
                l0:0:wait:/etc/rc.d/rc 0
                l1:1:wait:/etc/rc.d/rc 1
                ...
                l6:6:wait:/etc/rc.d/rc 6
            说明:rc 0 --->意味着读取/etc/rc.d/rc0.d/
                K* K##*按文件名排序,数字越小越先运行,数字越小的服务,通常为依赖到别的服务
                S* S##*按文件名排序,数字越小越先运行,数字越小的服务,通常为被依赖到的服务
                依赖的先执行

                大概脚本形式如下:
                for srv in /etc/rc.d/rc0.d/K*;do
                    /etc/rc.d/rc0.d/$srv
                    $srv stop
                done
                for srv in /etc/rc.d/rc0.d/S*;do
                    /etc/rc.d/rc0.d/$srv
                    $srv start
                done
                一些文件通过建立链接的形式存在于文件目录中,在每个级别中都存在相应的链接。

            chkconfig命令:
                查看服务在所有级别的启动或关闭设定情形
                chkconfig --list可以查看各服务在各级别下的运行情况。
                可以通过--level指定级别进行修改。
                每个服务的配置文件中,default-start和default-stop参数中可以对服务启动情况进行定义

                添加:
                    sysv的服务脚本放置于/etc/rc.d/init.d(/etc/init.d)
                    chkconfig --add name

                        格式
                        #!/bin/bash
                        #
                        # chkconfig: LLLL nn nn
                        (写到的为L,没写的为K)

                        实例:
                        #!/bin/bash
                        #
                        # chkconfig: 345 66 33
                        # description: test srv script
                        echo "hello srv"
                        在345级别运行,启动为第6级别,关闭为第3级别

                删除:
                    chkconfig --del name

                修改指定的链接类型
                    chkconfig [--level levels] name <on|off|reset>
                        --level LLLL:指定要设置的级别,省略时表示2345

            注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向了/etc/rc.d/rc.local脚本,因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local(/etc/rc.d/rc3.d/S99local开机运行到最后一步的命令,即开机前如果需要运行的指令,直接写在此脚本)

        到开机界面时,设置登陆终端
        tty1:2345:respawn:/usr/sbin/mingetty tty1
        tty2:2345:respawn:/usr/sbin/mingetty tty2
        ...
        tty6:2345:respawn:/usr/sbin/mingetty tty6
        mingetty会调用login程序

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

init流程总结:/sbin/init-->(/etc/inittab)-->设置默认运行级别--》运行系统初始脚本,完成系统初始化-->关闭对应下需要关闭的服务,启动需要启动服务-->设置登陆终端

关于centos6的启动
    init程序为:upstart(ubuntu研发),其配置文件
        /etc/inittab,/etc/init/*.conf
        注意:/etc/init/*.conf文件语法遵循upstart配置文件语法格式

实例:
    启动系统时,设置其运行级别1:
    在centos中,进入grub界面(这里不详述,不清楚的自行百度)
    第一行,说明到哪里去找内核
    第二行,传递内核参数,传递1或single将以1级别运行,直接输入passwd可以修改root密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值