目录
一 Linux操作系统的引导过程
1 引导过程总览
查找引导启动的设备 查找内核
引导过程总览:开机自检(BIOS) ————> MBR引导 ————> GRUB菜单,加载内核,init进程初始化(是Systemd进程初始化的软链接)
|
目的:是为了向下兼容 ##进程号永远为1
(1)开机自检
- 系统启动前进行自我测试,确认系统资源已分配、驱动正确,并在提示中选择运行内核或更新包。
(2)MBR引导
- 使用预装的
lspc
命令查看当前内存情况,设置为无物理内存模式以避免物理内存冲突和性能问题。
(3)GRUB菜单
- 一个交互式菜单,帮助用户添加、删除或修改内核包,适用于非技术人员安装新软件。
(4)加载Linux内核
- 运行
show sys -a
显示内核信息,并按照提示启动内核程序。
(5)init进程初始化
- 安装新程序前,启动已存在的Linux内核,并配置新程序的资源分配,以确保系统稳定运行。
2 系统初始化进程及文件
(1)init进程
-
概念概述
- 'init进程初始化' 是在 Linux 系统启动前完成的内核管理界面操作。它负责为新安装的内核包分配资源,并启动新运行的应用程序(如软件和服务)。
-
流程简要说明
- 开机自检:确认设备和系统资源已分配,进入内核管理界面。
- 输入内核名和密码:使用键盘快捷键(
n
加回车键)启动内核管理功能。 - 打开内核管理界面:通过
Shift + 8
或右键菜单“进入”进入内核管理界面。 - 选择内核包:输入内核包名称,等待内核启动。
- 设置进程配置:填写进程名、主题和端口地址等基本参数,并调整服务类型和队列规则等高级配置。
- 启动内核程序:按
n
确认进程启动后,内核程序初始化并运行新应用。
-
特点
- 支持内核管理:用于配置和启动内核包(如
lts2
、tumbleweed
)。 - 动态资源分配:可以根据需求自动为新应用分配内存和资源。
- 快速部署新应用:无需手动安装内核,通过内核管理界面即可启动新程序。
- 稳定运行的关键步骤:是 Linux 系统启动新内核的核心操作,确保内核运行良好。
- 支持内核管理:用于配置和启动内核包(如
-
重要性
- 'init进程初始化' 是启动新的内核包的基础操作,也是测试、部署和验证内核的重要环节。
- 完成此步骤后,系统会生成相应的内核文件和新应用程序,保障软件和应用程序的稳定运行。
(2)Systemd概述
Systemd 是一种用于管理系统的日志和日程的工具,主要用于处理软件运行时的数据记录和日期管理。
-
系统日志
- 系统日志记录软件运行时生成的数据,如进程行为、错误信息等。这些日志存储在数据库中,以便后续分析和处理。
- 日志结构通常包括事件类型(如错误、请求)及其时间戳,便于追踪问题发生和解决问题。
-
扩展性
- 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的单元 |
运行级别 | Systemctl的target | 说明 |
0 | 关机状态 | 使用该级别时将会关机 |
1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用户系统维护 |
2 | multi-user.target | 用户定义/域特定运行级别。默认等同于3 |
3 | multi-user.target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
4 | multi-user.target | 用户定义/域特定运行级别。默认等同于3 |
5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境 |
6 | reboot.target | 重新启动,使用该级别是将会重启主机 |
二 排除系统启动类故障
1 MBR扇区故障
(1)备份MBR扇区数据
备份概念
备份 MBR扇区的数据是为了保证在分布式环境中即使因故障或其他问题导致的资源冲突得到有效的恢复,确保系统能够正确无缝运行。
(2)模拟MBR扇区故障
-
文件夹冲突:
- 在不同虚拟化环境中运行相同的代码可能会导致MBS异步启动时的进程不一致。结果是同一文件夹的数据在不同的虚拟机上无法正确读写。
-
读写异常:
- 当应用在不同的虚拟化环境中运行时,MBS的异步启动可能导致某些文件或操作出现错误。例如,磁盘冲突、缓存问题或其他资源分配异常。
-
日志事件不一致:
- 每个虚拟机的MBR扇区存储有独立的日志记录。如果日志中存在不一致的信息(如时间戳或状态码),可能导致后续的应用修复困难或错误发生。
-
性能下降:
- 不一致的配置和异步启动导致的数据问题,可能会降低系统的整体性能。
(3)从备份文件中恢复MBR扇区数据
详细的恢复过程:
-
检查备份磁盘结构
-
在备份磁盘上创建临时目录
-
执行脚本提取MBR扇区数据
-
检查恢复后的备份磁盘结构
-
使用强大的恢复工具
2 GRUB引导故障
GRUB引导故障”是指在使用GRUB进行命令执行时,导出文件夹(grubfile)中出现冲突或错误的情况,导致程序无法正常运行。
3 遗忘root用户的密码
为了解决root用户密码忘记的问题,可以按照以下步骤进行处理:
-
配置缓存日志文件:
- 将根用户的登录行为记录保存为缓存日志文件。
-
使用密码备份恢复方法:
- 定期备份根用户的密码,并设置自动恢复策略。
- 使用特定软件或工具手动恢复密码,确保系统安全不受影响。
-
维护系统安全性:
- 定期检查root用户的账户权限状态,确保其能够正常访问系统。
- 处理可能的异常登录行为或操作,并及时修复漏洞。
三 服务控制以优化启动过程
1 系统服务控制
在OpenEuler系统中,各种系统服务控制脚本默认放在/usr/lib/systemd目录下。通过systemctl命令工具可以实现对指定系统服务控制,语法格式如下:
systemctl 控制类型 服务名称
控制类型 | 定义 |
start(启动) | 运行指定的系统服务程序,实现服务功能 |
stop(停止) | 终止指定的系统服务程序,关闭相应的功能 |
restart(重启) | 先退出,在重新运行指定的系统服务程序 |
reload(重载) | 不退出服务程序,只是刷新配置。在某些服务中与restart的操作相同。 |
status(查看状态) | 查看指定的系统服务的运行状态及相关信息 |
systemctl --version ##基本命令使用
systemctl --rm +logdirectory /path/to/logdir +llogfile /path/to/logfile.log ##关闭后台服务
echo "运行日志处理服务..." | systemctl +llogfile logdir
2 切换运行级别
(1)查看系统的target
在Linux系统中,“target”指的是目标或实现者,即程序或命令的实现者。例如,在编程语言中,“target”通常指函数的参数位置或者特定的类结构。
然而,在你的查询中,使用“systemctl”与“target”似乎不太相关,因为systemctl
主要用于管理后台系统的服务和资源,而不是直接查找目标配置文件的位置。如果需要查看某些系统服务或文档文件的位置,可以使用man1
或man3
命令来访问文档。
[root@localhost ~ ]# runlevel
N 5
[root@localhost ~ ]# systemctl get-default
graphical.target #图形模式
(2)切换系统的target
在Linux系统中,“target
”通常指某一个目标或实现者,即程序、函数或者工具的实现者。
[root@localhost ~ ]# init 3
[root@localhost ~ ]# runlevel
5 3
[root@localhost ~ ]# systemctl isolate multi-user.target
[root@localhost ~ ]# init 0 ##关闭当前系统
[root@localhost ~ ]#inti 6 ##重启当前系统
[root@localhost ~ ]# systemctl poweroff ##关闭当前系统
[root@localhost ~ ]# systemctl reboot ##重启当前系统
3 优化启动过程
(1)常见的系统服务
服务名称 | 用途 | 备注 |
atd | 延期,定时执行任务 | 建议关闭 |
bluetooth | 发现,认证蓝牙相关设备 | 建议关闭 |
crond | 按预定周期执行计划任务 | 建议开启 |
irqbalance | 多核心CPU处理器调度支持 | 建议开启 |
kdump | 记录内核崩溃时的内存信息 | 建议关闭 |
lvm2-monitor | LVM管理及监控 | 建议开启 |
netfs | 访问共享文件夹等网络文件系统 | 建议开启 |
network | 配置及使用网卡,网络地址 | 建议开启 |
restorecond | SELinux安全机制的文件监控和恢复功能 | 建议关闭 |
rhnsd | 访问Red Hat Network,获取通知,提交订阅等 | 建议关闭 |
rpcgssd | 管理NFS访问中的客户程序语境 | 建议关闭 |
saslauthd | 基于文本的身份认证 | 建议关闭 |
smartd | 监控本地硬盘的状态并开发送故障报告 | 建议开启 |
smb | 文件共享服务 | 建议关闭 |
sshd | 提供远程登录和管理Linux主机的功能 | 建议开启 |
rsyslog | 记录内核,系统的日志消息 | 建议开启 |
vsftpd | 通过FTP提供文件上传,下载功能 | 建议关闭 |
(2)优化开机自动加载的服务
1.背景
在Linux系统中,后台进程的管理是程序运行的基本操作之一。通过启动后台进程 (systemctl start process
)、修改配置文件的位置 (systemctl --modify ...
) 等命令,可以简化后台系统的管理流程,提高效率。
2.优化开机自动加载服务的核心概念
启动后台进程和调整配置文件的位置是优化开机自动加载服务的关键步骤。这些操作不仅提升了系统的运行效率,还为处理复杂的任务和维护后台系统提供了更高效的方法。
(1)使用ntsysv工具
-
启动后台进程:
- 使用
nstatsl start process
或sudo systemctl start user
通过 NTSYSV 进行后台进程的自动启动和管理。
- 使用
-
修改配置文件位置:
- 根据需求动态调整日志路径、设备列表和默认服务,例如使用
nstatc --modify configuration-file
或nstatc --modify service-path
来实现。
- 根据需求动态调整日志路径、设备列表和默认服务,例如使用
(2)使用systemctl工具
在Linux系统中,“systemctl”是一个广泛使用的命令行工具,用于管理后台系统的服务。它可以帮助我们自动启动用户进程、修改日志路径和设备信息,并支持动态管理默认后台服务。
sudo systemctl start user # 启动用户进程
sudo systemctl modify-logpath #
修改日志路径sudo systemctl start getmainprocess #启动当前用户进程
sudo systemctl modify-device-list #修改设备信息