HCRM博客

如何成功启动CentOS 7系统?

CentOS 7启动流程详解

CentOS 7是一款广泛使用的Linux操作系统,其启动流程涉及多个关键步骤,了解这些步骤对于系统管理员和开发者来说至关重要,可以帮助他们更好地进行系统维护、故障排除和优化,本文将详细介绍CentOS 7的启动流程,包括每个阶段的具体操作和相关技术细节。

一、BIOS/UEFI初始化与自检(POST)

如何成功启动CentOS 7系统?-图1
(图片来源网络,侵权删除)

在启动时,计算机首先执行基本输入输出系统(BIOS)或统一可扩展固件接口(UEFI)的初始化过程,这一阶段主要包括:

1、电源自检(POST):BIOS或UEFI会检查硬件设备是否正常工作,例如内存、硬盘、CPU等。

2、硬件初始化:检测通过后,BIOS或UEFI会初始化这些硬件设备,为后续的操作系统加载做好准备。

二、MBR引导记录加载

硬件自检完成后,BIOS或UEFI会寻找可引导的设备,通常是硬盘,它会从硬盘的第一个扇区加载主引导记录(MBR),这是一个包含引导加载程序的小段代码,MBR的主要作用是识别并加载次级引导加载程序,如GRUB,从而找到并启动操作系统内核。

三、GRUB引导加载程序

如何成功启动CentOS 7系统?-图2
(图片来源网络,侵权删除)

GRUB分为两个阶段:stage1和stage2。

1、Stage1:位于MBR中,负责加载并执行位于/boot分区中的stage1.5。

2、Stage1.5:识别文件系统,加载stage2。

3、Stage2:实际的引导加载程序,通常位于/boot/grub目录下,它读取配置文件(如grub.cfg)并根据用户选择加载相应的内核和初始RAM磁盘(initramfs)。

四、加载内核与Initramfs

GRUB加载内核和initramfs到内存中,并跳转到内核的起始位置开始执行,内核首先进行解压和初始化,然后加载必要的驱动程序以访问实际的根文件系统,Initramfs作为一个临时的根文件系统,帮助内核完成最终的根文件系统挂载。

如何成功启动CentOS 7系统?-图3
(图片来源网络,侵权删除)

五、systemd初始化

一旦根文件系统挂载完成,内核会启动/sbin/initsystemd来接管系统的引导过程,Systemd是CentOS 7中的默认系统和服务管理器,它取代了传统的SysVinit,Systemd采用并行化的方式启动系统服务,显著提高了启动速度。

六、运行级别与服务启动

Systemd使用目标(target)而不是运行级别(runlevel)来管理系统状态,CentOS 7中常用的目标包括:multiuser.target(多用户命令行界面)、graphical.target(图形界面)等,系统默认进入multiuser.target,在该目标下,systemd会启动所有相关的服务。

七、终端登录与用户空间

systemd启动getty服务,提供终端登录界面,允许用户登录到系统,系统已经完成了启动过程,用户可以开始使用CentOS 7系统。

开机启动服务配置方法

为了确保某些服务在系统启动时自动运行,可以使用以下几种方法:

一、使用 systemctl 命令

systemctl 是CentOS 7中管理服务的主要命令,常用命令包括:

1、启动服务systemctl start service_name

2、停止服务systemctl stop service_name

3、重启服务systemctl restart service_name

4、查看服务状态systemctl status service_name

5、设置开机自启systemctl enable service_name

6、取消开机自启systemctl disable service_name

二、使用 chkconfig 命令

chkconfig 是一个传统的服务管理工具,仍然可以在CentOS 7中使用,常用命令包括:

1、设置服务开机自启chkconfig service_name on

2、取消服务开机自启chkconfig service_name off

3、查看服务开机自启状态chkconfig list service_name

三、编写自定义服务文件

可以通过创建自定义的systemd服务单元文件来实现更复杂的启动需求,创建一个nginx服务的自启动脚本:

[Unit]
Description=nginx high performance web server
After=network.target remotefs.target nsslookup.target
[Service]
Type=forking
User=nginx
Group=nginx
ExecStart=/etc/init.d/nginx start
ExecReload=/etc/init.d/nginx reload
ExecStop=/etc/init.d/nginx stop
PrivateTmp=true
[Install]
WantedBy=multiuser.target

保存为/etc/systemd/system/nginx.service,然后执行以下命令使其生效:

systemctl daemonreload
systemctl enable nginx.service
systemctl start nginx.service

FAQs

Q1: 如何更改CentOS 7的默认启动目标?

A1: 使用systemctl setdefault命令可以更改默认启动目标,要设置为图形界面,运行systemctl setdefault graphical.target即可。

Q2: 如果CentOS 7系统无法启动,如何进入单用户模式进行故障排除?

A2: 在GRUB菜单出现时,按下e键编辑启动项,找到以linux16开头的行,将其中的ro改为rw init=/sysroot/bin/sh,然后按Ctrl+X或F10启动,这将使系统进入单用户模式,并打开一个Shell提示符,从中可以进行修复操作。

分享:
扫描分享到社交APP
上一篇
下一篇