Linux系统引导与服务管理

发布于:2025-02-11 ⋅ 阅读:(16) ⋅ 点赞:(0)

目录

一、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 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引导扇区到其他磁盘
[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、重置密码