设为首页 收藏本站
查看: 282|回复: 0

[经验分享] CentOS 5与6的启动流程

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-25 09:15:58 | 显示全部楼层 |阅读模式
Linux主要组成部分:kernel+rootfs+库+程序
    kernel(内核):进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能等
    rootfs(根文件系统):glibc(库文件)等
    库:函数集合,function,调用接口
        procedure:过程调用,无返回值
        function:函数调用,有返回值
内核设计流派:

    单内核设计:所有功能集成于同一个程序中。例如:Linux
    微内核设计:每种功能使用给一个单独子系统实现。例如:windows,solaris
Linux内核特点:

    支持模块化: .ko
    支持模块的动态装载和卸载
Linux内核组成部分:

    核心文件:/boot/vmlinux-VERSION-release
    ramdisk:辅助装载硬盘驱动
        centos5:模拟成硬盘/boot/initrd-VERSION-resease.img
        centos6:模拟成文件系统/boot/initramfs-VERSION-resease.img   
         QQ截图20160125091541.png          

        模块文件:/lib/modules/VERSION-release/
        QQ截图20160125091548.png                

CentOS 5 系统启动流程
    POST --> Bootsequence(BIOS) --> bootloader(MBR)--> kernel(ramdisk) -->  rootfs(只读) --> /sbin/init --> (/etc/inittab) --> 设置默认运行级别 (id:3:initdefault:) --> 运行系统初始化脚本、完成系统初始化(si::sysinit:/etc/rc.d/rc.sysinit) --> 关闭和启动对应级别写需要关闭的服务(l#:#:wait:/etc/rc.d/rc #) --> 设置登录终端(tty1:2345:respawn:/usr/sbin/mingetty tty1)
        (1) POST:加电自检
        (2) BIOS:Basic Input and Output System
                Boot Sequence:按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到的设备;
        (3) bootloder:引导加载器
                Linux包含两个bootloder,分别为LILO(LInux LOader)和 GRUB(Grand Uniform Bootloader)
                功能:提供一个菜单,允许用户选择要启动系统或不同的内核版本,把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
        (4) kernel:(加载根时必须为只读方式,在系统初始化脚本/etc/rc.d/rc.sysinit中重挂)
                自身初始化:
                    探测可识别到的所有硬件设备
                    加载硬件驱动程序(有可能会借助于ramdisk加载驱动)
                    以只读方式挂载根文件系统(rootfs只读)
                    运行用户空间的第一个应用程序:/sbin/init
                        init程序的类型:
                                SysV:init (CentOS5中使用,配置文件:/etc/inittab)
                            Upstart:init (CentOS6中使用并兼容centos5,配置文件:/etc/inittab,/etc/init/*.conf)
                            systemd:systemd (centos7配置文件:/usr/lib/systemd/system,/etc/systemd/system)
                        ramdisk类型:
                            ramdisk:initrd (centos5系统安装后由mkinitrd生成
                            ramfs:initramfs (centos6系统安装后后由dracut生成)
        (5) /sbin/init

            运行级别:为了系统的运行或维护等应用目的而设定

                0-6:
                #   0 - halt (Do NOT set initdefault to this)
                #   1 - Single user mode
                #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
                #   3 - Full multiuser mode
                #   4 - unused
                #   5 - X11
                #   6 - reboot (Do NOT set initdefault to this)
                    0:关机
                    1:单用户模式(root,无需登录),single,维护级别
                    2:多用户模式:会启动网络功能,但不会启动NFS,维护模式
                    3:多用户模式:正常模式,默认为文本界面
                    4:预留级别:可同3级别
                    5:多用户模式:正常模式:图形界面
                    6:重启
                切换级别:init #

                查看级别:runlevel,who -r
                配置文件:/etc/inittab
                    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
                    每一行定义一种action以及与之对应的process

                    id:runlevel:action:process
                        action:
                        wait:切换至此级别运行一次
                        respawn:此process终止,就重新启动之
                        initdefault:设定默认运行级别:process省略
                        sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit
                        ...
                    note:rc 0-->意味着读取/etc/rc.d/rc0.d/[K*|S*]

                        K*:K##*
                        S*:S##* 链接文件,源文件位于/etc/rc.d/init.d/
                            ##:数字越小越优先,取决于服务的依赖关系
                        按次序终止K开头服务,启动S开头服务

                            for srv in /etc/rc.d/rc0.d/K*;do
                                $srv stop
                            done
                            for srv in /etc/rc.d/rc0.d/S*;do

                                $srv start
                            done
                    chkconfig:管理服务

                        --list :查看所有服务在所有级别的on/off状态
                        --add name:添加SysV类型放置于/etc/rc.d/init.d(/etc/init.d)的服务脚本
                        --del name :删除
                        --level ### name on/off/reset:修改指定级别的链接类型
                            --level:省略为2345
                        7个级别的S或K取决有服务脚本中的chkconfig行

                            #!/bin/bash
                            #
                            #chkconfig:LLL NN nn
                                LLL:哪个级别为S(0-6)

                                NN:S中的次序
                                nn:K中的次序
                    NOTE:正常级别下,最后启动的一个服务S99local不是链接至/etc/rc.d/init.d的一个服务脚本,而是指向于/etc/rc.d/rv/local脚本;因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d目录,且有想开机自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中


                tty1:2345:respawn:/usr/sbin/mingetty tty1
                tty2:2345:respawn:/usr/sbin/mingetty tty2
                tty3:2345:respawn:/usr/sbin/mingetty tty3
                tty4:2345:respawn:/usr/sbin/mingetty tty4
                tty5:2345:respawn:/usr/sbin/mingetty tty5
                tty6:2345:respawn:/usr/sbin/mingetty tty6
                mingetty会自动调用login程序


                tips:
                    /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) 清理操作

CentOS 6的系统启动过程与5大致相同,但其init程序为upstart,其配置文件为/etc/inittab,/etc/init/*.conf,并非单个的/etc/inittab文件。

    [iyunv@localhost init]# ll
    total 68
    -rw-r--r--. 1 root root  412 Apr  9  2015 control-alt-delete.conf
    -rw-r--r--. 1 root root  130 Mar 12  2014 init-system-dbus.conf
    -rw-r--r--. 1 root root  463 Apr  9  2015 kexec-disable.conf
    -rw-r--r--. 1 root root  560 Apr  9  2015 plymouth-shutdown.conf
    -rw-r--r--. 1 root root  357 Apr  9  2015 prefdm.conf
    -rw-r--r--. 1 root root  505 Apr  9  2015 quit-plymouth.conf
    -rw-r--r--. 1 root root  417 Apr  9  2015 rc.conf
    -rw-r--r--. 1 root root 1046 Apr  9  2015 rcS.conf
    -rw-r--r--. 1 root root  430 Apr  9  2015 rcS-emergency.conf
    -rw-r--r--. 1 root root  725 Apr  9  2015 rcS-sulogin.conf
    -rw-r--r--. 1 root root 2915 Nov 23  2013 readahead-collector.conf
    -rw-r--r--. 1 root root 1559 Nov 23  2013 readahead.conf
    -rw-r--r--. 1 root root  726 Nov 23  2013 readahead-disable-services.conf
    -rw-r--r--. 1 root root 1302 Apr  9  2015 serial.conf
    -rw-r--r--. 1 root root  791 Apr  9  2015 splash-manager.conf
    -rw-r--r--. 1 root root  473 Apr  9  2015 start-ttys.conf
    -rw-r--r--. 1 root root  335 Apr  9  2015 tty.conf
    [iyunv@localhost init]#




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-169065-1-1.html 上篇帖子: Linux驱动:内核延时测试 下篇帖子: 硬盘类型和Linux分区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表