note_14.1_CentOS系统启动流程

CentOS系统启动流程

  • Linux系统的组成部分:内核+根文件系统

    • 内核:进程管理、内存管理、网络协议栈、文件系统、驱动程序、安全功能
    • IPC:Inter Process Communication
      消息队列、semerphor、shm
      socket
  • 运行中的系统环境可分为两层:内核空间、用户空间

    • 用户空间:应用程序(进程或线程)
    • 内核空间:内核代码(系统调用)
  • 内核设计流派:

    • 单内核设计:把所有功能集成于同一个程序;
      Linux
    • 微内核设计:每种功能使用一个单独的子系统实现;
      Windows, Solaris
  • Linux内核特点:
    支持模块化: .ko (kernel object)
    支持模块运行时动态装载或卸载;

    • 组成部分:
      • 核心文件:/boot/vmlinuz-VERSION-release
        ram disk:
        • CentOS 5:/boot/initrd-VERSION-release.img
        • CentOS 6,7:/boot/initramfs-VERSION-release.img
      • 模块文件:/lib/modules/VERSION-release

CentOS 系统的启动流程:

  • POST(Power On Self Test):加电自检;

    • ROM:CMOS
      BIOS:Basic Input and Output System

    • ROM+RAM

  • Boot Sequence:
    按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备;

    • bootloader:引导加载器,程序;
      Windows:ntloader
      Linux:
        LILO:LIinux LOader
        GRUB:Grand Uniform Bootloader
          GRUB 0.X:Grub Legacy
          GRUB 1.X:Grub2

      功能:提供一个菜单,允许用户选择要启动的系统或不同的内核版本; 把用户选定的内核装载到RAM中的特定空间中,解压、展开,而后把系统控制权移交给内核;

      • MBR:Master Boot Record
        512bytes:
          446bytes:bootloader
          64bytes:fat (file allocation table)
          2bytes:55AA

      • GRUB:
        bootloader:1st stage
        Partition:filesystem driver, 1.5 stage
        Partition:/boot/grub, 2nd stage

        注意:UEFI,GPT

  • Kernel:

    • 自身初始化:
      探测可识别到的所有硬件设备;
      加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)
      以只读方式挂载根文件系统;
      运行用户空间的第一个应用程序:/sbin/init

      • init程序的类型:
        CentOS 5:SysV init
          配置文件:/etc/inittab
        CentOS 6:Upstart
          配置文件:/etc/inittab
           /etc/init/*.conf
        CentOS 7:Systemd
          配置文件:/usr/lib/systemd/system/, /etc/systemd/system/

      • ramdisk:
        Linux内核的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问;
        ramdisk --> ramfs

      CentOS 5: initrd
        工具程序:mkinitrd
      CentOS 6,7: initramfs
        工具程序:dracut, mkinitrd

系统初始化流程(内核级别): POST --> BootSequence(BIOS) --> BootLoader(MBR)--> Kernel(ramdisk)--> rootfs(readonly)--> /sbin/init ()


/sbin/init

  • CentOS 5: SysV init
    运行级别:为了系统的运行或维护等目的而设定的机制;
    • 0-6:7个级别;
      0:关机, shutdown
      1:单用户模式(single user),root用户,无须认证;维护模式;
      2、多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式;
      3、多用户模式(mutli user),完全功能模式;文本界面;
      4、预留级别:目前无特别使用目的,但习惯以同3级别功能使用;
      5、多用户模式(multi user), 完全功能模式,图形界面;
      6、重启,reboot

      默认级别:3, 5
      级别切换:init #
      级别查看:
        who -r
        runlevel

    • 配置文件:/etc/inittab
      每行定义一种action以及与之对应的process
        id:runlevels:action:process
          id:一个任务的标识符;
          runlevels:在哪些级别启动此任务;#,###,也可以为空,表示所有级别;
          action:在什么条件下启动此任务;
          process:任务;

      • action:
        wait:等待切换至此任务所在的级别时执行一次;
        respawn:一旦此任务终止,就自动重新启动之;
        initdefault:设定默认运行级别;此时,process省略;
        sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本;

        例如:
        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

      意味着去启动或关闭/etc/rc.d/rc3.d/目录下的服务脚本所控制服务;
      K*:要停止的服务;K##*,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的;
      S*:要启动的服务;S##*,优先级,数字越小,越是优先启动;被依赖的服务先启动,而依赖的服务后启动;

    • rc脚本:接受一个运行级别数字为参数;

      脚本框架:

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

      /etc/init.d/* (/etc/rc.d/init.d/*)脚本执行方式:
        # /etc/init.d/SRV_SCRIPT {start|stop|restart|status}
        # service SRV_SCRIPT {start|stop|restart|status}


chkconfig命令

管控/etc/init.d/每个服务脚本在各级别下的启动或关闭状态;

查看:chkconfig --list [name]
添加:chkconfig --add name

能被添加的服务的脚本定义格式之一:

#!/bin/bash
#
# chkconfig: LLL  NN NN
# description:  

删除:chkconfig --del name
修改指定的链接类型:
chkconfig [--level LEVELS] name <on|off|reset>
  --level LEVELS:指定要控制的级别;默认为2345;

注意:正常级别下,最后启动的一个服务S99local没有链接至/etc/init.d下的某脚本,而是链接至了/etc/rc.d/rc.local (/etc/rc.local)脚本;因此,不便或不需写为服务脚本的程序期望能开机自动运行时,直接放置于此脚本文件中即可。

tty1:2345:respawn:/usr/sbin/mingetty tty1
... ...
tty6:2345:respawn:/usr/sbin/mingetty tty6   

(1)mingetty会调用login程序;
(2)打开虚拟终端的程序除了mingetty之外,还有诸如getty等;


系统初始化脚本:/etc/rc.d/rc.sysinit

  1. 设置主机名;
  2. 设置欢迎信息;
  3. 激活udev和selinux;
  4. 挂载/etc/fstab文件中定义的所有文件系统;
  5. 检测根文件系统,并以读写方式重新挂载根文件系统;
  6. 设置系统时钟;
  7. 根据/etc/sysctl.conf文件来设置内核参数;
  8. 激活lvm及软raid设备;
  9. 激活swap设备;
  10. 加载额外设备的驱动程序;
  11. 清理操作;

总结(用户空间的启动流程): /sbin/init (/etc/inittab)
设置默认运行级别 --> 运行系统初始化脚本,完成系统初始化 --> 关闭对应级别下需要停止的服务,启动对应级别下需要开启的服务--> 设置登录终端 [--> 启动图形终端]


  • CentOS 6:
    init程序:upstart,但依然为/sbin/init
    其配置文件:
      /etc/init/*.conf, /etc/inittab(仅用于定义默认运行级别)

    注意:*.conf为upstart风格的配置文件;
      rcS.conf
      rc.conf
      start-ttys.conf

  • CentOS 7:
    init程序:systemd,配置文件:/usr/lib/systemd/system/, /etc/systemd/system/

    完全兼容SysV脚本机制;因此,service命令依然可用;不过,建议使用systemctl命令来控制服务;

    # systemctl {start|stop|restart|status} name[.service]

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