首页 > 系统相关 >Linux7的启动原理和服务控制

Linux7的启动原理和服务控制

时间:2024-01-24 13:01:32浏览次数:32  
标签:引导 systemd 配置文件 启动 图形界面 Linux7 原理 加载

1、CentOS6的启动过程和原理

BIOS/UEFI 阶段--->GRUB 阶段--->内核引导阶段--->Init 阶段--->运行级别切换阶段--->服务启动阶段--->图形界面或命令行登录阶段--->用户登录

BIOS/UEFI 阶段: 在计算机开机时,BIOS(或UEFI)会执行自检和硬件初始化,然后从启动设备(通常是硬盘)的 MBR(主引导记录)中加载引导加载程序(GRUB)。
​
GRUB 阶段: GRUB(Grand Unified Bootloader)负责加载操作系统内核和初始 RAM 磁盘(initrd)映像到内存中。
​
内核引导阶段: 加载内核和 initrd 后,Linux 内核会初始化硬件,加载设备驱动程序并挂载根文件系统。
​
Init 阶段: 系统进入用户空间,init 进程(通常是 /sbin/init)成为第一个用户空间进程,根据 /etc/inittab 中的配置启动所需的运行级别。
​
运行级别切换阶段: Init 进程根据运行级别的配置,切换到相应的运行级别。在切换过程中,init 会启动或停止各个系统服务,以满足所选运行级别的需求。
​
服务启动阶段: 根据运行级别的不同,系统会启动相应的服务,如网络服务、文件系统挂载等。
​
图形界面或命令行登录阶段: 如果运行级别指定了图形模式,系统会启动 X Window 系统和图形界面。否则,系统进入文本模式并等待用户登录。
​
用户登录: 用户可以通过图形界面登录管理器(如 GDM)或文本界面登录。

Linux 6启动过程

MBR:代表主引导记录(Master Boot Record),它是存在于计算机硬盘的特定扇区(通常是第一个扇区)中的一个小型程序。MBR在启动过程中起着关键作用,它包含了引导加载程序(bootloader)和分区表信息。

引导加载程序(bootloader)是MBR中的一部分,它的主要功能是引导操作系统的加载。在计算机启动时,BIOSUEFI会首先加载MBR中的引导加载程序,并根据引导加载程序的指令,从硬盘的特定分区中加载操作系统的核心部分到内存中,然后启动操作系统。

  • MBR的结构如下:

  • 引导加载程序(bootloader):通常占用446字节。一个小型程序,负责启动操作系统。

  • 分区表:占用64字节。MBR中包含4个16字节的分区表项,每个分区表项用于描述一个分区的信息,如起始位置、大小等。

  • 魔术字节:占用2字节一个特殊的标识,用于标志MBR的有效性。

GRUB代表GRand Unified Bootloader,是一个常用的开源引导加载程序,用于管理计算机的引导过程,从而加载操作系统或其他引导程序。它的主要功能是在计算机启动时提供用户选择不同的操作系统或内核版本,以及执行其他引导相关任务。

  • 多操作系统支持GRUB允许用户在同一计算机上安装并引导多个不同的操作系统,如不同版本的LinuxWindows等。

  • 配置灵活GRUB的配置文件可以被编辑,使用户可以自定义引导菜单和选项,以及设置默认启动项。

  • 模块化设计GRUB支持模块化加载,这意味着它可以加载不同的模块以支持不同的文件系统、硬件和功能。模块化功能相对较有限,许多功能都被直接编译进引导加载程序中,导致引导加载程序可能较大。模块的使用和加载在GRUB Legacy中相对较少。

  • 图形界面支持GRUB可以使用图形界面显示引导菜单,提供更友好的用户体验。

  • 命令行界面:除了图形界面,GRUB还提供了命令行界面,允许用户手动输入命令来执行引导操作。

  • 内存映像支持GRUB可以将操作系统内核和初始 RAM 磁盘(initrd)映像加载到内存中,从而减少硬盘读取。

initCentOS 6 使用的是SysV init 初始化系统,这是一种传统的初始化和进程管理方式。

  • 作用init是系统的第一个用户空间进程,负责初始化系统,启动必要的服务和进程,为用户提供可用的操作环境。

  • 运行级别:CentOS 6 使用运行级别(runlevel)来管理系统状态。每个运行级别定义了要启动的一组服务,例如单用户模式、多用户图形模式、网络模式等。通过切换运行级别,可以在不同的系统状态间切换。

  • 启动脚本:系统服务和进程通过启动脚本(init scripts)来定义和管理。这些脚本通常位于 /etc/init.d/ 目录下,通过执行脚本名加上 start、stop、restart 等参数,可以启动、停止或重新启动相应的服务。

  • 依赖关系init 脚本通常包含有关服务依赖关系的信息,使得在启动和停止服务时可以正确地处理依赖关系。但是依赖关系的管理需要手动配置。

  • 启动顺序:在系统启动过程中,init 按照依赖关系和指定的运行级别顺序启动和停止服务。每个运行级别都可以自定义启动的服务。

  • 管理方式:使用命令行工具(例如 servicechkconfig)来管理服务。service 命令用于启动、停止和管理服务,chkconfig 命令用于设置服务是否随系统启动而启动。

  • 限制:由于是传统的初始化系统,SysV init 在处理并行启动、自动化管理等方面相对较为有限,可能需要更多的手动管理和配置。

runlevel:运行级别(runlevel)是指操作系统运行的不同工作模式或状态,每个运行级别决定了要启动的服务和进程。在初始化过程中,系统可以切换到不同的运行级别,以便在不同的场景下运行。每个运行级别对应不同的服务启动状态,例如单用户模式、多用户图形模式、网络模式等。

以下是常见的运行级别及其含义,这些级别可能在不同的系统上有所不同:

  • 0 - 关机: 系统关闭并停止。

  • 1 - 单用户模式: 只有基本的系统服务启动,用户可以执行维护和修复任务。

  • 2 - 多用户文本模式: 启动多个基本的系统服务,但不包括图形界面。

  • 3 - 多用户文本模式: 与运行级别2类似,但可能启动更多服务,适用于服务器环境。

  • 4 - 保留: 通常不使用,可以自定义为特定的运行级别。

  • 5 - 多用户图形模式: 启动多个系统服务,包括图形界面,适用于桌面系统。

  • 6 - 重启: 系统重新启动。

/etc/inittab:在传统的 SysV init 系统中,运行级别通过修改该文件来配置。默认的运行级别由 initdefault 行决定。在运行时,可以使用 init 命令或 telinit 命令来切换运行级别。每个运行级别对应的服务和进程在 /etc/rc.d/rcX.d 目录中有对应的符号链接,其中 X 是运行级别的数字。

 

2、CentOS7的启动原理

BIOS/UEFI 阶段--->GRUB2 阶段--->内核引导阶段--->systemd 引导阶段--->服务和模块加载阶段--->系统目标阶段--->服务启动阶段--->图形界面或命令行登录阶段--->用户登录

BIOS/UEFI 阶段: 计算机开机时,BIOS(或UEFI)执行自检和硬件初始化,然后从启动设备的 EFI System Partition(ESP)或MBR(主引导记录)中加载引导加载程序(GRUB2)。

GRUB2 阶段: GRUB2 负责加载操作系统内核和初始 RAM 磁盘(initramfs)映像到内存中。

内核引导阶段: Linux 内核初始化硬件,加载设备驱动程序并挂载根文件系统。systemd 是第一个用户空间进程,作为 init 进程的替代。

systemd 引导阶段: systemd 初始化用户空间,并根据默认目标(target)或启动参数决定启动的服务和进程。默认目标是一个预定义的系统状态,类似于传统的运行级别。

服务和模块加载阶段: systemd 并行加载启动所需的系统服务、模块和设备驱动程序,提高了系统启动速度。

系统目标阶段: 根据默认目标或启动参数,systemd 启动相应的系统目标,这些目标定义了一组要启动的服务。例如,multi-user.target 是类似传统的运行级别 3,而 graphical.target 是类似运行级别 5,用于启动图形界面。

服务启动阶段: 在每个系统目标中,systemd 会启动相应的服务,包括网络服务、文件系统挂载等。

图形界面或命令行登录阶段: 如果目标包括图形界面,系统会启动 X Window 系统和图形界面。否则,系统进入文本模式并等待用户登录。

用户登录: 用户可以通过图形界面登录管理器(如 GDM)或文本界面登录。

Linux 7 启动过程

  • MBR:代表主引导记录(Master Boot Record),它是存在于计算机硬盘的特定扇区(通常是第一个扇区)中的一个小型程序。MBR在启动过程中起着关键作用,它包含了引导加载程序(bootloader)和分区表信息。

    引导加载程序(bootloader)是MBR中的一部分,它的主要功能是引导操作系统的加载。在计算机启动时,BIOSUEFI会首先加载MBR中的引导加载程序,并根据引导加载程序的指令,从硬盘的特定分区中加载操作系统的核心部分到内存中,然后启动操作系统。

    • MBR的结构如下:

    • 引导加载程序(bootloader):通常占用446字节。一个小型程序,负责启动操作系统。

    • 分区表:占用64字节。MBR中包含4个16字节的分区表项,每个分区表项用于描述一个分区的信息,如起始位置、大小等。

    • 魔术字节:占用2字节一个特殊的标识,用于标志MBR的有效性。

  • GRUB2GNU GRand Unified Bootloader 2)是GRUB的后续版本,是一个重新设计和重写的引导加载程序。与早期的GRUB(通常被称为GRUB LegacyGRUB 0.97)相比,GRUB2引入了许多新的功能和改进,以适应现代计算机系统的需求。

    • 支持更多文件系统GRUB2具有更广泛的文件系统支持,包括更现代的文件系统类型,如ext4、Btrfs、ZFS等。

    • 模块化设计GRUB2采用了模块化的设计,允许按需加载不同的模块来支持不同的功能,从而减小引导加载程序的体积。

    • 动态配置文件GRUB2使用更灵活的配置文件格式,允许用户在不重新编译的情况下编辑配置,使自定义更加方便。

    • 支持图形界面GRUB2内置了图形界面支持,可以在引导菜单中显示图形界面,提供更直观的用户体验。

    • 更强大的脚本功能GRUB2引入了更强大的脚本功能,允许用户编写复杂的引导脚本,从而实现更高级的引导配置。

    • 更好的国际化支持GRUB2具有更好的国际化和本地化支持,可以显示不同语言的菜单项和提示。

    • 更好的硬件兼容性GRUB2在硬件兼容性方面进行了改进,可以更好地处理现代计算机系统的硬件。

  • systemd:现代的初始化系统和系统管理器,已经取代了传统的 SysV init,成为许多 Linux 发行版中的标准初始化系统。它以并行化的方式初始化和管理系统服务和进程,提供更好的性能、管理能力和可维护性。以下是 systemd 的一些关键特点和功能:

    • 并行启动: systemd 可以并行加载和启动多个系统服务,从而显著提高系统启动速度。

    • 单元文件: systemd 使用单元文件(unit files)来定义和配置系统服务、套接字、挂载点等。每个单元文件都以.service.socket.mount 等扩展名结尾,通过这些文件管理服务的启动、停止和管理。

    • 依赖关系管理: systemd 自动处理服务之间的启动顺序和依赖关系,确保服务按照正确的顺序启动。

    • 运行级别替代: systemd 引入了概念上类似于运行级别的“目标”(target),例如 multi-user.target 对应多用户文本模式,graphical.target 对应图形界面模式。这些目标定义了一组要启动的服务。

    • 套接字激活: systemd 支持套接字激活,允许服务在需要时才启动,从而减少资源占用。

    • 日志记录: systemd 采用了 journald 来管理系统日志,使日志记录更为先进和方便。

    • cgroups 支持: systemd 使用控制组(cgroups)来管理和隔离进程,提供更好的资源管理和限制。

    • 可插拔性: systemd 具有模块化的架构,支持插件和扩展,可以根据需要加载不同的功能模块。

    • 用户会话管理: systemd 也可以用于管理用户会话,包括登录会话和用户服务。

  • unit:是'systemd中用于定义和管理系统资源的通用概念。

    它可以表示各种不同类型的系统资源,如服务、套接字、挂载点、设备等。每种类型的 unit 都有相应的配置文件,以 .service.socket.mount 等不同的扩展名结尾。以下是一些常见的 systemd unit 类型:

    1. Service Unit(服务单元): 用于定义和管理系统服务。服务单元文件的扩展名为 .service。例如:sshd.service 表示 SSH 服务。

    2. Socket Unit(套接字单元): 用于描述系统套接字。套接字单元文件的扩展名为 .socket。例如:sshd.socket 表示 SSH 套接字。

    3. Mount Unit(挂载单元): 用于描述文件系统的挂载。挂载单元文件的扩展名为 .mount。例如:var-lib.mount 表示 /var/lib 文件系统的挂载。

    4. Automount Unit(自动挂载单元): 用于描述自动挂载。自动挂载单元文件的扩展名为 .automount

    5. Path Unit(路径单元): 用于监控文件或路径的变化,并在变化发生时触发相应的操作。路径单元文件的扩展名为 .path

    6. Timer Unit(定时器单元): 用于定期触发指定的操作。定时器单元文件的扩展名为 .timer

    7. Device Unit(设备单元): 用于描述设备。设备单元文件的扩展名为 .device

    8. Swap Unit(交换单元): 用于描述交换分区。交换单元文件的扩展名为 .swap

    9. Target Unit(目标单元): 用于描述一个需要达到的状态。例如:multi-user.target 表示多用户文本模式。

    10. Snapshot Unit(快照单元): 用于保存系统的状态快照。快照单元文件的扩展名为 .snapshot

    除了上述常见的 unit 类型,systemd 还支持其他类型的 unit,以满足不同的系统管理需求。每种 unit 都有相应的配置文件,用于定义其属性、依赖关系和操作。通过配置这些 unit,可以实现对系统资源的高度控制和管理。

  • unit的存储位置:

  1. /usr/lib/systemd/system/ 目录:

    • 这个目录是系统默认的 unit 配置文件存放位置,其中包含了系统安装的软件包所提供的 unit 配置文件。

    • 这些配置文件通常不应该被用户手动修改,因为它们可能会在软件包的更新过程中被替换。

    • 软件包的维护者会在这个目录下提供用于启动、管理和配置软件包提供的服务、套接字、挂载等各种类型的 unit 配置文件。

    1691808997509

  2. /etc/systemd/system/ 目录:

    • 这个目录是用于用户自定义的 unit 配置文件,它会覆盖 /usr/lib/systemd/system/ 目录中相同名称的配置文件。

    • 用户可以在这个目录中创建自己的 unit 配置文件,以定制、扩展或修改系统提供的服务和资源。

    • 用户自定义的配置文件会覆盖默认的配置,这样可以在不修改软件包提供的配置的情况下进行个性化的设置。

    1691809043101

  3. /run/systemd/system/ 目录:

    • 这个目录用于存放运行时创建的临时 unit 配置文件。

    • 这些临时文件通常由运行时工具或服务创建,用于临时性的配置更改。

  4. /lib/systemd/system/ 目录:

    • 这个目录在一些发行版中可能用于存放系统默认的 unit 配置文件,类似于 /usr/lib/systemd/system/ 目录。

      1691809114580

  5. /etc/systemd/user/ 目录:

    • 用于存放用户级别的 unit 配置文件,类似于系统级别的 /etc/systemd/system/ 目录。

    • 用户可以在这个目录下定义自己的个人用户服务。

      1691809150255

  6. /usr/local/lib/systemd/system/ 和 /usr/local/etc/systemd/system/ 目录:

    • 这些目录用于存放本地安装的软件包提供的 unit 配置文件。

    • 如果你手动从源代码编译并安装软件包,它们可能会存放在这些目录中。

  7. 其他用户自定义目录:

    • 系统管理员可以根据需要设置其他目录来存放特定类型的 unit 配置文件。

  • runlevel:在 CentOS 7 中,由于采用了 systemd 作为初始化系统,传统的运行级别概念被替代为目标(targets)。每个目标定义了一组要启动的服务和进程,相当于传统运行级别下的状态。以下是 CentOS 7 中的一些常见目标(相当于运行级别):

  1. emergency.target: 紧急目标,用于故障修复和系统维护。

    sudo systemctl emergency
  2. rescue.target: 救援目标,类似于传统的单用户模式,用于修复系统问题。

    sudo systemctl rescue
  3. multi-user.target: 多用户文本模式,类似于传统运行级别 3,启动多用户文本模式。

    sudo systemctl isolate multi-user.target
  4. graphical.target: 图形界面模式,类似于传统运行级别 5,启动图形界面。

    sudo systemctl isolate graphical.target
  5. network.target: 网络目标,用于启动网络服务

  6. multi-user.target with graphical.target: 启动多用户文本模式,并且支持图形界面。

  7. 查看当前活动目标

    systemctl list-units --type=target

除了上述目标,CentOS 7 中还有一些其他目标,以及用户可以自定义的目标,以满足特定的需求。要切换到不同的目标,你可以使用 systemctl 命令。例如:

  • 切换到多用户文本模式:sudo systemctl isolate multi-user.target

  • 切换到图形界面模式:sudo systemctl isolate graphical.target

需要注意的是,在 systemd 中,目标可以自由组合,并且可以自定义。每个目标会启动一组相应的服务和进程,从而达到不同的系统状态。这种灵活性是传统运行级别无法提供的,使得系统管理更加现代化和高效。

1691809470928

runlevel是软链接,实际指向.target

1691809556128

 

3、CentOS67的启动区别

  1. 文件路径和位置

    • GRUB Legacy: 配置文件通常位于/boot/grub/menu.lst/boot/grub/grub.conf

    • GRUB2: 配置文件位于/boot/grub/grub.cfg。不过,不建议直接编辑grub.cfg,因为它是由自动生成的,而且手动编辑可能会在系统更新后被覆盖。该文件会在每次执行grub2-mkconfig后自动执行。

  2. 配置文件格式

    • GRUB Legacy: 配置文件使用简单的文本格式,每个引导条目在配置文件中都有一个明确的条目。

    • GRUB2: 配置文件仍然使用文本格式,但采用了更复杂的结构,通过脚本和模块的方式来定义引导条目,这使得配置文件更具动态性和灵活性。

      1691806971060

  3. 菜单条目的定义

    • GRUB Legacy: 菜单条目定义类似于以下格式:

      bashCopy codetitle Operating System
      root (hd0,0)
      kernel /vmlinuz root=/dev/sda1
      initrd /initrd.img
    • GRUB2: 菜单条目定义使用类似于以下格式的脚本语法:

      bashCopy codemenuentry 'Operating System' {
          set root=(hd0,1)
          linux /vmlinuz root=/dev/sda1
          initrd /initrd.img
      }
  4. 模块化加载

    • GRUB Legacy: 旧版本GRUB将所有功能都包含在引导加载程序中,可能导致较大的引导加载程序。

    • GRUB2: 新的GRUB2支持模块化加载,只有在需要时才加载所需的模块,从而减小引导加载程序的大小。

  5. 图形界面配置

    • GRUB Legacy: 通常需要手动安装额外的软件以实现图形界面。

    • GRUB2: GRUB2内置了图形界面支持,可以通过配置文件中的参数设置来启用或禁用。

  6. /etc/default/grub:这个文件包含了GRUB2的默认配置参数,包括引导菜单的外观、默认操作系统、引导超时等。通过编辑这个文件,你可以修改引导菜单的外观以及其他引导选项。但是要注意,更改了这个文件后,需要运行update-grubgrub2-mkconfig等命令来生成新的grub.cfg配置文件,使更改生效。

    1691806922147

  7. /etc/grub.d/*:这个目录包含了一系列用于生成grub.cfg配置文件的脚本文件。每个脚本文件代表一个配置方面,例如操作系统条目、内核参数、用户自定义脚本等。这些脚本文件会被grub2-mkconfig命令调用,根据用户的配置和系统信息生成最终的引导菜单配置文件grub.cfg

1691806878723

4、更换内核

  1. 安装elrepo

[root@fishman-160 system]# dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

1691739634012

  1. 导入证书

[root@fishman-160 system]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

列出 elrepo-kernel 仓库中的所有可用内核软件包,而禁用其他所有仓库,以确保只获取来自指定仓库的信息

[root@fishman-160 system]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
--disablerepo="*": 这个选项表示禁用所有已配置的仓库,* 是通配符,表示所有仓库。
--enablerepo="elrepo-kernel": 这个选项表示启用名为 elrepo-kernel 的仓库。这将允许 YUM 在查询可用软件包时只使用这个特定的仓库。
list available: 这个部分指示 YUM 列出所有可用的软件包。这将显示 elrepo-kernel 仓库中的所有可用内核软件包。
  1. 安装内核

ELRepo 中有两个内核选项,一个是 kernel-lt(长期支持版本),一个是kernel-ml(主线最新版本),采用长期支持版本(kernel-lt)更稳定。

[root@fishman-160 system]# yum  --enablerepo="elrepo-kernel" install kernel-lt

1691739572784

  1. 完成安装

image-20230811160004677

  1. 查看/boot目录

1691740848641

  1. 重新生成 GRUB2 配置文件

[root@fishman-160 system]# grub2-mkconfig /boot/vmlinuz-5.4.252-1.el8.elrepo.x86_64 
[root@fishman-160 system]# reboot

grub2-mkconfig /boot/vmlinuz-5.4.252-1.el8.elrepo.x86_64:
这个命令会生成 GRUB2 的配置文件,但并没有指定输出的文件名和路径。因此,它会根据系统默认的配置文件路径和文件名规则生成一个临时文件,通常是 /boot/grub2/grub.cfg。

grub2-mkconfig -o /boot/vmlinuz-5.4.252-1.el8.elrepo.x86_64:
这个命令也会生成 GRUB2 的配置文件,但通过 -o 参数指定了输出的文件名和路径为 /boot/vmlinuz-5.4.252-1.el8.elrepo.x86_64。这意味着生成的配置文件将被保存在指定的文件路径中,而不是默认的位置。
  1. 查看默认内核

[root@fishman-160 ~]# grubby --default-kernel
/boot/vmlinuz-5.4.252-1.el8.elrepo.x86_64

指定默认开机启动内核

[root@fishman-160 ~]# ls /boot #查看内核
config-4.18.0-500.el8.x86_64        grub2                                                    initramfs-5.4.252-1.el8.elrepo.x86_64.img  symvers-5.4.252-1.el8.elrepo.x86_64.gz  vmlinuz-0-rescue-dc083866081e4b7bb22ee69c527f6da4
config-5.4.252-1.el8.elrepo.x86_64  initramfs-0-rescue-dc083866081e4b7bb22ee69c527f6da4.img  loader                                     System.map-4.18.0-500.el8.x86_64        vmlinuz-4.18.0-500.el8.x86_64
efi                                 initramfs-4.18.0-500.el8.x86_64.img                      symvers-4.18.0-500.el8.x86_64.gz           System.map-5.4.252-1.el8.elrepo.x86_64  vmlinuz-5.4.252-1.el8.elrepo.x86_64
[root@fishman-160 ~]# grubby --set-default /boot/vmlinuz-4.18.0-500.el8.x86_64 #设置默认内核
The default is /boot/loader/entries/dc083866081e4b7bb22ee69c527f6da4-4.18.0-500.el8.x86_64.conf with index 1 and kernel /boot/vmlinuz-4.18.0-500.el8.x86_64
  1. 开机grub2引导菜单显示多内核

执行 sudo grub2-mkconfig -o /boot/grub2/grub.cfg 命令会生成 GRUB2 的引导菜单配置文件 /boot/grub2/grub.cfg,其中会包括所有已安装的内核版本的选项,以便在启动时选择。

生成的 GRUB2 配置文件会包含每个内核版本的菜单项,以及相应的内核引导参数和选项。这样,在启动时,你可以从 GRUB2 菜单中选择要引导的内核版本。通常,新安装的内核会默认在菜单的顶部,而旧版本的内核会在下面列出。

你可以通过向上或向下键来选择不同的内核版本,然后按 Enter 键来启动选择的内核。这样,你可以根据需要选择不同的内核版本进行引导

1691743765873

5、加密GRUB

  1. 生成密码

grub2-mkpasswd-pbkdf2

1691825222982

  1. 打开/etc/grub.d/00_header,末行添加cat <<EOFhash密码,并EOF结束

    格式:password_pbkdf2 [user name] [hashed string]

    cat << EOF
    set superusers="admin"
    password_pbkdf2 admin grub.pbkdf2.sha512.10000.5186C1843654B66B88A1F69DA8BC315890C854B8C7EEBFA76BD5057CDB0D05300C989BF6AFCD080368FF93C885D925C68183020DE1BF41AE2CB891034AF97921.945AC4652A00C74CACBCF322CE068F80839704A9E2D2AE159CE2    8E125D24220D73BE9AF0775FACAFD4EC9A516BEF694229FC5A3BC282BCD7D442F50CF3F0865A
    EOF       

1691827551051

  1. 重新加载grub2.cfg配置文件

[root@fishman-160 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
done

6、通过liveCD进入救援模式(rescue)

例:如果引导分区(boot位于/dev/sda中)被擦除,应该如何修复

通过dd命令来擦除446k的引导分区

1692176850397

开始恢复:

  1. 开机按f2进入BIOS

  2. 修改启动顺序

  3. 加载光盘,进入光盘引导界面,选择Troublesshooting

    191313c4e01514e308c294566cc31c1

  4. 选择进入Rescue a CentOS Stream system

    3506eb4bdfe6e85eb4bd98472c64962

  5. 选择Continue

    恢复环境会尝试查找你的 Linux 安装,并将其挂载到目录 /mnt/sysroot 下。然后,你可以对系统进行必要的更改。选择 '1' 将继续执行这一步骤。你也可以选择以只读模式而不是读写模式挂载文件系统,通过选择 '3' 可以直接跳过并进入一个 shell(命令行界面)。如果因某种原因这个过程无法正常工作,选择 'f' 来启动一个 shell。最后,选择 'Continue' 来继续执行下一步操作。

    40c7e7d2071d9c28ebfe06f0b5b295b

     

  6. 输入Enter即可获取到shell

7、通过chroot /mnt/sysimage切换根目录并执行grub2-install /dev/sda

1692177322423

8、exit退出后重启,成功进入grub2引导程序

1692177973528

 

标签:引导,systemd,配置文件,启动,图形界面,Linux7,原理,加载
From: https://www.cnblogs.com/kcloveworld/p/17984430

相关文章

  • 聊聊x86计算机启动发生的事?
    大家好,我是呼噜噜,最近在看linux早期内核0.12的源码,突然想到一个困扰自己好久的问题:当我们按下电源键,计算机发生了什么?神秘地址0x7C00究竟是什么?操作系统又是如何被加载到硬件中的?带着这些问题,继续往下阅读本文。x86计算机启动过程,主要分为这几个阶段:BIOS自检,引导设备的选择,主引导......
  • EasyCVR智能边缘网关启动失败报错“Local Machine Check Error”的解决方法
    国标GB28181安防监控系统EasyCVR平台采用了开放式的网络结构,可支持4G、5G、WiFi、有线等方式进行视频的接入与传输、处理和分发。安防视频监控平台EasyCVR还能支持GIS电子地图模式,基于监控摄像头的经纬度地理位置信息,将场景中的整体安防布控以可视化地图方式呈现,管理人员可以方便......
  • 文件系统(一):存储介质、原理与架构
    liwen01 2024.01.01前言从系统角度来看,文件系统是对文件存储器空间进行组织、分配、负责文件存储并对存入的文件进行保护和检索的一个系统。它的目的是使用户和应用程序能够方便地管理存储器上的文件和目录,比如常见的对文件的增、删、改、查。每当我们操作一个文件的时候,实......
  • EasyCVR启动失败报错“Local Machine Check Error”的解决方法
    有用户反馈EasyCVR智能边缘网关启动失败,导致服务无法使用,今天我们来分析一下问题的排查与解决方法。1)查看报错日志,如下:2)报错为“LocalMachineCheckError!本地机器检查错误!”,检查配置文件是否因为hardware_version字段影响了服务启动;3)将该字段参数进行注释,然后再次启动EasyCVR查看......
  • 一台MySQL服务器启动多个端口
    一台MySQL服务器启动多个端口在测试Mysql多主一从服务器,即一个从服务器多端口同步不同主库。本文记录了开启不同端口的操作。详细步骤:1、首先要先把my.cnf配置文件复制一份,开几个端口要复制几份当然要重新命名.如:cp/etc/my.cnf/etc/my3306.cnfcp/etc/my.cnf/etc/my3307.cn......
  • Modbus转PROFINET网关TS-180快速实现软启动器和马达保护器与西门子PLC的通信
    在钢铁厂的生产过程中,电机作为驱动各种生产机械和辅助设备的关键设备,其正常运行对于生产效率和质量至关重要。为了确保电机的正常运行和使用寿命,通常会使用软启动器和马达保护器等设备,因此监控软启和马达保护器的工作参数成为重点。福建某钢铁厂,中控室使用S7-1515PLC,实时监控现场......
  • bat启动多个ping 窗口持续ping同时开启指定的软件 批处理
    将代码复制存为BAT 修改IP,和软件路径即可使用。 @echooffcdclsstartcmd/c"TITLEPingServer192.168.103.7&&ping192.168.103.7-t"startcmd/c"TITLEPingServer192.168.100.156&&ping192.168.100.156-t"startcmd/c"TITLEPing......
  • 随Linux开机自动启动mysql
    在MySQL的管理过程中,会遇到PCServer脱机或者重启,我需要在主机启动后再将MySQL服务启动。如果上百台或者更多的MySQL主机进行维护时,可能会有多台主机出现类似问题,要是每次都手动操作,是很繁琐的事情。我们可以采用随系统一起启动MySQL服务,这样就解决了频繁手动启动MySQL的问题。要实......
  • Hadoop进级教程之-Flume架构原理
    ApacheFlume是一个分布式的、可靠和易用的日志收集系统,用于将大量日志数据从许多不同的源进行收集、聚合,最终移动到一个集中的数据中心进行存储。Flume的使用不仅仅限于日志数据聚合,由于数据源是可定制的,Flume可以用于传输大量数据,包括但不限于网络流量数据、社交媒体生成的数据......
  • 本地启动redis
    1.修改配置文件本地启动需将ip绑定为127.0.0.1,如需要远程连接服务则修改为0.0.0.02.将redis加入服务并启动D:\Redis-x64-3.2.100>redis-server.exeredis.windows.conf3.启动redis出现如下报错解决方法为:在redis安装目录下打开cmd并执行命令D:\Redis-x64-3.2.100>red......