Linux01-Linux启动流程46


一、Kernel初始化的过程

    1、设备探测

    2、驱动初始化(可能会从initrd(initramfs)文件中装载驱动模块)

    3、以只读挂载根文件系统;

    4、装载第一个进程init(PID:1)

二、系统启动流程/sbin/init(/etc/inittab)文件

    1、/sbin/init:(/etc/inittab)

        upstart: ubuntu, d-bus, event-driven

        systemd: 完全并行

    2、/etc/inittab文件

        a)格式:id:runlevels:action:process

    id: 标识符

    runlevels: 在哪个级别运行此行;

    action: 在什么情况下执行此行;

    process: 要运行程序; 

            如:id:3:initdefault:

            如:si::sysinit:/etc/rc.d/rc.sysinit

        b)ACTION状态:

    initdefault: 设定默认运行级别

    sysinit: 系统初始化

    wait: 等待级别切换至此级别时执行

    respawn: 一旦程序终止,会重新启动

        c)si::sysinit:/etc/rc.d/rc.sysinit

            /etc/rc.d/rc.sysinit脚本完成的任务:

    a、激活udev和selinux;

    b、根据/etc/sysctl.conf文件,来设定内核参数;

    c、设定时钟时钟;

    d、装载键盘映射;

    e、启用交换分区;

    f、设置主机名;

    g、根文件系统检测,并以读写方式重新挂载;

    h、激活RAID和LVM设备;

    i、启用磁盘配额;

    g、根据/etc/fstab,检查并挂载其它文件系统;

    k、清理过期的锁和PID文件;

        d)# Run gettys in standard runlevels

    /sbin/mingetty tty#表示启用后面的终端;

    3、/etc/rc.d/rc.sysinit脚本语句

        for I in /etc/rc#.d/K*; do

          $I stop

        done

        for I in /etc/rc#.d/S*; do

          $I start

        done

        a)/etc/rc.d/rc#.d下K*和S*开头的文件都是链接文件,链接的是/etc/rc.d/init.d(/etc/init.d 是/etc/rc.d/init.d的链接文件)下的文件;

        b)#(数字): 关闭或启动的优先次序,数据越小越优先被选定;先关闭以K开头的服务,后启动以S开头的服务;


你可能感兴趣的:(init,inittab,rc.d,rc.sysconfig)