Centos 6 、Centos 7 系统启动原理 您所在的位置:网站首页 centos6开机启动流程 Centos 6 、Centos 7 系统启动原理

Centos 6 、Centos 7 系统启动原理

2023-03-11 05:03| 来源: 网络整理| 查看: 265

CentOS 6

CentOS6 系统启动过程及相关配置文件

开机加电自检

加电自检,是计算机硬件设备主板上的 BIOS 程序的一个功能,其作用是设备加电后检查所有设备是否可用,并且将最终检测记过通过显示器或 LED 设备显示出来。

磁盘分区表引导

通过 BIOS 确定引导哪一个存储设备后,则尝试引导该设备上的分区表,有可能是 MBR 也有可能是 GPT(不会是LVM),不管哪一个都将其中的代码加载到内存中,并运行起来。

磁盘从外圈开始读取:先读先写,外圈磁盘连续长

grub 菜单引导

grub(GRand Unified Bootloade)是一个菜单引导程序,可以实现单系统或者多系统的选择功能,目前 CentOS 6 中仍旧使用 grub 来引导操作系统的内核。

default:定义默认启动的操作系统

timeout:定义选择操作系统菜单的等待时间

splashimage:指定我们选择 kernel 或操作系统菜单后面那张图片。

hiddenmenu:表示隐藏选择操作系统的菜单,只有出现等待界面后按下 enter 键才会出现。如果没有这个字段, 则每次系统启动都会出现这个选择菜单。

title:grub 菜单”名称”。

root:用于指定 grub 所能识别的根,而不是根文件系统。

kernel:用于指定系统的内核文件的位置

initrd:帮助 kernel 完成系统的启动,例如加载根文件系统所在分区的驱动等。

password:设定密码。放在 title 外表示进入操作系统等待菜单的编辑模式需要密码,而放在 title 内表示启动对应的操作系统需要密码,密码可以是明文或是用 MD5 进行加密过的。可以防止其他人编辑菜单进入单用户模式启动系统。

加载内核

将菜单中选择的内核加载到内存中,展开并启动一个微型操作系统

运行 init 进程

使用加载起来的内核程序执行 Linux 的第一个进程 init 进程,即初始进程

加载系统运行级别

加载/etc/inittab 文件,确定其对应的系统运行级别,然后启动完整的操作系统

系统运行级别:/etc/inittab 中 runlevel 分为 0-6 ;7 个等级

0:关机,shutdown

1:单用户模式(sigle user),root 用户,无须认证;维护模式;

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

3:多用户模式(multi user),完全功能模式;文本界面;

4:预留级别:目前无特别使用目的,但习惯同 3 级别使用;

5:多用户模式(multi user),完全功能模式,图形界面;

6:重启模式,

id:3:initdefault: #这里决定系统启动的级别

启动对应级别下的服务如: init 3 级别

初始化系统

加载/etc/rc.sysinit 文件完成初始化,主要包括设置主机名,设置 IP 等操作

根据启动级别开启服务

根据第六步确定的系统运行级别,加载对用目录下的服务脚本,来决定该级别下那些服务运行和启动。

目录:/etc/rcN.d/

登录系统

显示登陆提示,然后登陆系统

CentOS 7

CentOS 7 系统启动过程及相关配置文件

centos7 系统启动过程

加载 BIOS/UEFI 信息,进行硬件检测。按照 BIOS 设定找到第一个可以启动的设备。

读取第一个设备的 MBR(主引导记录),加载 MBR 中的 BootLoader(启动引导程序grub2)

依据 grub2 的设置加载内核,内核再次进行系统检测。

grub2 加载 initramfs 虚拟文件系统,在内存中加载虚拟文件系统/boot/initramfs.

内核初始化,以加载动态模块的形式加载部分硬件的驱动。并且调用 initrd.target,挂载/etc/fstab 中的文件系统。此时可以由虚拟文件系统模拟出的根目录切换回硬盘真实的根目录。

内核启动的第一个进程,systemd。systemd 接管启动过程,并行启动后续程序。

systemd 调用默认 default.target 单元组,并按照 default 运行子单元组。

在 systemd 中将启动程序成为单元 unit,多个单元组成单元组(target)。

systemd 调用 sysinit.target 单元组,初始化系统。检测硬件,加载剩余硬件的驱动模块等。

systemd 调用 basic.target 单元组,准备操作系统。加载外围硬件的驱动模块,加载防火墙,加载SELinux 安全上下文等。

systemd 调用 mutil-user.target 单元组,启动字符界面所需的程序。

systemd 调用 mutil-user.target 单元组中/etc/rc.d/rc.local 文件,执行文件中命令。

systemd 调用 mutil-user.target 单元组中的 getty.target 单元组,初始化本地终端。

systemd 调用 graphical.target 单元组(字符界面不需要)。

2. 1 Systemd 运行原理-了解一下

Systemd 概述:systemd 即为 system daemon [ˈdi:mən] 守护进程,开发目标是系统服务间的依赖关系,

并依此实现系统初始化时服务的并行启动。

总结:centos5-6-7 3 个系统版本启动过程:

CentOS 5: Sysv init ;CentOS 6: Upstart ;CentOS 7: Systemd

2.2 管理系统服务

服务状态

[root@localhost ~]# systemctl list-unit-files #显示状态

• loaded:Unit 配置文件已处理

• active(running):一次或多次持续处理的运行

• active(exited):成功完成一次性的配置

• active(waiting):运行中,等待一个事件

• inactive:不运行

• enabled:开机启动

• disabled:开机不启动

• static:开机不启动,但可被另一个启用的服务激活

2.3 运行级别

centos6 下 Linux 运行级别 0-6 的各自含义

0: 关机模式

1:单用户模式 ,一用于破解 root 密码

2:无网络,支持的多用户模式

3:有网络支持的多用户模式

4:保留,未使用

5:有网络支持,支持图形界面,支持的多用户模式(图形界面)

6:重新引导系统,及重启

[root@localhost ~]# ll /usr/lib/systemd/system/*.target | grep runlevel

总结:centos6 和 7 运行级别的变化

运行级别的切换

例 1:在 centos6/7 下切换到字符界面:

[root@localhost ~]# init 3 #切换到字符界面

[root@localhost ~]# init 5 #切换到图形界面

例 2:centos7 切换到字符界面

[root@localhost ~]# systemctl isolate multi-user.target

或:[root@localhost ~]# systemctl isolate runlevel3.target

centos7 设置默认系统默认启动级别

例 1:默认系统启动使用 3 级别字符界面

[root@localhost ~]# systemctl set-default multi-user.target

例 2:默认系统启动使用 5 级别图形界面

[root@localhost ~]# systemctl set-default graphical.target

2.4 grub2 和 grub 区别

在 centOS6 上,我们的 grub 文件是/boot/grub/grub.conf

在 centOS7 使用 grub2,配置文件改成/boot/grub2/grub.cfg 了,

如果我们的系统中有两个内核?改变默认启动的内核顺序?

例 1: centos7 修改内核启动顺序

[root@localhost ~]# vim /etc/default/grub

GRUB_TIMEOUT=5 #开机时 grub 默认 5 秒后启动内核

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"

改:GRUB_DEFAULT= saved

为:GRUB_DEFAULT= 1

#这里我们改成 1,0 代表第一个内核,1 代表第二个,以此类推。

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

#修改完成后,并没有立即生效,使用此命令来生成 grub2.cfg 文件,

在下次启动的时候就会默认选择新的默认内核。

例 2: centos6 修改内核启动顺序-了解

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

改: default=0

为: default=1

[root@localhost ~]# reboot



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有