目录
一、Linux操作系统引导过程
引导过程👇

(1)主要的步骤
1.开机自检:
计算机开机时,会进行自检,在自检过程中,计算机会检测所有的硬件设备,并找到能够引导系统的设备,通常是硬盘或固态硬盘。
2.MBR引导:
在确定了引导设备后,计算机会加载主引导记录,MBR位于引导设备的第一个扇区,包含主引导程序GRUB
3.启动GRUB菜单
系统读取GRUB配置文件(通常位于/boot/grub2/grub.cfg),显示启动菜单,允许用户选择不同的内核或操作系统。
4.加载Linux内核:
GRUB会将选定的Linux内核加载到内存中,GRUB将控制权转交给内核。
5.init进程初始化:
内核会加载init进程到内存中并运行它,将其作为系统的第一个用户空间进程
6.系统初始化:
在init进程启动后,系统开始进行初始化过程,加载内核模块、执行运行级别的启动脚本
init进程 文件位于 /sbin/init -> /lib/systemd/systemd ,init进程PID号固定为 1 ,是系统中其它所有进程的父进程
(2)系统初始化进程
init进程👇
init进程由Linux内核加载并运行,位于/sbin/init程序
作为系统中的第一个进程,它是所有其他进程的父进程
init进程的PID(进程标识号)始终为1
Systemd👇
Systemd 是linux系统的一种init软件
CentOS 7 采用了 Systemd 作为其启动和管理系统服务的方式,取代了传统的 SysVinit
CentOS 7 中第一个 init 进程是/lib/systemd/systemd


CentOS 7 及以后的版本中,默认的启动方式是 Systemd,而在 CentOS 6 及以前的版本中,默认的启动方式是 SysVinit ,SysVinit 使用串行执行 /etc/init.d/ 目录下的 shell 脚本来启动系统服务,这可能会导致启动过程中的阻塞,降低了启动效率
单元类型👇
| 单元类型 | 扩展名 | 说明 |
|---|---|---|
| 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 中控制系统服务工具
systemctl 控制类型 服务名称
控制类型:指定了对服务的操作类型,常见的控制类型👇
start:启动服务
stop:停止服务
restart:重启服务
reload:重新加载配置(不重启服务)
status:查看服务状态
enable:设置服务开机自启动
disable:禁止服务开机自启动
二、运行级别
传统的 SysVinit 中有 7 个运行级别👇
运行级别 0:关机
运行级别 1:单用户模式
运行级别 2:多用户模式(无网络)
运行级别 3:多用户模式 (有网络)
运行级别 4:保留
运行级别 5:图形用户界面模式,多用户模式,带图形界面支持
运行级别 6:重启系统
| 运行级别 | Systemd的target | 说明 |
| 0 | poweroff.target | 关机状态,使用该级别将会关闭主机 |
| 1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 |
| 2 | multi-user.target | multi-user.target用户定义/域特定运行级别,默认等同于3 |
| 3 | multi-user.target | multi-user.target字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
| 4 | multi-user.target | 用户定义/域特定运行级别,默认等同于3 |
| 5 | graphical.target | graphical.target图形界面的多用户模式,提供了图形桌面操作环境 |
| 6 | reboot.target | reboot.target重新启动,使用该级别时将会重启主机 |
runlevel #查看上一次的运行级别 和 当前的运行级别
systemctl get-default #查看当前的默认运行级别
三、启动类故障恢复
(1).修复MBR扇区故障
故障原因👇
1.病毒、木马等造成的破坏:
恶意软件可能会破坏MBR扇区,导致系统无法启动或者引导错误。
2.不正确的分区操作、磁盘读写误操作:
在分区或磁盘操作中出现错误可能会导致MBR扇区损坏
3.硬件故障:
硬盘故障或者损坏可能导致MBR扇区无法正常读取或者写入
故障现象👇
找不到引导程序 、 无法加载操作系统 、 开机后黑屏
解决思路👇
提前准备好备份文件
使用恢复介质(光盘)进入急救模式
用备份文件进行恢复数据
如果是 MBR 整个扇区数据被破坏了,需要进入到急救模式将备份的MBR数据导入还原
备份MBR数据👇
dd if=/dev/sda of=备份文件 bs=512 count=1
#将从 /dev/sda 设备读取前512字节的数据,并将其保存到名为 "备份文件" 的文件中
进入急救模式👇
使用操作系统的安装光盘或者恢复介质引导计算机进入急救模式或者恢复模式
还原MBR数据👇
在急救模式下,使用DD命令将备份的MBR数据还原到磁盘上
dd if=备份文件 of=/dev/sda
#把备份文件中的数据写入到 /dev/sda 设备
然后测试启动
如果是 MBR 的GRUB主引导程序被破坏了
使用备份文件恢复MBR👇
在急救模式下,使用DD命令将备份文件中的数据恢复到MBR中
dd if=备份文件 of=/dev/sda bs=446 count=1
#将备份文件中的前446字节数据写入到 /dev/sda 设备
重建MBR的GRUB主引导程序👇
在急救模式下,首先使用chroot命令切换到已安装系统的根目录
chroot /mnt/sysimage
#/mnt/sysimage 是已安装系统的挂载点
然后,使用grub2-install 命令重新安装GRUB主引导程序到MBR扇区
grub2-install /dev/sda
#重新安装GRUB主引导程序到 /dev/sda 设备
最后一步测试启动
如果是GRUB配置文件被删了
1.进入急救模式并切换到已安装系统的根目录👇
chroot /mnt/sysimage
2.重新生成GRUB配置文件👇
grub2-mkconfig -o /boot/grub2/grub.cfg
#用 grub2-mkconfig 命令重新生成GRUB的配置文件,并将其输出到指定位置
👆 GRUB的配置文件位于/boot/grub2/grub.cfg
3.退出并重启计算机
reboot
#重启计算机
四、遗忘 root 用户的密码
1.重启虚拟机在读条的时候按ESC,选第三个光盘启动

2.选第三个进入急救模式

选第二个👇

加载完毕 按1继续👇

输入chroot /mnt/sysimage(进入根环境) 然后输入passwd 用户名 再输入两遍新密码
exit退出根环境 reboot重启
![]()
五、系统服务控制
(1).服务管理操作
systemctl start|stop|restart|reload|status|is-active 服务名[.service]
#要确保在 /usr/lib/systemd/system/ 目录中有相关服务的 XXX.service 文件
service 服务名 start|stop|restart|reload|status
#要确保在 /etc/init.d/ 目录中有相关服务的管理脚本文件
[root@localhost ~]# systemctl start firewalld #启动防火墙
[root@localhost ~]# systemctl status firewalld #查看服务器状态
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 三 2024-04-17 21:02:23 CST; 11min ago
Docs: man:firewalld(1)
Main PID: 825 (firewalld)
Tasks: 2
CGroup: /system.slice/firewalld.service
└─825 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
4月 17 21:02:23 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewal.....
4月 17 21:02:23 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall...n.
4月 17 21:02:23 localhost.localdomain firewalld[825]: WARNING: AllowZoneDrifting is ena....
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# systemctl is-active firewalld #查看服务器状态
active
(2).服务开机自启管理
systemctl enable|disable [--now] 服务名[.service] # --now选项可实现立即开启|关闭服务
systemctl is-enabled 服务名[.service]
[root@bogon ~]# systemctl enable --now firewalld #立即开启防火墙服务
(3).控制类型
| stat | 启动 |
| stop | 停止 |
| restart | 重新启动 |
| reload | 重新加载 |
| status | 查看服务状态 |

本文详细介绍了Linux操作系统引导过程,包括自检、MBR引导、GRUB菜单、内核加载和系统初始化。此外,还涵盖了运行级别、Systemd的系统服务控制、启动类故障恢复策略以及如何处理遗忘的root用户密码。

519

被折叠的 条评论
为什么被折叠?



