目录
一.Linux操作系统引导过程
1.1引导过程总览
1.2系统初始化进程
1.2.1init进程
1.2.2sysmted
1.3systemd单元类型
二.排除启动类故障
2.1MBR扇区故障
2.1.1故障原因
2.1.2故障现象
2.1.3解决办法
2.1.4模拟修复MBR扇区故障
1)添加新的硬盘
2)进行分区,格式化和挂载操作
3)备份 MBR扇区数据 到其他磁盘
4)破坏MBR扇区,模拟MBR扇区故障
5)reboot
6)进入急救模式,用备份文件恢复MBR扇区数据,解决故障
7)恢复正常
2.2grub引导故障
2.2.1故障原因
2.2.2故障现象
2.2.3解决办法
2.2.4模拟修复grub故障
1)删除grub配置文件,重启观察故障情况
2)重启快速按ESC键进入BOOT目录
3)改用光盘启动,引导界面进入急救模式
切换到系统根环境
重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MBR扇区
重新构建GRUB菜单的配置文件
退出并重启
编辑
重启成功
2.3遗忘用户密码
2.3.1步骤
2.3.2模拟遗忘密码
1)关闭selinux安全机制
2)重启系统按esc键,进入BOOT菜单
3)进入shell的sh环境
4)进入系统根环境bash,passwd改密码
5)退出并重启
6)使用新密码登录,登陆成功
三.linux运行级别
四.系统服务控制
4.1系统服务的定义
4.2systemctl命令
4.2.1systemctl命令的定义
4.2.2命令格式
4.2.3例子
4.3 Systemd Service Unit 文件
4.3.1定义
4.3.2组成
unit部分
service部分
install部分
一.Linux操作系统引导过程
1.1引导过程总览
1.开机自检(bios)
-
在计算机通电后,主板BIOS执行硬件检测(CPU、内存、磁盘等),查看硬件是否有问题。
-
检测成功后,根据BIOS配置的启动顺序,定位包含引导程序的存储设备(如硬盘、USB、光盘)。
总结:检测出第一个能够引导系统的设备,比如硬盘或者光驱
2.MBR引导
若从本机硬盘中启动系统,就读取磁盘的第一个扇区(512字节)中的引导代码(加载并执行下一阶段的引导程序,如GRUB ),来启动完整的GRUB程序
总结:运行放在MBR扇区里的启动GRUB引导程序(该阶段的引导程序不是完整的)
3.GRUB菜单
GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg找到操作系统 。
4.加载内核(kernel)
内核是操作系统的核心组件,负责直接管理计算机的硬件资源(如CPU、内存、磁盘、网络等),并为应用程序提供基础服务。它是操作系统最底层的部分,充当硬件与软件之间的桥梁。
总结:把内核和镜像文件系统加载到内存中
5.init进程初始化
-
加载硬件驱动程序,以及初始化进程,内核把init进程加载到内存中运行。
-
init 进程(PID=1)是 Linux 系统启动后由内核启动的第一个用户进程,负责初始化系统环境、启动服务和管理运行级别(Runlevel)或目标(Target)。
总结:加载硬件驱动程序,内核把init进程加载到内存中运行
1.2系统初始化进程
1.2.1init进程
init进程是系统中第一个进程,是所有进程的父进程
init进程的PID (进程标记)号永远为1
1.2.2sysmted
sysmted是Linux 系统中最主流的 初始化系统(init) 和服务管理器,取代了传统的 SysVinit 和 Upstart。它不仅仅是一个 init进程,而是一个完整的生态系统 。
与传统的 SysVinit 和 Upstart这种串行启动相比,systemd最大的特点是采用并行启动,大幅缩短启动时间。
1.3systemd单元类型
systemd使用单元(Unit)来管理系统中的所有资源,每种单元类型对应不同的系统功能(如服务、设备、挂载点等)。单元通过 单元文件(Unit Files) 定义,文件扩展名标明其类型。以下是所有主要的systemd单元类型及其作用:
单元类型 | 扩展名 | 用途 | 典型示例 |
---|---|---|---|
Service | .service | 管理系统服务(如 Nginx、MySQL) | nginx.service |
Target | .target | 逻辑分组(类似运行级别) | multi-user.target |
Socket | .socket | 按需启动服务(socket 激活) | sshd.socket |
Device | .device | 管理硬件设备(如 /dev/sda1 ) | dev-sda1.device |
Mount | .mount | 挂载文件系统 | home.mount |
Automount | .automount | 自动挂载(类似 autofs ) | mnt-data.automount |
Timer | .timer | 定时任务(替代 cron ) | daily-backup.timer |
Swap | .swap | 管理交换分区 | swapfile.swap |
Path | .path | 文件/目录变化触发服务启动 | monitor-dir.path |
Slice | .slice | 资源控制(cgroups 层级) | user-1000.slice |
Scope | .scope | 外部进程组管理(通常由程序自动创建) | session-1.scope |
Snapshot | .snapshot | 保存当前单元状态(用于临时恢复) | rescue.snapshot |
二.排除启动类故障
2.1MBR扇区故障
2.1.1故障原因
- 病毒、木马的等造成的破坏
- 不正确的分区操作、磁盘读写误操作等
2.1.2故障现象
-
找不到引导代码,启动中断
-
无法加载操作系统,开机后黑屏
2.1.3解决办法
应提前做好备份文件
以安装光盘引导进入急救模式
从备份文件中回复
2.1.4模拟修复MBR扇区故障
1)添加新的硬盘
用lsblk命令查看是否添加成功
2)进行分区,格式化和挂载操作
用lsblk命令查看是否分区成功
格式化,挂载
3)备份 MBR扇区数据 到其他磁盘
4)破坏MBR扇区,模拟MBR扇区故障
5)reboot
6)进入急救模式,用备份文件恢复MBR扇区数据,解决故障
7)恢复正常
2.2grub引导故障
2.2.1故障原因
- MBR中的GRUB引导程序遭到破坏
- grub.cfg 文件丢失、引导配置有
2.2.2故障现象
系统引导停滞,显示 grub> 提示符
2.2.3解决办法
尝试手动输入引导命令
进入急救模式,重写或者从备份中恢复grub.conf
向MBR扇区中重建grub程序
2.2.4模拟修复grub故障
1)删除grub配置文件,重启观察故障情况
2)重启快速按ESC键进入BOOT目录
3)改用光盘启动,引导界面进入急救模式
4)重建GRUB菜单配置文件
切换到系统根环境
chroot /mnt/sysimage
重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MBR扇区
grub2-install /dev/sda
重新构建GRUB菜单的配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
退出并重启
重启成功
2.3遗忘用户密码
2.3.1步骤
-
先关闭selinux安全机制setenforce 0
-
进入急救模式,加载系统镜像,切换到系统根环境chroot /mnt/sysimage
-
重设root用户密码
2.3.2模拟遗忘密码
1)关闭selinux安全机制
2)重启系统按esc键,进入BOOT菜单
3)进入shell的sh环境
4)进入系统根环境bash,passwd改密码
5)退出并重启
6)使用新密码登录,登陆成功
三.linux运行级别
Linux 运行级别是系统启动时定义的不同操作模式,每个级别对应一组特定的服务和应用。传统上,运行级别用于确定系统启动后进入何种状态。
运行级别 | 描述 |
---|---|
0 | 停机(halt),关闭系统 |
1 | 单用户模式(救援模式),仅root可登录,用于系统维护 |
2 | 多用户模式,不带网络功能(Debian系) |
3 | 完整的多用户模式,带网络,文本界面 |
4 | 保留未使用(可自定义) |
5 | 多用户图形界面模式 |
6 | 重启 |
systemctl get-default //获得当前的运行级别
systemctl isolate xxx.target //不重启切换运行级别
四.系统服务控制
4.1系统服务的定义
系统服务(daemon)是在后台运行的程序,提供各种系统功能。
4.2systemctl命令
4.2.1systemctl命令的定义
systemctl是 systemd 系统和服务管理器的控制命令,用于管理 Linux 系统的服务、挂载点、设备等系统资源。它是现代 Linux 发行版中最主要的服务管理工具。
4.2.2命令格式
systemctl 选项 服务名称 //systemctl命令格式
[选项]
start 开启
stop 关闭
status 查看程序状态
reload 重新加载配置文件而不重启
restart 重启
enale 开机自启
disable 开机不自启
systemctl enable --now 程序名 //开机自启并立即启动
4.2.3例子
查看防火墙状态
4.3 Systemd Service Unit 文件
4.3.1定义
Systemd 的 .service
文件是定义系统服务的主要配置文件。
/usr/lib/systemd/system/ - 软件包安装的默认服务文件
/etc/systemd/system/ - 系统管理员自定义或覆盖的服务文件
4.3.2组成
[Unit]
# 通用信息和依赖关系
[Service]
# 服务特定的配置
[Install]
# 安装信息(用于enable/disable)
unit部分
这部分定义服务的元数据和与其他单元的依赖关系:
常用选项 作用
Description 描述信息
After 定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
Before 定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与After相反
Requires 依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活
Wants 依赖到的其它units,弱依赖
Conflicts 定义units间的冲突关系
Documentation 指定与服务相关的文档位置,例如手册、在线文档、帮助链接等。可以包含URL或
文件路径。
Alias 为服务定义别名,系统可以通过别名来引用该服务。常用于创建快捷方式或简化服务
service部分
这部分定义服务的具体行为
[Service]
Type=simple # 服务类型
ExecStart=/usr/bin/myapp # 启动命令
ExecReload=/bin/kill -HUP $MAINPID # 重载命令
ExecStop=/usr/bin/myapp stop # 停止命令
Restart=on-failure # 重启策略
User=myuser # 运行用户
Group=mygroup # 运行组
WorkingDirectory=/path/to # 工作目录
Environment="KEY=value" # 环境变量
EnvironmentFile=/etc/sysconfig/myapp # 环境变量文件
PrivateTmp=true # 使用私有/tmp
ProtectSystem=full # 文件系统保护
install部分
这部分定义服务的安装信息:
[Install]
WantedBy=multi-user.target # 启用时链接到哪个target
Alias=myapp.service # 别名
Also=other-unit.service # 同时安装的其他单元