美文网首页
Centos 5 系统启动流程

Centos 5 系统启动流程

作者: 逢场作戏_6fb9 | 来源:发表于2017-07-08 19:14 被阅读0次
    • POST-->BootSequence(BIOS)-->Bootloader(MBR)-->kernel(ramdisk)-->rootfs(只读) --> /sbin/init --> (/etc/inittab) --> 设置默认运行级别 --> 运行系统初始化脚本、完成系统初始化 --> 关闭对应下需要关闭的服务,启动需要启动的服务 --> 设置登录终端
    1. POST:加电自检
        ROM:COMS
            BIOS:Basic Input and Output System
    2. BOOT Sequence:
        按次序查找各引导设备,第一个有引导程序的设备即为本次启动
    用到设备;
    3. bootloader:引导加载器程序
        windows:ntloader
        Linux:
            LTLO:Linux LOader
            GRUB:GRand Uniform Bootloader
                GRUB 0.x:GRUB Legacy
                GRUB 1.x:GRUB2
        功能:提供一个菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核;
        
        
    4. 引导加载器程序(GRUB/GRUB2):
        bootloager:1st stage
        disk:2nd stag
    
        MBR:
            446:bootloader
            64:fat
            2:55AA
    5. kernel:
        自身初始化:
            探测可识别到的所有硬件设备
            加载硬件驱动程序:(有可能会借助于ramdisk加载驱动)
            以只读方式挂载根文件系统
            运行用户空间的第一个应用程序:/sbin/init
        ramdisk:
            内核中的特性之一:使用缓冲和缓存来回是对磁盘上的文件访问:
                ramdisk --> ramfs 
                Centos 5:initrd,工具程序mkinitrd
                    
                Centos 6:initramfs,工具程序:mkinitrd,dracut
    6. 运行init程序        
        init程序的类型:
            SysV:init,Centos 5
            配置文件:/etc/inittab
                Upstart:init Centos 6
            配置文件:/etc/inittab,/etc/init/*.conf
                Systemd:systemd Centos 7
            配置文件:/etc/lib/systemd/system,/etc/systemd/system 
            
                    
        Centos 5:运行级别:为系统运行或维护等目的而设定;0-6:7个级别
            0:关机
            1:单用户模式(root自动登录),single,维护模式
            2:多用户模式,启动网络功能,但不会启动NFS;维护模式
            3:多用户模式,正常模式;文本界面
            4:预留级别;可同3级别
            5:多用户模式,正常模式;图形界面
            6:重启
            
            默认级别:3,5
            切换级别:init #
            查看级别:runlevel;who -r
    7. 运行系统初始化脚本:
        系统初始化脚本对应的文件是/etc/rc.d/rc.sysinit    
        
        /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)清理操作
        配置文件:/etc/inittab
            每一行定义一种action以及与之对应的process
                id:runlevel:action:process
                    action:
                    wait:切换至此级别运行一次
                    respawn:此process 终止,就重新启动之
                    initdefault:设定默认运行级别;process省略
                    sysinit:设定系统初始化方式,此处一般为指定
                        /etc/rc.d/rc.sysinit
                    .....
                ca::ctrlaltdel:/sbin/shutdown -t3 -r now
                
                id:3:initdefault:    默认运行级别为3
                si::sysinit:/etc/rc.d/rc.sysinit
                l0:0:wait:/etc/rc.d/rc 0    运行0级别
                l1:1:wait:/etc/rc.d/rc 1... 运行1级别
                l6:6:wait:/etc/rc.d/rc 6    运行6级别
                
                说明:rc N --> 意味着读取/etc/rc.d/rcN.d/
                    K*:K##*:## 运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务
                    S*:S##*:## 运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务
                    
                    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
            
    8. 启动系统服务
        centos6下的系统服务脚本都放在/etc/rc.d/init.d或者/etc/init.d中,可以看到两个文件中的内容是一样的,因为/etc/init.d链接到了/etc/rc.d/init.d中  
        
        通过chkconfig命令可以查看什么系统级别下开启了哪些服务,以及添加服务到系统中并在指定级别下启动
    
        添加chkconfig --add 服务名,在添加的时候需要将对应的服务放入/etc/init.d中,并在服务脚本中加入chkconfig: LLLL nn nn
            写到LLLL的init级别就是S的,没写得就是K的,第一个nn代表S的数字,第二个nn代表K的数字
    
        chkconfig --add httpd  添加httpd服务到chkconfig
    
        chkconfig --del httpd  将httpd从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在指定运行级别脚本后运行
        
            定义启动程序(默认系统上有6个启动终端):
                tty1:2345:respawn:/usr/sbin/mingetty tty1    2345运行级别,respawn为关闭之后自动开启选项 
                tty2:2345:respawn:/usr/sbin/mingetty tty2
                ...
                tty6:2345:respawn:/usr/sbin/mingetty tty6
                
                    mingetty会自动调用login程序
                x:5:respawn:/etc/X11/prefdm -nodaemon  图形界面
        
    9. 打印登录提示符
    10.总结
        系统的启动流程总的来说分成以下几个步骤:
    
            1、加电自检
            2、按照BIOS中设置的Boot Sequence查找有bootloader程序的设备
            3、加载MBR中的bootloader程序GRUB
            4、进入GRUB设置的默认kernel
            5、kernel初始化
            6、运行init程序
            7、运行系统初始化脚本
            8、启动对应服务
            9、打印登录提示符    
        
        
        
        POST-->BootSequence(BIOS)-->Bootloader(MBR)-->kernel(ramdisk)-->rootfs(只读) --> /sbin/init --> (/etc/inittab) --> 设置默认运行级别 --> 运行系统初始化脚本、完成系统初始化 --> 关闭对应下需要关闭的服务,启动需要启动的服务 --> 设置登录终端
    
    /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)清理操作
    

    chkconfig命令

    查看chkconfig --list
    
    查看服务在所有级别的启动或关闭设定情形:      
        chkconfig [--list] [name]
    添加:
        SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)
                
        chkconfig --add name
            #!/bin/bash
            # chkconfig: LLLL nn nn  第一个nn表示S启动文件的序号,第二个nn表示K关闭文件的序号
                #LLLL 表示初始在哪个级别下启动,即为S的级别,- 表示都不启动
    删除:
        chkconfig --del name
    修改指定的链接类型
        chkconfig [--level levels] name <on|off|reset>
            --level LLLL:  指定要设置的级别;省略时表示2345
    示例:    
        ntsysv图形化修改服务开机启动与关闭,即同步/etc/rc#.d/*下的所有链接文件名
        ntsysc --level=3 图形化打开运行模式3的开机服务启动设置界面
        chkconfig --list atd(服务)  显示std服务在各个模式下的开机启动状态
        chkconfig --list atd(服务) on   运行模式2,3开机启动atd服务   
        chkconfig --level 模式 服务 on/off   设置运行模式的某服务的开机启动与关闭  
        chkconfig --add testsrv  将testsrv服务文件添加进chkconfig
        chkconfig --del testsrv  将testsrv服务文件从chkconfig中删除
        
        注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d 一个服务脚本,而是指向了/etc/rc.d/rc.local脚本,不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中
    

    相关文章

      网友评论

          本文标题:Centos 5 系统启动流程

          本文链接:https://www.haomeiwen.com/subject/kajjhxtx.html