运维工程师面试必须掌握的服务器开机启动过程

举报
rivers 发表于 2021/12/22 22:32:05 2021/12/22
【摘要】 文章目录 Centos 6 系统启动过程Centos 6系统开机过程总结Centos 6 启动相关配置文件 Centos 7 系统启动过程CentOS7引导顺序总结: Centos ...

Centos 6 系统启动过程

  • 加载 BIOS 的硬件信息,跟据设定取得第一个可开机引导设置,如:光驱,硬盘,网络,USB; 如果是硬盘为第一引导。

  • 读取硬盘中 MBR 的 boot Loader 就是 grub引导

  • 依据 boot loader 的设定,到引导分区加载 Kernel ,Kernel 会开始侦测硬件并加载驱劢程序;

  • 在硬件驱动成功后,Kernel 会主动执行 init 程序,而 init 会取得 run-level 信息;

  • init 执行 /etc/rc.d/rc.sysinit 文件来准备软件执行的作业环境 (如网络、时区等);

  • init 执行 run-level 下各个服务并启动 (script 方式);

  • init 执行开机后自动运行脚本 /etc/rc.d/rc.local 文件;

  • init 执行虚拟终端机控制程序 mingetty 来启动 login 程序,最后就等待用户登入啦;

  • 图:
    在这里插入图片描述

Centos 6系统开机过程总结

  • 开机自检–BIOS

  • MBR引导

  • GRUB菜单

  • 加载内核

  • 运行INIT进程

  • 读取/etc/inittab配置文件

  • 执行脚本

  • 启懂mingetty进程,进入登录界面

    • centos 5 、6开机过程差不多的

Centos 6 启动相关配置文件

[root@localhost ~]# vim /boot/grub/grub.conf 

default=0 # 设定默认启动菜单项,当系统中有多个内核时,0表示默认加载第1个,1表示第2个内核
timeout=5  # 菜单项等待选项时间为5s
splashimage=(hd0,0)/grub/splash.xpm.gz # 指明菜单背景图片路径为
hiddenmenu  #  隐藏菜单
title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-431.el6.x86_64.img # 内核匹配的ramfs文件
                                          

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 修改系统启动级别:
    /etc/rc.d/rc.sysinit shell脚本 作用:系统初始化: 像:主机名 和/etc/fstab 都在这里指定了,完成了包括mount分区 激活swap 加载modules等重要的工作.
[root@localhost ~]# vim /etc/inittab 

# Individual runlevels are started by /etc/init/rc.conf
#
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# 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:3:initdefault: #这里决定系统启动的级别
~                 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 启动对应级别下的服务如: init 3 级别
    /etc/rc.d/rc3.d/(这里的程序/服务S开头的全部开机执行;K开头的表示开机不执行,表明了关机时顺序)
lrwxrwxrwx. 1 root root 11 Mar 12 20:03 /etc/init.d -> rc.d/init.d
[root@localhost ~]# 


  
 
  • 1
  • 2
  • 3
[root@localhost ~]# ll /etc/rc.d/rc3.d/|grep network
lrwxrwxrwx. 1 root root 17 Mar 12 20:04 S10network -> ../init.d/network
[root@localhost ~]# 
#表示network是第10个启动的服务。 所以init是顺序启动系统,需要一个一个服务启动成功,再执行下一步操作,启动系统比较慢。而centos7中的systemd可以并行启动多个服务,启动比较快。

  
 
  • 1
  • 2
  • 3
  • 4
[root@localhost ~]# vim /etc/init.d/network
# chkconfig: 2345 10 90   #b表示2345 转态是启动的,10 启动顺气,90关闭顺序
#              start at boot time.

  
 
  • 1
  • 2
  • 3
[root@localhost ~]# chkconfig --list |grep network  #过滤开启启动的网络
network        	0:off	1:off	2:on	3:on	4:on  5:on	6:off
[root@localhost ~]# 

[root@localhost ~]# chkconfig network off #关闭开机自动启
[root@localhost ~]# 


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 所有服务都运行成功后,设置开机自动执行某个命令: /etc/rc.local
[root@localhost ~]# cat /etc/rc.local 
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/bin/nginx start  #开机自动运行某个命令
[root@localhost ~]# 


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Centos 7 系统启动过程

CentOS7引导顺序

  • UEFi或BIOS初始化,运行POST开机自检

  • 选择启动设备

  • 引导装载程序 centos7是grub2

  • 加载装载程序的配置文件

    • /etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg
  • 加载内核选项

  • 加载initramfs初始化伪文件系统

  • 内核初始化,centos7使用systemd代替init

  • 执行initrd.target所有单元,包括挂载/etc/fstab

  • 从initramfs根文件系统切换到磁盘根目录

  • systemd执行默认target配置,配置文件/etc/systemd/system/default.target

  • systemd执行sysinit.target初始化系统及basic.target准备操作系统

  • systemd启动multi-user.target下的本机与服务器服务

  • systemd执行multi-user.target下的/etc/rc.d/rc.local

  • Systemd执行multi-user.target下的getty.target及登录服务

  • systemd执行graphical需要的服务

  • 图片
    在这里插入图片描述

总结:

  • 如果需要图中的思维导图,可以打开以下链接,下载:
  • https://download.csdn.net/download/weixin_42313749/12245342
  • https://download.csdn.net/download/zj15527620802/11435203

文章来源: rivers.blog.csdn.net,作者:宝山的博客,版权归原作者所有,如需转载,请联系作者。

原文链接:rivers.blog.csdn.net/article/details/104832014

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。