CentOS 5,6 系统启动流程详解

    一、linux 组成介绍

         1.linux 组成:

             Linux: kernel+rootfs(根文件系统)

                kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能

                rootfs: 程序和glibc

                库:函数集合, function, 调用接口(头文件负责描述)

                过程调用: procedure,无返回值

                函数调用: function

                程序:二进制执行文件

         2.内核设计流派:

            单内核(monolithic kernel): Linux

                把所有功能集成于同一个程序

            微内核(micro kernel): Windows, Solaris

                每种功能使用一个单独子系统实现

        

        3. Linux内核特点:

                支持模块化: .ko(内核对象)

                如:文件系统,硬件驱动,网络协议等

                支持内核模块的动态装载和卸载

             组成部分:

                核心文件: /boot/vmlinuz-VERSION-release (出厂时,直接从光盘中拷贝而得)

                ramdisk:辅助的伪根系统

                (包含各类驱动,以供启动时加载真正的根文件系统)

                /boot/initramfs-######.img   (系统安装之时才会生成)

            CentOS 5,6 系统启动流程详解

            e23bb6978458453397f31764d16dc60f.jpg

      =============================================================================================================

            

        centos 6.8-initramfs-2.6.32-642.el6.x86_64.img  简析:

            CentOS 5,6 系统启动流程详解315917dbfc364fe1927a0cc50e384af6.jpg

            (initramfs-2.6.32-642.el6.x86_64.img 以gzip格式压缩,解压时候,需要在尾部添加.gz后缀)

            解压后:

            CentOS 5,6 系统启动流程详解a0681fc8d1d04b84ba883327b2192b41.jpg

            使用cpio 解压: (  cpio -id < initramfs-2.6.32-642.el6.x86_64.img.cpio)

            CentOS 5,6 系统启动流程详解1a39ed0610614f7e866e249cec8effc7.jpg

            initramfs 作为临时伪根文件系统,有类似于根的各类所需文件、驱动,可供启动时候加载真正的根文件系统

      ==============================================================================================================

            

        

            CentOS 5: /boot/initrd-VERSION-release.img

                    修复:

                    救援模式下,

                    chroot /mnt/sysimage

                    cd /boot

                    mkinitrd initrd-`uname -r`.img  `uname -r`     (centos5 )

                    (第二个uname -r ,是作为initrd 的参数)

                    exit 

            CentOS 6,7: /boot/initramfs-VERSION-release.img

                    修复: (centos 6 )

                    救援模式下,

                    chroot /mnt/sysimage

                    cd /boot

                    mkinitrd initramfs-`uname -r`.img  `uname -r`    (centos6)

                    exit 

           

            ( centos 7 需要进入grub 修复:)

            模块文件: /lib/modules/VERSION-release

                命令补充:   lsmod 查看加载的模块;

                        moinfo 查看指定模块信息

                        modprobe 加载模块;

                        rmmod  / modprobe -r  卸载模块

            CentOS 5,6 系统启动流程详解

       ===============================================================================================================

二、linux 系统启动流程详解:

         1. Centos  6  启动流程

            CentOS 5,6 系统启动流程详解27b38a54c18c47e1939b71bc855584ff.jpg

           

         2. centos6 启动流程

                    1.加载BIOS的硬件信息,获取第一个启动设备。

                    2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息

                    3.加载核心操作系统的核心信息,核心开始解压缩,(加载initramfs.img)并尝

                    试驱动所有的硬件设备。

                    4.核型执行init程序并获取运行信息。

                    5.Init执行/etc/rc.d/rc.sysinit文件。

                    6.启动核心的外挂模块(/etc/modprobe.conf)。

                    7.Init执行运行的各个批处理文件(scripts).

                    8.Init执行/etc/rc.d/rc.local. (出现登陆界面)

                    9.执行/bin/login程序,等待用户登录。

                    10.登录之后开始以Shell控制主机。

            

        3.  启动流程详解:

             系统整体初始化流程:

                POST –> BootSequence (BIOS) –>

                Bootloader(MBR) –>(进入/boot) kernel(ramdisk) –> rootfs(只读) —

                > init( systemd)

             POST: Power-On-Self-Test,加电自检,是BIOS功能的一个主要部

                分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、 串并行接

                口、键盘、 CD-ROM光驱等硬件情况的检测。

             ROM: BIOS, Basic Input and Output System,保存着有关计

                算机系统最重要的基本输入输出程序,系统信息设置、 开机加电自检程序和

                系统启动自举程序等。

                 RAM: CMOS互补金属氧化物半导体,保存各项参数的设定

                按次序查找引导设备,第一个有引导程序的设备为本次启动设备

             bootloader: 引导加载器,引导程序 (MBR第一个扇区)

                windows: ntloader,仅是启动OS

                Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内

                    核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把

                    系统控制权移交给内核

                    LILO: LInux LOader(早期)

                    GRUB: GRand Unified Bootloader

                    GRUB 0.X: GRUB Legacy, GRUB2

             MBR:

                446: bootloader, 64: 分区表, 2: 55AA

                (446字节内可寻找到bootloader所在盘区)

             GRUB:(grub 目录下,存放着各阶段的备份文件)

                    primary boot loader :

                        1st stage–》 加载bootloader

                        1.5 stage–> 进入/boot目录,加载vmlinux,initramfs

    

                    secondary boot loader :

                        2nd stage, 读取分区根文件系统

             kernel:

                自身初始化:

                    探测可识别到的所有硬件设备

                    加载硬件驱动程序(可能借助于ramdisk加载驱动)

                    以只读方式挂载根文件系统

                    运行用户空间的第一个应用程序: /sbin/init

           4.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

                 ramdisk:

                    内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问

                    ramdisk –> ramfs 提高速度

                    CentOS 5: initrd, 工具程序: mkinitrd

                    CentOS 6: initramfs, 工具程序: mkinitrd,  dracut(实际调用文件)

         5. 运行级别

                 运行级别配置路径: /sbin/init   (CentOS 5 )

                    (/etc/inittab 下可以定义默认启动界面A)

                 运行级别:为系统运行或维护等目的而设定; 0-6: 7个级别

                    0:关机

                    1:单用户模式(root自动登录), single, 维护模式

                    2: 多用户模式,启动网络功能,但不会启动NFS;维护模式

                    3:多用户模式,正常模式;文本界面

                    4:预留级别;可同3级别

                    5:多用户模式,正常模式;图形界面

                    6:重启

                 默认级别: 3, 5

                 切换级别: init #

                 查看级别: runlevel ; who -r


             6.init 初始化过程详解

                1) init 初始化流程:

                    init读取其初始化文件: /etc/inittab

                    初始运行级别(RUN LEVEL)

                    系统初始化脚本

                    对应运行级别的脚本目录

                    捕获某个关键字顺序

                    定义UPS电源终端/恢复脚本

                    在虚拟控制台生成getty

                    在运行级别5初始化X

                2) CentOS5的inittab文件详解:

                     配置文件路径: /etc/inittab

            ———————————————————————————-

            Centos 5.4 —–/etc/inittab:

            # inittab       This file describes how the INIT process should set up

            #               the system in a certain run-level.

            #

            # Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>

            #               Modified for RHS Linux by Marc Ewing and Donnie Barnes

            #

            # Default runlevel. The runlevels used by RHS are:

            #   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)

            #

            id:5:initdefault:

            # System initialization.

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

            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

            # Trap CTRL-ALT-DELETE

            ca::ctrlaltdel:/sbin/shutdown -t3 -r now

            # When our UPS tells us power has failed, assume we have a few minutes

            # of power left.  Schedule a shutdown for 2 minutes from now.

            # This does, of course, assume you have powerd installed and your

            # UPS connected and working correctly.

            pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

            # If power was restored before the shutdown kicked in, cancel it.

            pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown

            Cancelled"

            # Run gettys in standard runlevels

            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

            # Run xdm in runlevel 5

            x:5:respawn:/etc/X11/prefdm -nodaemon

            ———————————————————————————

           

            centos 6—–/etc/inittab:

            # Default runlevel. The runlevels used are:

            #   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)

            #

            id:5:initdefault:

            ——————————————————————————————

             每一行定义一种action以及与之对应的process

            id:runlevel:action:process

            id:它是每个登记项的标识符,用于唯一标识每个登记项,不能重复

            runlevels:系统的运行级别,表示process的action要在哪个级别下运行,该段中可以定义多个运行级别,

                  各级别之间直接写不用分隔符;如果为空,表示在所有的运行级别运行。Linux的运行级别有:

                        0:表示关机

                        1:表示单用户模式,在这个模式中,用户登录不需要密码,默认网卡驱动是不被

                        加载,一些服务不能用。

                        2:表示多用户模式,NFS服务不开启

                        3,表示命令行模式

                        4,这个模式保留未用

                        5,表示图形用户模式

                        6,表示重启系统


            action:表示对应登记项的process在一定条件下所要执行的动作。

                具体动作有:

                     respawn:当process终止后马上启动一个新的

                wait:当进入指定的runlevels后process才会启动一次,并且到离开这个

                runlevels终止

                initdefault:设定默认的运行级别,即我们开机之后默认进入的运行级别,

                        不能是0,6

                sysinit:系统初始化,只有系统开机或重新启动的时候,

                        这个process才会被执行一次

                 powerwait:当init接收到电源失败信号的时候执行相应的process,

                     并且如果init有进程在运行,会等待这个进程完成之后,再执行相应的process

                            powerfail:当init接收到电源失败信号的时候执行相应的process,并且如果

                      init有进程在运行,不会等待这个进程完成,它会直接执行相应的process

                powerokwait:电源已经故障,但是在等待执行对应操作的时候突然来电了就执行对应

                        的process

                powerfailnow:当电源故障并且init被通知UPS电源已经快耗尽执行相对应的process

                ctrlaltdel:当用户按下ctrl+alt+del这个组合键的时候执行对应的process

                boot:只有在引导过程中,才执行该进程,但不等待该进程的结束;当该进程死亡时,

                    也不重新启动该进程

                bootwait:只有在引导过程中,才执行该进程,并等待进程的结束;当该进程死亡时,

                    也不重新启动该进程

                off:如果process正在运行,那么就发出一个警告信号,等待20秒后,

                    再通过杀死信号强行终止该process。如果process并不存在那么就忽略该登记项

                once:启动相应的进程,但不等待该进程结束便继续处理/etc/inittab文件中的下一个

                    登记项;当该进程死亡时,init也不重新启动该进程

             process:表示启动哪个程序或脚本或执行哪个命令等


            —————————————————————————————–

            centos 5.4 –/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

            ca::ctrlaltdel:/sbin/shutdown -t3 -r now  #定义快捷键操作

            # 按下快捷键3秒后重启系统

            ——————————————————————————————

              3)  CentOS6 /etc/inittab和相关文件

            CentOS6中,已经不再定义其他内容,进有默认开机启动流程,转用下列脚本来完成

              原有执行操作

                 /etc/inittab

                    设置系统默认的运行级别

                    id:3:initdefaut:

                    /etc/init/control-alt-delete.conf    # 定义快捷键操作

                    /etc/init/tty.conf   #tty 终端配置脚本

                    /etc/init/start-ttys.conf       #登录脚本

                    /etc/init/rc.conf #运行级别配置脚本

                    /etc/init/prefdm.conf     #定义级别5中的图形界面启动的脚本

               4) /etc/rc.d/rc.sysinit

                    /etc/rc.d/rc.sysinit: 在所有运行级别下,init 依赖/rc.sysinit 进行系统初始化

                    作用:

                    (1) 设置主机名

                    (2) 设置欢迎信息

                    (3) 激活udev和selinux

                    (4) 挂载/etc/fstab文件中定义的文件系统

                    (5) 检测根文件系统,并以读写方式重新挂载根文件系统

                    (6) 设置系统时钟

                    (7) 激活swap设备

                    (8) 根据/etc/sysctl.conf文件设置内核参数

                    (9) 激活lvm及software raid设备

                    (10) 加载额外设备的驱动程序

                    (11) 清理操作

            5)rc 脚本

                 说明: rc N –> 意味着读取/etc/rc.d/rcN.d/下脚本

                    (服务若在指定模式下为开启,在对应级别的rc#.d 中,为S开头,反之为K开头)

                    (K/S后以字符顺序排列)

                    (目录下全部文件均为软链接,源为init.d下的对应脚本)

                    K*: K##*: ##运行次序;数字越小,越先运行;数字

                    越小的服务,通常为依赖到别的服务

                    S*: S##*: ##运行次序;数字越小,越先运行;数字

                    越小的服务,通常为被依赖到的服务

                    s|k 开头脚本内容示例:

                    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

      =================================================================================================================================

    三、chkconfig命令

                chkconfig命令

                (设置开启 | 关闭状态后,会在对应级别中生成 s| k 开头的服务文件)

                查看服务在所有级别的启动或关闭设定情形:

                chkconfig [–list] [name]

             添加:(可添加自编服务脚本)

                1.SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)

                (无需在结尾添加.sh)

                2.服务脚本内容示例:

                CentOS 5,6 系统启动流程详解6e63376f88014baaa411a633fba108e0.jpg

                    #!/bin/bash

                    # chkconfig: LLLL nn mm

                    #LLLL 表示初始在哪个级别下启动, -表示都不启动

                     nn : 启动顺序号(建议自编服务号为较大数字)

                    mm : 关闭时的顺序号

                3.chmod +x …..

                4.chkconfig –add service_name

                5.service ## start 即可测试添加服务脚本

             删除:

                chkconfig –del name

            

             修改指定的链接类型

                chkconfig [–level levels] service_name <on|off|reset>

                –level LLLL: 指定要设置的级别;省略时表示2345

                eg:

                chkconfig –level 5 atd on | off

             ntsysv命令 :(交互式服务调整,一次只能进入一个模式,默认为当前模式)

                    –level=#  可进入指定模式下调整

            CentOS 5,6 系统启动流程详解1d206eb76d63431d98235540f00bb615.jpg

   =====================================================================================================================================

   四、xinetd管理服务与自定义服务

           (xinetd: 超级守护进程 , 7已经取消,仅在5、6中还存在)

            配置文件: /etc/xinetd.conf

            瞬态( Transient)服务(非独立服务,不可独立工作)被xinetd进程所管理:

                启动|关闭:  由xinetd 检查chkconfig中对应服务配置,管理其自启动状态

                工作(监听):  依赖于xinetd运行,对应服务的请求,首先被xinetd代理监听,

                        xinetd收到请求才唤醒对应服务

            chkconfig –list 中 xinetd 管理的瞬态服务项目:

                CentOS 5,6 系统启动流程详解

CentOS 5,6 系统启动流程详解

                修改服务自启动:/etc/xinetd.d/<service>:

                修改disable 即可

                CentOS 5,6 系统启动流程详解CentOS 5,6 系统启动流程详解

                或者使用chkconfig 开启也可以。

                与libwrap.so文件链接

                用chkconfig控制的服务:

                    chkconfig tftp on

            service 命令:手动管理服务

                service 服务 start|stop|restart

                service –status-all

   ==========================================================================================================================================

    五、/etc/rc.d/rc.local脚本

             注意:正常级别下,最后启动一个服务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在指定运行级别脚本后运行

                • 可以根据情况,进行自定义修改

            centos 5—tty 终端配置(/etc/inittab中的内容)

                 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

          

    六、破解root口令

            启动菜单–》 按“a”–> 输入: 1|S |s |single –>进入单用户模式(root) ,此模式下,直接以root身份登录,

            且无需输入密码,使用passwd命令即可修改密码

        

           

            

原创文章,作者:ldt195175108,如若转载,请注明出处:http://www.178linux.com/45442

(0)
ldt195175108ldt195175108
上一篇 2016-09-11
下一篇 2016-09-11

相关推荐

  • 浅谈正则表达式

    1.       什么是正则表达式 基本说来,正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express。本文将用<<regex>>来表示一段具体的正则表达式。 一段文本就是最基本的模式,简单的匹配相同的文本。   2. &n…

    Linux干货 2016-08-12
  • 网络模型知识点概括

       网络模型分层 应用层 网络进程访问表示层 数据表示会话层 主机间通信传输层 端到端连接网络层 数据传输   数据链路层 访问介质物理层 物理线缆二进制封包与解封从下至上封包加包头通过上层协议传给对方机器,对方机器接受后需要从上至下拆解包头,这个过程叫解封三种通讯模式单播广播组播局域网:由服务器-》交换机-》pc …

    Linux干货 2017-05-02
  • 玩转linux之启动篇

        想要玩转linux,首先明白其启动流程,这里简单说明一下: CentOS 6启动流程:    POST –> Boot Sequence(BIOS) –> Boot Loader –> Kernel(ramdisk) –> roo…

    Linux干货 2016-09-26
  • 基于mysql数据库的日志分析系统

    现如今,日志已经成为了我们分析系统及相关服务的一个重要工具。而日志也具有其相对较为固定的格式以便于进行统计查询。其大致格式如下: 日期时间            主机      &…

    Linux干货 2016-10-23
  • vim编辑器的使用

    vim          vim是一个类似于vi的文本编辑器,不过在vi的基础上增加了很多功能,在早起vim和Emacs编辑器打的很火热,在1999年被linuxwork文本编辑分类的优胜者,而vim屈居第二,但2000年vim赢得了salashdot beanie的最佳开放源代…

    系统运维 2016-08-09
  • 马哥教育网络21期+第八周练习博客

    马哥教育网络21期+第八周练习博客 # 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器:工作于ISO模型的物理层,防止由于距离远,信号衰减; 网桥:用来连接不同网段,隔离冲突域; 二层交换机:二层交换机一般做为了三层交换机以下,利用设备mac地址进行通信,可以划分vlan,隔离广播域; 三层交换机:用于核心数据转发,不…

    Linux干货 2016-09-05

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-20 10:00

    文章内容很充实了,需要在逻辑上进行一个层次化的梳理,否者整个给人的感觉太凌乱了。