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

[经验分享] CentOS系统启动流程

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-3-30 14:12:32 | 显示全部楼层 |阅读模式
一、CentOS系统启动流程图解(本文主要以CentOS 6.7和7.1为例讲解)

wKioL1b594yTE2MfAAUJLt7GbD4934.jpg

      POST-->BootSequence(BIOS)-->Bootloader(MBR)-->Kernel(ramdisk)-->rootfs(readonly)-->/sbin/init()
  说明:上图是Linux系统启动时的详细流程,其中黑色部分为主流程分支,蓝色部分为详细流程分支,绿色部分是注释部分

二、启动详解
1、POST:加电自检
    POST(PowerOnSelfTest)首先对每一个设备进行检查。完成后会寻找存有引导记录的设备,找到后读入操作系统引导记录,然后将系统控制权交给引导记录,并由引导记录来完成系统的顺利启动。

   BOOT Sequence: 按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用的设备
,一般电脑是按"F2"或"Del"键等等进入BIOS,在里面我们可以调整硬盘的启动顺序。

    wKiom1b6FrfA-MLvAAAvW1lXO4k953.jpg

2、MBR引导

MBR(Master Boot Record) MBR记录一般是在磁盘 0 磁道 1 扇区,共512个字节。前446个字节是BootLoder,后 4*16 的 64 个字节是存放分区信息的,最后 2 个字节是校验信息,一般是 55AA。


  3.GRUP引导阶段


     这时候就可以看到我们的Centos系统了,但是一般都不需要操作,会自动启动系统。其实我们也可以自己手动启动系统的


  3.1 手动在grub命令行接口启动系统:


      grub> root (hd#,#)

      grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE

      grub> initrd /initramfs-VERSION-RELEASE.img

grub> boot


  3.2 grub的命令行接口:


              e: 编辑模式,用于编辑菜单;

     c: 命令模式,交互式接口;

  help: 获取帮助列表

  help KEYWORD: 详细帮助信息

  find (hd#,#)/PATH/TO/SOMEFILE:

  root (hd#,#) 设定grup的根设备

  kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数;

     例如:init=/path/to/init, selinux=0


  initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件ramdisk;

  boot: 引导启动选定的内核;


3.3 配置文件:/boot/grub/grub.conf

      配置项:

default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;

timeout=#:指定菜单项等待选项选择的时长;

splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;

hiddenmenu:隐藏菜单;

password [--md5] STRING: 菜单编辑认证;

title TITLE:定义菜单项“标题”, 可出现多次;用来引导多个内核或者操作系统

         root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”;

kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核

initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件;

password [--md5] STRING: 启动选定的内核或操作系统时进行认证


  4、kernel阶段

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

5、启动 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


init 进程是系统启动的第一个进程。其他进程都是有此进程控制fork出来的,也就是说,init是其他进程的“祖先”,PID=1。当然,PID=0进程我们称为空闲进程是属于内核的。


init启动后所做的事情:

1、读取/etc/inittab来读取默认级别 假设:读取到的默认级别是 3

   wKiom1b6G-eRQiR9AAAX5HH9nL4727.jpg


2、执行初始化系统脚本 /etc/rc.d/rc.sysinit 来初始化脚本

这个大家有机会可以读读,脚本主要的作用如下:

wKioL1b6HMfReP5bAABFKKqOKCA616.jpg


3、然后执行 /etc/rc.d/rc 脚本

此脚本运行的时候此脚本的时候,会读取/etc/rc.d/rc3.d/下的所有脚本,来控制系统启动的时候启动或者关闭那些服务


wKiom1PSA-mDbCDSAAZ9kiqbBP4645.jpg

wKiom1b6HTCzbgjlAAAVZpOpADc483.jpg

这些脚本是否开机自启动,可由 chkconfig 命令来管理。


wKiom1b6HWmyUDj6AAAaW1Xd4Gg426.jpg

4、执行/etc/rc.d/rc.local脚本,此脚本是启动过程中最后启动的一个脚本。

最后会执行 /bin/login 登录用户。至此系统启动过程完成。




运维网声明 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.yunweiku.com/thread-197693-1-1.html 上篇帖子: CentOS6.5下安装rzsz 下篇帖子: Linux中的sed详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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