当前位置: 首页 > news >正文

Linux系统引导与服务管理

目录

一、Linux引导过程

1、引导过程概述

 1.1、BIOS开机自检

1.2、MBR读取

1.3、加载引导加载程序(GRUB)

1.4、内核加载

1.5、初始化进程(init)

二、服务

2.1、服务类型

2.2、服务管理工具

三、运行级别

四、systemd

4.1、systemd主要功能

 4.2、systemd单元类型

4.3、systemctl命令

五、系统引导故障排除

5.1、修复MBR分区

5.1.1、备份MBR引导扇区到其他磁盘

 5.1.2、模拟mbr故障

5.1.3、重启进入急救模式,进行备份恢复操作

5.2、修复GRUB分区

5.2.1、模拟GRUB故障

5.2.2、进入急救模式

5.2.3、重新安装grub配置文件

5.3重置用户密码

5.3.1重启并执行内核参数

5.3.2、重置密码


一、Linux引导过程

1、引导过程概述

 1.1、BIOS开机自检
  • 按下开机键后,BIOS进行硬件自检,检查硬件是否正常。
  • 加载硬盘的MBR(主引导记录)。
1.2、MBR读取
  • MBR存储在硬盘的第一个扇区(0扇区),包含引导程序(GRUB)和分区表。BIOS将控制权交给MBR中的引导程序(GRUB)。
1.3、加载引导加载程序(GRUB)
  • GRUB通过读取配置文件/boot/grub2/grub.cfg,获取内核和镜像文件系统的设置与路径位置。
1.4、内核加载
  • GRUB加载并启动操作系统的内核(Linux kernel)。内核是操作系统的核心,负责硬件管理、进程调度、文件系统管理等。
  • 内核被加载到内存中并开始初始化系统。
1.5、初始化进程(init)
  • 加载硬件驱动程序,内核将init进程加载到内存中运行
  • 内核启动第一个用户空间进程init(PID=1),它负责启动和管理所有的系统服务和守护进程。

二、服务

服务(Service)是指后台运行的程序或进程,服务通常在系统启动时自动启动并运行,负责提供特定的功能或服务。

2.1、服务类型
  • 系统服务:系统启动时启动,负责提供基础的系统功能,如网络、日志记录、硬件管理等。
  • 应用服务:提供特定的应用功能,通常由应用程序启动和停止。如nginx、mysql等。
  • 守护进程:后台运行的服务,不需要用户干预。通常在系统启动时启动,并持续运行直到系统关闭。如httpd、ntpd等。
  • 网络服务:提供网络相关的功能。如dnsmasq、apache等。
2.2、服务管理工具
  • init:Unix与Linux系统中传统的服务管理器,依赖于串行执行脚本来管理服务,导致效率低下,系统启动速度较慢。
  • systemd:现代Linux系统中最常用的服务管理工具,它负责启动、停止和管理服务,并通过systemctl命令于服务进行交互。它能够将更多的服务进程并行启动,可按需启动服务,使得启动更少进程,从而提高系统启动速度。

三、运行级别

Linux系统中,运行级别(Runlevel)是指在系统启动过程中进入的不同状态。每个运行级别代表系统的不同工作状态,决定了哪些服务和进程会被启动。

init 0 (关机)关闭所有服务并关机
init 1 (单用户模式)用于修复文件系统、恢复丢失的密码或修复系统问题,仅限root用户登录,不启动网络服务
init 3 (多用户模式)多用户模式,命令行界面的服务器,支持网络服务
init 5 (多用户模式)支持图形界面的多用户模式
init 6 (重启)执行完整的关机过程,然后重新启动

四、systemd

 systemd是现代Linux系统中的初始化系统和系统管理守护进程,取代了传统的SysVinit和Upstart系统。它负责启动系统服务的同时,还管理系统的启动过程、进度调度、日志记录、设备管理等任务。

4.1、systemd主要功能
  • 并行启动::并行启动系统服务,大幅提高系统启动速度。
  • 服务管理:通过单独的服务单位(unit)管理服务和进程,可以启动、停止、重启、查询服务状态。
  • 日志管理:包含journald日志系统,集成日志收集、查看和分析,简化了日志管理。所有系统日志、服务日志可通过journalctl工具查看。
  • 目标(Target):通过目标代替传统的运行级别。
  • 依赖关系管理:支持服务之间的依赖关系,确保服务按正确的顺序启动和关闭。
  • 并发和资源控制:通过资源控制和调度器,优化系统资源的使用,提供更高效的服务管理。
 4.2、systemd单元类型

systemd使用单元(unit)来表示管理的不同资源。每个单元都有一个配置文件,定义了该单元的属性和行为,常见的单元类型包括

  • service:管理服务进程,例如 Web 服务器、数据库等。
  • target:表示运行级别或目标状态。例如multi-user.target表示多用户模式,graphical.target表示图形界面模式。
  • socket:管理套接字(Socket)服务,通常用于延迟启动服务。
  • mount:管理挂载点,定义系统如何挂载文件系统。
  • timer:用于管理定时任务,类似于cron。
  • device:管理设备,表示系统中可用的设备。
4.3、systemctl命令

system control的缩写,功能是管理系统服务。

语法格式:systemctl 参数 动作 服务名

start启动服务disable取消服务开机自启
stop

停止服务

status查看服务状态
restart重启服务list显示所有已启动服务
enable设置服务开机自启

参考示例:

[root@localhost ~]# systemctl start sshd
[root@localhost ~]# systemctl status sshd
● sshd.service - OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)Active: active (running) since 一 2025-02-10 22:34:33 CST; 49min agoDocs: man:sshd(8)man:sshd_config(5)Main PID: 1167 (sshd)Tasks: 1CGroup: /system.slice/sshd.service└─1167 /usr/sbin/sshd -D2月 10 22:34:32 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
2月 10 22:34:33 localhost.localdomain sshd[1167]: Server listening on 0.0.0.0 port 22.
2月 10 22:34:33 localhost.localdomain sshd[1167]: Server listening on :: port 22.
2月 10 22:34:33 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# systemctl restart sshd
[root@localhost ~]# systemctl stop sshd
[root@localhost ~]# systemctl status sshd
● sshd.service - OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)Active: inactive (dead) since 一 2025-02-10 23:24:54 CST; 3s agoDocs: man:sshd(8)man:sshd_config(5)Process: 3335 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=0/SUCCESS)Main PID: 3335 (code=exited, status=0/SUCCESS)2月 10 23:24:43 localhost.localdomain systemd[1]: Stopped OpenSSH server daemon.
2月 10 23:24:43 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
2月 10 23:24:43 localhost.localdomain sshd[3335]: Server listening on 0.0.0.0 port 22.
2月 10 23:24:43 localhost.localdomain sshd[3335]: Server listening on :: port 22.
2月 10 23:24:43 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
2月 10 23:24:54 localhost.localdomain systemd[1]: Stopping OpenSSH server daemon...
2月 10 23:24:54 localhost.localdomain systemd[1]: Stopped OpenSSH server daemon.
Hint: Some lines were ellipsized, use -l to show in full.

五、系统引导故障排除

5.1、修复MBR分区
5.1.1、备份MBR引导扇区到其他磁盘
[root@localhost ~]# mount /dev/sdb1 /mnt                //挂载备份用硬盘
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   14G  0 part ├─centos-root 253:0    0   10G  0 lvm  /└─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   20G  0 part /mnt            //挂载成功
sr0              11:0    1  4.4G  0 rom  /run/media/root/CentOS 7 x86_64
[root@localhost ~]# dd if=/dev/sda of=/mnt/mbr.bak count=1 bs=512    //备份mbr
记录了1+0 的读入   //    输入         输出            块个数   块大小
记录了1+0 的写出
512字节(512 B)已复制,0.000218308 秒,2.3 MB/秒
[root@localhost ~]# ls /mnt
mbr.bak
 5.1.2、模拟mbr故障
[root@localhost ~]# dd if=/dev/zero of=/dev/sda count=1 bs=512    //用0覆盖mbr扇区数据
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000164001 秒,3.1 MB/秒
[root@localhost ~]# hexdump -C -n512 /dev/sda            //破坏mbr扇区完成
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200
[root@localhost ~]#reboot        //重启
5.1.3、重启进入急救模式,进行备份恢复操作

5.2、修复GRUB分区
5.2.1、模拟GRUB故障
[root@localhost ~]# ls /boot/grub2/
device.map  fonts  grub.cfg  grubenv  i386-pc  locale
[root@localhost ~]# rm -rf /boot/grub2/grub.cfg        //删除grub配置文件
[root@localhost ~]# ls /boot/grub2/
device.map  fonts  grubenv  i386-pc  locale
[root@localhost ~]# reboot                             //重启

 

5.2.2、进入急救模式

5.2.3、重新安装grub配置文件

5.3重置用户密码
5.3.1重启并执行内核参数

5.3.2、重置密码

http://www.lryc.cn/news/535256.html

相关文章:

  • 网络工程师 (30)以太网技术
  • react项目引入tailwindcss不生效解决方案
  • 【C#】条件运算符
  • Windows11+PyCharm利用MMSegmentation训练自己的数据集保姆级教程
  • WPS计算机二级•文档的文本样式与编号
  • Word中Ctrl+V粘贴报错问题
  • python-leetcode 24.回文链表
  • 数据治理双证通关经验分享 | CDGA/CDGP备考全指南
  • 3.4 学习UVM中的uvm_monitor类分为几步?
  • Java在大数据处理中的应用:从MapReduce到Spark
  • 日常吐槽。
  • 2025最新版Node.js下载安装~保姆级教程
  • 机器学习:学习记录(二)
  • 迁移学习 Transfer Learning
  • 实现:多活的基础中间件
  • Mybatis源码01 - 总体框架设计
  • 在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合
  • Selenium WebDriver自动化测试(扩展篇)--Jenkins持续集成
  • Wiki文档转换为Word技术
  • 1.【线性代数】——方程组的几何解释
  • 力扣1448. 统计二叉树中好节点的数目
  • 【C#零基础从入门到精通】(二)——C#注释和命名法详解
  • SQLServer的创建,表创建,主键,约束,模糊查询
  • DeepSeek深度思考:客户端(Android/iOS)架构设计指南
  • 亚远景-精通ASPICE:专业咨询助力汽车软件开发高效合规
  • OpenCV 相机标定流程指南
  • 项目场景拷打
  • Vue2生命周期面试题
  • 【每日一题 | 2025】2.3 ~ 2.9
  • 使用OpenGL自己定义一个button,响应鼠标消息:掠过、点击、拖动