Linux引导过程大致分为以下几个步骤:
-
主引导记录(Master Boot Record,MBR)加载:计算机开机时会读取硬盘上的主引导记录,主引导记录包含了引导加载程序,这个引导加载程序会查找操作系统的启动文件。
-
引导加载程序加载:引导加载程序可以是GRUB(Grand Unified Boot Loader)或者其他引导加载程序,它负责加载操作系统的内核(kernel)和初始内存盘(initrd)。
-
内核加载:引导加载程序会加载Linux内核,内核是操作系统的核心,它负责管理系统的资源,处理系统调用等。
-
initrd加载:在一些系统中,initrd是一个临时根文件系统,包含了启动所需的驱动程序和工具。一旦内核加载完成,initrd会被卸载。
-
初始化进程启动:内核加载完成后,会启动第一个用户空间进程 init(或者 systemd),这个进程负责初始化系统,加载设备驱动程序,启动系统服务等。
1.系统初始化进程及文件
1.init进程
Linux系统中进程会用数字进行标记,称为PID,“/sbin/init”是第一个内核加载的程序,进程对应的PID总为1。
2.systemd概述
centos 7 系统中全新的systemd启动方式,取代了传统的sysvinit。systemd守护进程负责Linux的系统和服务,systemctl用于控制systemd管理的系统和服务状态。
单元类型 | 扩展名 | 说明 |
service | .service | 描述一个系统服务 |
socket | .socket | 描述一个进程间通信的套接字 |
device | .device | 描述一个内核识别的设备文件 |
mount | .mount | 描述一个文件系统的挂载点 |
automount | .automount | 描述一个文件系统的自动挂载点 |
swap | .swap | 描述也该内存交换设备或交换文件 |
path | .path | 描述一个文件系统中文件或目录 |
timer | .timer | 描述一个的定时器 |
snapshot | .snapshot | 用于保存一个systemd状态 |
scope | .scope | 使用systemd的总线接口以编程的方式创建外部进程 |
slice | .slice | 描述居于cgroup的一组通过层次组织的管理进程 |
target | .target | 描述一个systemd的单元 |
Linux系统服务是指运行后台提供特定功能的应用程序,如网站,FTP等
在Linux系统中,运行级别(runlevel)是系统的一种状态,决定了系统启动时运行哪些服务和进程。在传统的Unix系统中,运行级别通常从0到6,每个级别代表了系统启动时运行的不同服务和进程。不同的运行级别可以用来实现不同的功能,例如单用户模式、多用户图形模式等。
在现代的Linux系统中,通常使用systemd作为初始化系统,而不再使用传统的运行级别。systemd引入了targets的概念,用于替代传统的运行级别。每个target都定义了一组需要启动的服务和进程,类似于传统运行级别的概念。
运行级别 | systemd的target | 说明 |
0 | 关机状态 | 使用该级别会关闭主机 |
1 | rescue.target | 单用户模式,不需要密码登录,多用于系统维护 |
2 | multi-user.target | 用户定义/域特定级别,默认等同于3 |
3 | mulit-user.target | 字符界面的完整多用户模式 |
4 | mulit-user.target | 用户定义/域特定运行级别,默认等同于3 |
5 | graphical.target | 图形界面的多用户模式 |
6 | reboot.target | 重新启动,使用会重启主机 |
2.排除系统启动类故障
1.MBR扇区故障
MBR(Master Boot Record)是存储在磁盘的第一个扇区(通常是第0扇区)上的特殊区域,用于启动计算机并加载操作系统。MBR包含了启动代码和分区表,其中记录了硬盘上所有分区的信息。
在MBR中,主要包含以下内容:
-
主引导记录(Master Boot Record):存储在磁盘的第一个扇区,占用512个字节。其中包含了引导加载程序(Boot Loader)和分区表。
-
分区表(Partition Table):记录了硬盘上各个分区的信息,例如分区类型、起始位置、大小等。MBR最多支持4个主分区,或者3个主分区和一个扩展分区,每个扩展分区可以包含多个逻辑分区。
-
引导加载程序(Boot Loader):负责加载操作系统并将控制权交给操作系统的内核。引导加载程序会查找操作系统所在的分区,并将其加载到内存中执行。
备份MBR扇区数据
将第一块硬盘的MBR扇区备份到/dev/sda1
模拟MBR扇区故障
执行以下操作可以从设备文件zero中读取512字节数据覆盖到第一块硬盘
3.从备份文件恢复MBR扇区数据
在向导界面选择‘troubleshooting’选项
再选择“rescue a openeuler linux system”选项,将以救援模式引导Linux操作系统
然后系统会自动查找硬盘中的Linux分区将其挂载,再输入”1“确认
按回车键后进入提示符界面、
完成恢复后,输入exit退出,系统会自动重启。
2.GRUB引导故障
GRUB(GRand Unified Bootloader)是一个常用的引导加载程序,用于在计算机启动时加载操作系统。GRUB通常安装在硬盘驱动器的引导扇区,负责加载操作系统内核并引导系统启动。
GRUB引导故障可能出现在多种情况下,例如:
- 操作系统或内核更新导致的配置问题。
- 硬盘损坏或分区错误。
- 多重引导设置错误。
- 操作系统安装错误或损坏。
- 各种原因导致的GRUB配置文件损坏。
在该提示符后进行编辑,输入对应的引导命令(参考其他版本的文件引导语句),执行boot命令即可正常引导。
3.遗忘root用户的密码:
重新启动计算机,在引导过程中按下 Shift 键,进入 GRUB 引导菜单。进入救援模式
输入:passwd root
4.系统服务控制
systemctl 控制类型 服务名称
常见的控制类型如下:
start(启动):运行指定的系统服务程序,实现服务功能。
stop(停止):终止指定的系统服务程序,关闭功能。
restart(重启):重新启动指定服务程序。
reload(重载):不退出服务程序,刷新配置。
status(查看状态):查看指定的系统服务的运行状态。
例如:执行以下操作可启动尚未运行的服务。
5.切换运行级别
1.查看当前系统的target
2.切换系统的target
init 运行级别
6.优化启动过程
使用ntsysv工具
操作时按方向键来选择不同的系统服务,按空格键开启或关闭系统服务的默认状态