跳转至

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.targetgraphical.target
  • 按照依赖顺序并行启动所有需要的服务。
  • 初始化完成后,进入指定的目标(例如命令行界面或图形桌面)。

5. 目标加载与服务启动

  • 功能: 启动用户指定的所有服务。
  • 操作:
  • 加载目标配置文件,定义该目标下需要启动的服务和依赖项。
  • 启动服务,常见的服务类型:
    • 系统基础服务:network, sshd, firewalld 等。
    • 应用服务:httpd, mysqld 等。
  • 如果是图形目标,还会启动图形界面服务(如 gdm)。

6. 用户登录阶段

  • 功能: 系统启动完成后,进入用户登录界面。
  • 操作:
  • 呈现控制台登录提示或图形界面登录屏幕。
  • 用户登录后,加载用户会话配置文件(如 .bashrc.profile)。
  • 启动用户会话或桌面环境。

总结

CentOS 7 启动过程强调了 systemd 的并行化特性,优化了服务启动时间。主要阶段如下: - [ ] BIOS/UEFI 加载引导程序。 - [ ] GRUB 加载内核和 initramfs。 - [ ] 内核初始化硬件和根文件系统。 - [ ] systemd 接管,加载服务和目标。 - [ ] 提供用户登录界面。

忘记密码进行重置

如果你忘记了 CentOS 7 的密码,可以通过以下步骤重置密码。这需要物理访问服务器或虚拟机控制台权限。


步骤 1: 进入 GRUB 引导菜单

  1. 启动服务器,在 GRUB 菜单出现时按下 e 键,进入编辑模式。
  2. 找到内核启动项,通常是以 linux16 开头的那一行。

步骤 2: 修改内核参数

  1. linux16linux 开头的行末添加以下内容:
    rd.break
  2. 这个参数会使系统在切换到用户空间之前中断,并进入一个紧急 shell。

  3. 按下 Ctrl + XF10 启动系统。


步骤 3: 挂载根文件系统

  1. 进入紧急 shell 后,系统会处于只读模式。需要将根文件系统重新挂载为读写:

    mount -o remount,rw /sysroot

  2. 切换到根文件系统环境:

    chroot /sysroot


步骤 4: 重置密码

  1. 使用以下命令重置密码:

    passwd root
    系统会提示输入新密码并再次确认。

  2. 如果是普通用户账户,可以用以下命令(替换 username 为具体的用户名):

    passwd username


步骤 5: 更新 SELinux 标签

  1. 如果系统启用了 SELinux,需要重新标记文件系统:

    touch /.autorelabel

  2. 退出 chroot 环境并重新启动:

    exit
    reboot


注意事项

  • 重置密码需要管理员权限或物理访问权限,确保在安全的环境中操作。
  • 如果忘记 root 密码频繁发生,可以配置一个非 root 用户具有 sudo 权限,避免重启系统来重置密码。