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 | 设置服务开机自启 | | |

参考示例:

cpp 复制代码
[root@localhost ~]# systemctl start sshd
[root@localhost ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 一 2025-02-10 22:34:33 CST; 49min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1167 (sshd)
    Tasks: 1
   CGroup: /system.slice/sshd.service
           └─1167 /usr/sbin/sshd -D

2月 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 daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 一 2025-02-10 23:24:54 CST; 3s ago
     Docs: 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引导扇区到其他磁盘
cpp 复制代码
[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故障
cpp 复制代码
[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故障
cpp 复制代码
[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、重置密码
相关推荐
蓝创精英团队15 分钟前
基于Ubuntu Ollama 部署 DeepSeek-R132B 聊天大模型(附带流式接口调用示例)
linux·运维·ubuntu·deepseek
下雨天u21 分钟前
jenkins手动安装插件
运维·jenkins
渲染101专业云渲染1 小时前
川翔云电脑是什么?租电脑?
运维·服务器·电脑
007php0071 小时前
Docker、Ollama、Dify 及 DeepSeek 安装配置与搭建企业级本地私有化知识库实践
运维·服务器·开发语言·后端·docker·容器·云计算
快去睡觉~2 小时前
Linux之Http协议分析以及cookie和session
linux·运维·http
shadowcz0072 小时前
Open-Interface:基于大语言模型 LLM 的自动化界面操作系统
运维·人工智能·语言模型·自然语言处理·自动化
世界尽头与你2 小时前
【网络法医】Docker取证
运维·安全·网络安全·docker·容器
狄加山6752 小时前
网络编程(预备知识)
服务器·网络·php
致奋斗的我们2 小时前
项目:利用rsync备份全网服务器数据
linux·运维·服务器·开发语言·github·rsync·openeuler
Htht1112 小时前
【Linux】之【bug】“sudo wpa_cli -i wlan0 scan“ 返回 FAIL-BUSY 解决
linux·运维·bug