目录
一。Linux操作系统的引导过程
系统引导是操作系统运行的开始,在用户能够正常登录到系统之前,Linux操作系统的引导过程将完成一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备本节将对 Linux 操作系统的引导过程做简单介绍。
1.引导过程总览
(1)开机自检
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
(2)MBR 引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(Master Boot Record,主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如GRUB)。
(3)GRUB 菜单
对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。需要注意的是,CentOS7采用的是 GRUB2 启动引导器。
(4)加载Linux内核
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux操作系统的运行过程。在 CentOS 系统中,默认的内核文件位于“/bootvmlinuz-3.10.0-514.el7.x86 64”
(5)init 进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内
存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。
2.系统初始化进程及文件
1.init进程
Linux 操作系统中的进程使用数字进行标记,每个进程的身份标记号称为PID。在引导Linux 操作系统的过程中,“/sbin/init"是内核第一个加载的程序,因此 init 进程对应的 PID 号
总是为1。init 进程运行以后将陆续执行系统中的其他程序,不断生成新的进程,这些进程称为init进程的子进程。反过来说,init进程是这些进程的父进程。当然,这些子进程也可以进一步生成各自的子进程,依次不断繁衍下去,最终构成一棵枝繁叶茂的进程树,共同为用户提供服务。
从以上描述可以看出,init 进程正是维持整个 Linux 操作系统运行的所有进程的“始祖”因此init 进程是不允许被轻易终止的。需要切换不同的系统运行状态时,可以向init 进程发送正确的执行参数,由init 自身来完成相关操作。
2.systemd概述
Systemd 是 Linux 操作系统的一种 init 软件,CentOS7系统中采用了全新的 Systemd启动方式,取代了传统的 SysVinit。Systemd 启动方式使系统初始化时诸多服务并行启动,大大提高了开机效率。CentOS7 系统中“/sbinnit”是"/lib/systemdsystemd”的链接文件。换言之,CentOS7系统中运行的第一个init 进程是"/lib/systemd/systemd”。systemd 守护进程负责 Linux 的系统和服务,systemctl 用于控制 Systemd 管理的系统和服务状态。
Service | .service | 描述一个系统服务 |
Socket | .Socket | 描述一个进程间通信的套接字 |
Device | .Device | 描述一个内核识别的设备文件 |
Mount | .Mount | 描述一个文件系统的挂载点 |
Automount | .Automount | 描述一个文件系统的自动挂载点 |
Swap | .Swap | 描述一个内存交换设备或交换文件 |
Path | .Path | 描述一个文件系统中文件或目录 |
Timer | .Timer | 描述一个定时器(用于实现类似cron的调度任务) |
Snapshot | .Snapshot | 用于保存一个 systemd 的状态 |
Scope | .Scope | 使用 systemd 的总线接口以编程的方式 |
Slice | .Slice | 创建外部进程描述居于 Cgroup 的一组通过层次组织的管理系统进程 |
Target | .Target | 描述一组 systemd的单元 |
二。排除系统启动类故障
1.MBR扇区故障
MBR 位于物理硬盘的第一个扇区(512 字节),该扇区又称为主引导扇区(MBR 扇区),除了包含系统引导程序的部分数据外,还包含整个硬盘的分区表记录。当主引导扇区发生故障时,将可能无法进入引导菜单,或者因无法找到正确的分区位置而无法加载系统,通过该硬盘引导主机时很可能进入黑屏状态。
2.GRUB引导故障
GRUB 是大多数 Linux 操作系统默认使用的引导程序,可以通过启动菜单的方式选择进入不同的操作系统(如果有)。当配置文件/bootgrub2/grub.cfg 丢失,或者关键配置出现错误,或者 MBR 中的引导程序遭到破坏时,Linux 主机启动后可能只出现"grub>”的提示符,无法完成进一步的系统启动过程
3.忘记root密码
当忘记 root 用户的密码时,将无法登录 Linux操作系统执行管理、维护等任务,而只能通过其他用户(普通用户)登录使用一些受限制的功能。当然,如果操作系统中还有其他具有 root 权限的用户(uid 为0),或者拥有修改root账号密码权限的用户,也可以使用这些用户登录操作系统,然后重新设置root用户的密码。
然而,大多数时候 Linux 主机中具有 root 权限的用户只有一个,因此需要通过其他途径来重设 root 账号的密码。最简便的途径是使用 CentOS的安装光盘进入急救模式。若使用 CentOS 的安装光盘进入急救模式的 Shel 环境,则只需切换到待修复 Linux 操作系统的根目录环境,直接执行“passwd root”命令重设root 用户的密码即可;或者修改/etc/shadow 文件,将 root用户的密码字段清空,重启后以空密码可登录系统。以下操作即为进入急救模式重设 root 用户密码