Centos5、6启动流程

Centos 5 系统启动流程

  • 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 6

POST-->BootSequence(BIOS)-->Bootloader(MBR)-->kernel(ramdisk)-->rootfs(只读) --> /sbin/init --> (/etc/inittab,/etc/init/*.conf) --> 设置默认运行级别 --> 运行系统初始化脚本、完成系统初始化 --> 关闭对应下需要关闭的服务,启动需要启动的服务 --> 设置登录终端

init程序为:upstart,其配置文件:
    /etc/inittab,/etc/init/*.conf
    
    注意:/etc/init/*.conf文件语法遵循upstart配置文件语法格式

启动系统时,设置其运行级别1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容