Centos7启动过程
CentOS 7 的启动过程基于 systemd 系统管理器,可以分为以下几个阶段,涵盖了从加载 BIOS 到完全进入用户空间的整个流程:
1. BIOS/UEFI 阶段
- 功能: 计算机加电后,BIOS 或 UEFI 固件进行硬件初始化(如 CPU、内存、存储设备等),并执行自检(POST)。
- 操作:
- 搜索引导设备(硬盘、U盘、光盘等)。
- 加载并运行存储设备上的引导加载程序(通常是 GRUB)。
2. GRUB(GRand Unified Bootloader)阶段
- 功能: 引导加载程序负责引导操作系统内核。
- 操作:
- 加载 GRUB 配置文件(通常是
/boot/grub2/grub.cfg
)。 - 显示引导菜单供用户选择(如果启用了)。
- 加载用户选择的内核镜像文件(
vmlinuz
)和初始化内存盘(initramfs
)。 - 将控制权交给内核。
3. 内核初始化阶段
- 功能: 内核完成基础硬件初始化,并挂载临时根文件系统。
- 操作:
- 内核被加载到内存后开始运行。
- 初始化硬件设备的驱动程序,检测并加载必要的模块。
- 加载临时根文件系统(
initramfs
),提供启动所需的最小环境。 - 查找并挂载实际的根文件系统。
- 启动用户空间的第一个进程,通常是
/sbin/init
。
4. init/systemd 初始化阶段
- 功能: systemd 作为系统和服务管理器接管系统的初始化。
- 操作:
- 加载
/etc/systemd/system/default.target
指定的默认目标(类似于运行级别)。- 默认目标通常是
multi-user.target
或graphical.target
。
- 默认目标通常是
- 按照依赖顺序并行启动所有需要的服务。
- 初始化完成后,进入指定的目标(例如命令行界面或图形桌面)。
5. 目标加载与服务启动
- 功能: 启动用户指定的所有服务。
- 操作:
- 加载目标配置文件,定义该目标下需要启动的服务和依赖项。
- 启动服务,常见的服务类型:
- 系统基础服务:
network
,sshd
,firewalld
等。 - 应用服务:
httpd
,mysqld
等。
- 系统基础服务:
- 如果是图形目标,还会启动图形界面服务(如
gdm
)。
6. 用户登录阶段
- 功能: 系统启动完成后,进入用户登录界面。
- 操作:
- 呈现控制台登录提示或图形界面登录屏幕。
- 用户登录后,加载用户会话配置文件(如
.bashrc
、.profile
)。 - 启动用户会话或桌面环境。
总结
CentOS 7 启动过程强调了 systemd 的并行化特性,优化了服务启动时间。主要阶段如下:
- [ ] BIOS/UEFI 加载引导程序。
- [ ] GRUB 加载内核和 initramfs
。
- [ ] 内核初始化硬件和根文件系统。
- [ ] systemd 接管,加载服务和目标。
- [ ] 提供用户登录界面。
忘记密码进行重置
如果你忘记了 CentOS 7 的密码,可以通过以下步骤重置密码。这需要物理访问服务器或虚拟机控制台权限。
步骤 1: 进入 GRUB 引导菜单
- 启动服务器,在 GRUB 菜单出现时按下
e
键,进入编辑模式。 - 找到内核启动项,通常是以
linux16
开头的那一行。
步骤 2: 修改内核参数
- 在
linux16
或linux
开头的行末添加以下内容:rd.break
-
这个参数会使系统在切换到用户空间之前中断,并进入一个紧急 shell。
-
按下 Ctrl + X 或 F10 启动系统。
步骤 3: 挂载根文件系统
-
进入紧急 shell 后,系统会处于只读模式。需要将根文件系统重新挂载为读写:
mount -o remount,rw /sysroot
-
切换到根文件系统环境:
chroot /sysroot
步骤 4: 重置密码
-
使用以下命令重置密码:
系统会提示输入新密码并再次确认。passwd root
-
如果是普通用户账户,可以用以下命令(替换
username
为具体的用户名):passwd username
步骤 5: 更新 SELinux 标签
-
如果系统启用了 SELinux,需要重新标记文件系统:
touch /.autorelabel
-
退出 chroot 环境并重新启动:
exit reboot
注意事项
- 重置密码需要管理员权限或物理访问权限,确保在安全的环境中操作。
- 如果忘记 root 密码频繁发生,可以配置一个非 root 用户具有
sudo
权限,避免重启系统来重置密码。