CentOS 启动引导详解
CentOS 的启动引导过程是一个复杂但有序的系统启动流程,它涉及多个步骤和组件,以下是对 CentOS 启动过程的详细解释:
一、引导过程总览
1、开机自检(POST):
当服务器或计算机开机时,首先会根据主板 BIOS(基本输入输出系统)中的设置进行硬件的初步检测和初始化,包括 CPU、内存、显卡、键盘等设备。
2、MBR(主引导记录)引导:
在自检完成后,BIOS 会找到硬盘的第一个扇区,即 MBR,并将其加载到内存中,MBR 负责磁盘操作系统对磁盘进行读写时分区合法性的判别及分区引导信息的定位。
MBR 将告诉程序下一阶段去哪里找系统的 GRUB 引导。
3、GRUB 菜单:
系统控制权传递给 GRUB 后,GRUB 将显示一个菜单,提供用于选择不同操作系统或内核版本的选项,用户可以根据需要选择并加载特定的 Linux 内核文件。
4、加载 Linux 内核与 initramfs:
GRUB 从本地硬盘中加载 Linux 内核以及内存文件系统(initramfs),initramfs 是一个经过 gzip 压缩的 cpio 归档,其中包含启动时所有必要的硬件内核模块和初始化脚本。
5、加载硬件驱动及初始化进程:
内核在 initramfs 中找到驱动程序的所有硬件,然后作为 PID 1 从 initramfs 执行 /sbin/init,在 CentOS 7 中,这个 init 被替换为 systemd。
systemd 启动 initrd.target 中的所有单元,并挂载根文件系统,之后从 initramfs 切换到磁盘根目录,并重新运行 /sysroot.systemd。
systemd 继续启动默认 target(可能是图形界面或字符终端),最后等待用户登录。
二、关键组件详解
1、init 进程:
init 是由 Linux 内核加载运行的 /sbin/init 程序,是系统中的第一个进程,其 PID 号永远为 1。
init 进程负责初始化系统环境,启动其他所有系统进程。
2、Systemd 进程:
从 CentOS 7 版本开始,systemd 成为 PID 恒为 1 的初始化进程,取代了传统的 init 进程。
systemd 的目的是将更多的服务并发启动,从而提高系统启动速度,并具有按需启动服务的能力。
systemd 使用目标(target)来表示系统的运行级别,不同的运行级别对应不同的 systemd 目标,如 multiuser.target(相当于运行级别 3)和 graphical.target(相当于运行级别 5)。
三、常见问题及解答
1、Q1: CentOS 7忘记root密码怎么办?
如果忘记了 CentOS 7 的 root 密码,可以通过以下步骤重置:
在 GRUB 菜单出现时,按下 e 键进入编辑模式。
在 linux16/linux/linuxefi 所在参数行尾添加 init=/bin/sh。
按 Ctrl+x 启动到 shell。
挂载文件系统为可写模式:mount –o remount,rw /。
运行 passwd 命令并按提示修改 root 密码。
运行命令 exec /sbin/init 来正常启动,或者用命令 exec /sbin/reboot 重启。
2、Q2: 如何修复 CentOS 7 的 MBR 引导问题?
MBR 引导出现问题,可以尝试以下步骤修复:
使用安装光盘或救援模式启动系统。
进入救援模式后,使用 dd if=/dev/sda of=/root/mbr.bak count=1 bs=512 备份 MBR。
MBR 被破坏,可以使用之前备份的 MBR 进行恢复:dd if=/root/mbr.bak of=/dev/sda bs=512 count=1。
如果没有备份,可以尝试使用系统安装盘或其他工具进行 MBR 修复。
操作涉及系统底层设置和数据安全,请在进行任何操作前确保已备份重要数据,并谨慎操作,如果不确定如何操作,建议咨询专业人士或查阅官方文档。