文章目录
1.引导过程管理
系统引导是操作系统运行的开始,在用户能够正常登录到系统之前,Linux的引导过程完成了一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备。
1.1引导过程
总览:
- Linux操作系统的引导过程一般包括以下几个阶段:开机自检、MBR引导、GRUB菜单、加载Linux内核、init进程初始化。
1)开机自检:
服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多数时候会移交给本机硬盘;
2)MBR引导:
当从本机硬盘启动系统时,首先根据硬盘第一个扇区中MBR的设置,将系统 控制权传递给包含操作系统引导文件的分区,或者直接根据MBR中的引导信息调用启动菜单;
3)GRUB菜单:
对于Linux系统来说,GRUB算是使用最为广泛的多系统引导器程序了。系统控制权传递给GRUB以后,将会显示启动菜单提供给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核;
4)加载Linux内核:
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。默认的内核文件位于"/boot/vmlinuz“
5)init进程初始化:
为了完成进一步的系统引导过程,Linux内核首先将系统中的" /sbin/init "程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的初始化过程,最后等待用户进行登录。
1.2系统的启动流程
粗略介绍:
当你按下电源按键后计算机硬件会读取BIOS或UEFI BIOS来加载硬件信息及进行硬件系统的自我测试,之后系统会主动去读第一个可启动的设备(BIOS设定),此时就可以读入启动引导程序了。启动引导程序可以指定使用哪个内核文件来启动,并实际加载内核到内存当中解压缩与执行。此时内核就能够开始在内存中活动,并检测所有硬件信息与加载适当的驱动程序来使整台主机并始运行,等到内核检测硬件写加载驱动程序完毕后,操作系统就启动好了。
流程:
1)加载BIOS的硬件信息与进行自我检测,根据BIOS设置来取得第一个可启动的设备;
2)读取并执行第一个启动设备内MBR的启动引导程序(可以是grub2,也可以是spfdisk);
3)根据启动引导程序的设置加载kernel,kernel会开始检测硬件与加载驱动程序;
4)在硬件驱动成功后,kernel会主动调用systemd程序,并以default.target流程启动;
- systemd执行sysinit.target初始化系统及basic.target准备操作系统;
- systemd启动multi-user.target下的本机与服务器服务;
- systemd执行multi-user.target下的getty.target及登录服务;
- systemd执行graphical需要的服务。
专有名称解释:
BIOS:不论是传统BIOS还是UEFI BIOS都会被简称为BIOS;
MBR:虽然分区表有传统MBR及新式GPT,GPT有保留一块兼容MBR的区块,因此,都简称MBR;
关于内核文件:
内核文件存放路径:/boot/vmlinuz
2.init进程
概述:
- Linux系统中的进程(运行中的程序)使用数字进行标记,每个进程的身份标记号称为PID。在引导Linux系统的过程中,“/sbin/init”是内核第一个加载的程序,因此init进程对应的PID号总是为“1”;
- init进程运行以后将陆续执行系统中的其他程序,不断生成新的进程,这些进程称为init进程的子进程,反过来说,init进程是这些进程的父进程。当然,这些子进程也可以进一步生成各自的子进程,依次不断繁衍下去,最终构成一棵枝繁叶茂的进程树,共同为用户提供服务;
- 从以上描述可以看出,init进程正是维持整个Linux系统运行的所有进程的“始祖”,因此init进程是不允许被轻易终止的。需要切换不同的系统运行状态时,可以向init进程发送正确的执行参数,由init自身来完成相关操作。
init进程特点:
1)由Linux内核加载运行/sbin/init程序;
2)init进程是系统中第一个进程;
3)init进程的PID(进程标记)号永远为1;
3.inittab 配置文件
3.1 inittab配置文件概述及基本格式
查看配置命令:
cat /etc/inittab
在/etc/inittab文件中,除了以“#”号开头的注释信息和空行以外,只有一条有效配置记录。配置记录中的四个字段之间使用半角的冒号“:”进行分割,基本格式如下:
id:runlevels:action:process
即
标记:运行级别:动作类型:程序或脚本
3.2 inittab文件中各个字段的作用
(1) id—标记字段
标记字段可以由1~4个字符组成,用以区别于其他行的配置。
(2)runlevels—运行级别字段
Linux 通过将不同的系统服务(指运行在后台并提供特定功能的应用程序,如网站服务、FTP服务等)进行搭配组合,来协同满足不同的功能需求,不同的服务组合其实现的功能也各不相同。
命令格式:
init 运行级别
运行级别说明:
运行级别 | Systemd的target | 说明 |
---|---|---|
0 | poweroff.target | 关机状态,使用该级别时将会关闭主机; |
1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护; |
2 | multi-user.target | 字符界面的多用户模式(不支持访问网络),运行级别默认为3; |
3 | multi-user.target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别; |
4 | multi-user.target | 用户定义/域特定运行级别,默认为3; |
5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境; |
6 | reboot.target | 重新启动,使用该级别时将会重启主机。 |
(3)action—动作类型字段
动作类型字段描述了该行配置所对应的操作类别,initdefault表示“设置初始化系统后默认进入的运行级别”。
(4) process—程序或脚本字段
此字段用于指定该行配置所对应的实际操作,可以是具体的命令、脚本程序等,此处为空。
3.3 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的单元 |
Systemd特点:
1)Systemd是Linux操作系统的一种init软件;
2)CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit;
3)CentOS7中运行的第一个init进程是/lib/systemd/systemd。
4.排除启动类故障
4.1 修复MBR扇区故障
故障原因:
- 病毒、木马等造成的破坏;
- 不正确的分区操作、磁盘读写误操作。
故障现象:
- 找不到引导程序,启动中断;
- 无法加载操作系统,开机后黑屏。
解决思路:
- 应提前作好备份文件;
- 以安装光盘引导进入急救模式;
- 从备份文件中恢复。
MBR扇区特点:
mbr扇区存在于第一块硬盘空间里,因此想要破坏mbr数据,只需要破坏第一块硬盘空间里的数据即可。对第一块硬盘备份时,注意备份磁盘空间不能小于第一块硬盘的空间大小。
模拟MBR扇区实验:
1)添加一块硬盘做实验;
2)进系统查看磁盘
fdisk -l ##看是否有sdb
3)格式化sdb
mkfs -t ext4 /dev/sdb
4)挂载sdb
mount /dev/sdb /opt
5)备份MBR扇区数据
dd if=/dev/sda of=/opt/mbr.bak bs=512k count=1
6)模拟MBR扇区故障
dd if=/dev/zero of=/dev/sda bs=512k count=1
7)重启后观察系统是否出现问题:operating system not found
此时表示MBR出现了故障,恢复步骤如下:
1)装入光盘,在光盘引导界面选择 troubleshooting;
2)进入troubleshooting菜单选择Rescue a centos syst;
3)进入引导可以按回车,或者等待。按1 再按回车进入sh-4.2#;
4)急救模式下sdb的挂载:
mkdir /sdd
mount /dev/sdb/sdd
cd /sdd ##查询下该备份文件是否存在
5)恢复备份数据:
dd if=/sdd/mbr.bak of=/dev/sda count=1 bs=512k
6)重启reboot 进入系统测试是否正常。
4.2 grub故障修复
故障原因:
- MBR中的GRUB引导程序遭到破坏;
- grub.conf文件丢失、引导配置有误。
故障现象:
- 系统引导停滞,显示“grub>”提示符
解决思路:
- 尝试手动输入引导命令;
- 进入急救模式,重写或者从备份中恢复grub.conf;
- 向MBR扇区中重建grub程序;
模拟故障:
cd /boot/grub2 ##进入grub2
rm -rf grub.cfg ##删除grub2.cfg模拟故障
init 6 重启
出现故障如下:grub>
修复步骤:
1.引导急救模式,加载系统镜像;
chroot /mnt/sysimage/
2.重新建立加载sda分区
grub2-install /dev/sda
3.重新构建grub菜单配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
4.退出bash环境,exit
5.重启,reboot
4.3 遗忘root密码
故障原因:
- 遗忘root用户的密码
故障现象:
- 无法进行需要root权限的管理操作;
- 若没有其他可用帐号,将无法登录系统。
解决思路:
- 进入急救模式,重设密码
忘记root密码实验步骤:
sh-4.2# chroot /mnt/sysimage ##加载系统镜像
bash-4.2# passwd root ##设置密码
new: ##新密码
retry: ##确认新密码
exit ##退出bash环境
reboot ##重启系统