一、引导过程总览
Linux 操作系统的引导过程一般包括以下几个阶段:开机自检、MBR 引导、GRUB 菜单、加载 Linux 内核、init 进程
1.开机自检
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
注:
BIOS是英文"Basic Input Output System"缩略词,直译过来后中文名称就是"基本输入输出系统"。在IBM PC兼容系统上,是一种业界标准的固件接口。BIOS这个字眼是在1975年第一次由CP/M操作系统中出现。 BIOS是个人电脑启动时加载的第一个软件。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。
引导的设备:光盘、U盘、硬盘、网络(实际上是网卡)
自检通过后,bios会去判断一下所设置的第一个引导设备是谁,
引导设备接管之前是主板在管理,接管之后,引导设备来管理
2.MBR 引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record,主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单(如 GRUB)
注:
MBR整个扇区512Byte(字节)
整个MBR引导扇区主要由3部分组成:
1.主引导记录(Master Boot Record或者Main Boot Record,MBR),0磁道0扇区
2.硬盘分区表(Disk Partition Table,DPT)
3.结束标志字(55AA)。
MBR整个扇区512Byte(字节)
8bit=1Byte
Bootloader主引导程序在该扇区占1-446个字节
DPT(在该扇区占447-510(64个字节):每16个字节负责保存一个分区的信息
结束标识55aa 511-512(2个字节)
3.GRUB 菜单
对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载 Linux 内核文件,然后将系统控制权转交给内核。需要注意的是,CentOS 7 采用的是 GRUB2 启动引导器
注:
让用户去选择操作系统的一个菜单,通过GRUB允许用户在单台服务器上同时安装两个或多个操作系统。但多个系统不可以同时启动。
4.加载 Linux 内核
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。
注:
加载内核,就是把内核这个文件放到内存,要把硬盘上的boot这个目录下的选择的内核,把这个内核文件加载到内存当中。在系统里面,凡是运行起来的程序,都是在内存里面的,除非物理内存不足,正常情况下都是放在内存里。
利用内核去启动其它的必要程序。
kernel:内核
5.init (Initialization初始化)进程初始化
为了完成进一步的系统引导过程,Linux 内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。
注:
它是整个操作系统,第一个需要启动起来的进程,如果这个进程启动不起来,其它进程也启动不起来。所有其它的进程都是由init这个程序启动起来的。所有其它程序的父进程。
进程树:命令pstree(process进程 static静态的 tree树)
在现在的操作系统里init就是systemd,或者说目前的操作系统,它的初始化进程,用的是systemd。从CentOS7以及以后的系统,初始化程序不再是init,而变成了systemd这个程序。但是为了和早期系统实现一个概念上的连贯性,依然保留了之前的initi,只不过这个init是systemd的软链接。
systemd:该进程是控制其它一切进程的最高父进程,可以称为守护进程。
二、 系统初始化进程及文件
1.init 进程
Linux 操作系统中的进程使用数字进行标记,每个进程的身份标记号称为 PID。在引导Linux 操作系统的过程中,“/sbin/init”是内核第一个加载的程序,因此 init 进程对应的 PID 号总是为 1。
init 进程运行以后将陆续执行系统中的其他程序,不断生成新的进程,这些进程称为 init进程的子进程。反过来说,init 进程是这些进程的父进程。当然,这些子进程也可以进一步生成各自的子进程,依次不断繁衍下去,最终构成一棵枝繁叶茂的进程树,共同为用户提供服务。
综上,init 进程正是维持整个 Linux 操作系统运行的所有进程的“始祖”,因此 init 进程是不允许被轻易终止的。需要切换不同的系统运行状态时,可以向 init 进程发送正确的执行参数,由 init 自身来完成相关操作。
2.Systemd 概述
Systemd 是 Linux 操作系统的一种 init 软件,CentOS 7 系统中采用了全新的 Systemd启动方式,取代了传统的 SysVinit。Systemd 启动方式使系统初始化时诸多服务并行启动,大大提高了开机效率。CentOS 7 系统中“/sbin/init”是“/lib/systemd/systemd”的链接文件。换言之,CentOS 7 系统中运行的第一个 init 进程是“/lib/systemd/systemd”。systemd 守护进程负责 Linux 的系统和服务,systemctl 用于控制 Systemd 管理的系统和服务状态
Systemd 将其管理的资源组织成各种类型的单元(Unit)
service的作用:Linux中.service文件是某项服务对应的配置文件,可用于systemd管理和控制的服务的设置
target
运行级别:CentOS6之前叫运行级别
注:
6号级别,重启:reboot与init 6
0号级别,关机:poweroff与init0,halt中断系统
1号级别,rescue救援模式,单用户模式,光盘进入,不需要密码
2、3、4级别是多用户模式,三个级别基本上都是一样的。2号和4号是自定义,保留。3号级别是纯字符的终端模式,没有图形化的界面。
5号级别:graphical图形化,带有图形化的界面
daemon恶魔,守护进程
N表示没有切换过级别
这两个位置应该是链接关系,内容是一样的,从lib进去也可以,从etc进去也可以,只要进入的是/systemd/system就行
可以安装下面的环境分组
三、排除系统启动类故障
Linux 操作系统的启动过程涉及 MBR(Main Boot Record,主引导记录)、GRUB 启动菜单、系统初始化配置文件等各方面,其中任何一个环节出现故障都可能导致系统启动失常,因此一定要注意做好相关文件的备份工作。
1、修复MBR扇区故障
MBR 位于物理硬盘的第一个扇区(512 字节),该扇区又称为主引导扇区(MBR 扇区),除了包含系统引导程序的部分数据外,还包含整个硬盘的分区表记录。当主引导扇区发生故障时,将可能无法进入引导菜单,或者因无法找到正确的分区位置而无法加载系统,通过该硬盘引导主机时很可能进入黑屏状态。
(1)备份MBR扇区数据
dd命令能够从指定的硬盘的磁道位置或者扇区位置来抓取磁盘上的数据,直接从磁盘的磁道上获取数据,把这个数据放置在指定的文件内。
(2)模拟MBR扇区故障
/dev/zero是一个白洞文件,可以从该文件获取任意大小的数据
2、GRUB引导故障
总结:
grub
进救援模式
切换硬盘为你的根目录
cd /boot/grub2
将之前的grub备份文件做还原
3、把grub文件及备份都删除
按照2的步骤进入grub后,操作一下
4、遗忘root的密码
进入救援模式
sh-4.2# chroot/mnt/sysimage
bash-4.1# passwd root