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)或文本界面登录。
MBR
:代表主引导记录(Master Boot Record
),它是存在于计算机硬盘的特定扇区(通常是第一个扇区)中的一个小型程序。MBR
在启动过程中起着关键作用,它包含了引导加载程序(bootloader
)和分区表信息。
引导加载程序(bootloader
)是MBR
中的一部分,它的主要功能是引导操作系统的加载。在计算机启动时,BIOS
或UEFI
会首先加载MBR
中的引导加载程序,并根据引导加载程序的指令,从硬盘的特定分区中加载操作系统的核心部分到内存中,然后启动操作系统。
-
MBR
的结构如下: -
引导加载程序(
bootloader
):通常占用446字节。一个小型程序,负责启动操作系统。 -
分区表:占用64字节。
MBR
中包含4个16字节的分区表项,每个分区表项用于描述一个分区的信息,如起始位置、大小等。 -
魔术字节:占用2字节一个特殊的标识,用于标志
MBR
的有效性。
GRUB
代表GRand Unified Bootloader
,是一个常用的开源引导加载程序,用于管理计算机的引导过程,从而加载操作系统或其他引导程序。它的主要功能是在计算机启动时提供用户选择不同的操作系统或内核版本,以及执行其他引导相关任务。
-
多操作系统支持:
GRUB
允许用户在同一计算机上安装并引导多个不同的操作系统,如不同版本的Linux
、Windows
等。 -
配置灵活:
GRUB
的配置文件可以被编辑,使用户可以自定义引导菜单和选项,以及设置默认启动项。 -
模块化设计:
GRUB
支持模块化加载,这意味着它可以加载不同的模块以支持不同的文件系统、硬件和功能。模块化功能相对较有限,许多功能都被直接编译进引导加载程序中,导致引导加载程序可能较大。模块的使用和加载在GRUB Legacy中相对较少。 -
图形界面支持:
GRUB
可以使用图形界面显示引导菜单,提供更友好的用户体验。 -
命令行界面:除了图形界面,GRUB还提供了命令行界面,允许用户手动输入命令来执行引导操作。
-
内存映像支持:
GRUB
可以将操作系统内核和初始 RAM 磁盘(initrd
)映像加载到内存中,从而减少硬盘读取。
init
:CentOS 6
使用的是SysV init
初始化系统,这是一种传统的初始化和进程管理方式。
-
作用:
init
是系统的第一个用户空间进程,负责初始化系统,启动必要的服务和进程,为用户提供可用的操作环境。 -
运行级别:CentOS 6 使用运行级别(runlevel)来管理系统状态。每个运行级别定义了要启动的一组服务,例如单用户模式、多用户图形模式、网络模式等。通过切换运行级别,可以在不同的系统状态间切换。
-
启动脚本:系统服务和进程通过启动脚本(
init scripts
)来定义和管理。这些脚本通常位于/etc/init.d/
目录下,通过执行脚本名加上 start、stop、restart 等参数,可以启动、停止或重新启动相应的服务。 -
依赖关系:
init
脚本通常包含有关服务依赖关系的信息,使得在启动和停止服务时可以正确地处理依赖关系。但是依赖关系的管理需要手动配置。 -
启动顺序:在系统启动过程中,init 按照依赖关系和指定的运行级别顺序启动和停止服务。每个运行级别都可以自定义启动的服务。
-
管理方式:使用命令行工具(例如
service
和chkconfig
)来管理服务。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)或文本界面登录。
-
MBR
:代表主引导记录(Master Boot Record
),它是存在于计算机硬盘的特定扇区(通常是第一个扇区)中的一个小型程序。MBR
在启动过程中起着关键作用,它包含了引导加载程序(bootloader
)和分区表信息。引导加载程序(
bootloader
)是MBR
中的一部分,它的主要功能是引导操作系统的加载。在计算机启动时,BIOS
或UEFI
会首先加载MBR
中的引导加载程序,并根据引导加载程序的指令,从硬盘的特定分区中加载操作系统的核心部分到内存中,然后启动操作系统。-
MBR
的结构如下: -
引导加载程序(
bootloader
):通常占用446字节。一个小型程序,负责启动操作系统。 -
分区表:占用64字节。
MBR
中包含4个16字节的分区表项,每个分区表项用于描述一个分区的信息,如起始位置、大小等。 -
魔术字节:占用2字节一个特殊的标识,用于标志
MBR
的有效性。
-
-
GRUB2
(GNU GRand Unified Bootloader 2
)是GRUB
的后续版本,是一个重新设计和重写的引导加载程序。与早期的GRUB
(通常被称为GRUB Legacy
或GRUB 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 类型:-
Service Unit(服务单元): 用于定义和管理系统服务。服务单元文件的扩展名为
.service
。例如:sshd.service
表示 SSH 服务。 -
Socket Unit(套接字单元): 用于描述系统套接字。套接字单元文件的扩展名为
.socket
。例如:sshd.socket
表示 SSH 套接字。 -
Mount Unit(挂载单元): 用于描述文件系统的挂载。挂载单元文件的扩展名为
.mount
。例如:var-lib.mount
表示/var/lib
文件系统的挂载。 -
Automount Unit(自动挂载单元): 用于描述自动挂载。自动挂载单元文件的扩展名为
.automount
。 -
Path Unit(路径单元): 用于监控文件或路径的变化,并在变化发生时触发相应的操作。路径单元文件的扩展名为
.path
。 -
Timer Unit(定时器单元): 用于定期触发指定的操作。定时器单元文件的扩展名为
.timer
。 -
Device Unit(设备单元): 用于描述设备。设备单元文件的扩展名为
.device
。 -
Swap Unit(交换单元): 用于描述交换分区。交换单元文件的扩展名为
.swap
。 -
Target Unit(目标单元): 用于描述一个需要达到的状态。例如:
multi-user.target
表示多用户文本模式。 -
Snapshot Unit(快照单元): 用于保存系统的状态快照。快照单元文件的扩展名为
.snapshot
。
除了上述常见的 unit 类型,
systemd
还支持其他类型的 unit,以满足不同的系统管理需求。每种 unit 都有相应的配置文件,用于定义其属性、依赖关系和操作。通过配置这些 unit,可以实现对系统资源的高度控制和管理。 -
-
unit
的存储位置:
-
/usr/lib/systemd/system/ 目录:
-
这个目录是系统默认的 unit 配置文件存放位置,其中包含了系统安装的软件包所提供的 unit 配置文件。
-
这些配置文件通常不应该被用户手动修改,因为它们可能会在软件包的更新过程中被替换。
-
软件包的维护者会在这个目录下提供用于启动、管理和配置软件包提供的服务、套接字、挂载等各种类型的 unit 配置文件。
-
-
/etc/systemd/system/ 目录:
-
这个目录是用于用户自定义的 unit 配置文件,它会覆盖
/usr/lib/systemd/system/
目录中相同名称的配置文件。 -
用户可以在这个目录中创建自己的 unit 配置文件,以定制、扩展或修改系统提供的服务和资源。
-
用户自定义的配置文件会覆盖默认的配置,这样可以在不修改软件包提供的配置的情况下进行个性化的设置。
-
-
/run/systemd/system/ 目录:
-
这个目录用于存放运行时创建的临时 unit 配置文件。
-
这些临时文件通常由运行时工具或服务创建,用于临时性的配置更改。
-
-
/lib/systemd/system/ 目录:
-
这个目录在一些发行版中可能用于存放系统默认的 unit 配置文件,类似于
/usr/lib/systemd/system/
目录。
-
-
/etc/systemd/user/ 目录:
-
用于存放用户级别的 unit 配置文件,类似于系统级别的
/etc/systemd/system/
目录。 -
用户可以在这个目录下定义自己的个人用户服务。
-
-
/usr/local/lib/systemd/system/ 和 /usr/local/etc/systemd/system/ 目录:
-
这些目录用于存放本地安装的软件包提供的 unit 配置文件。
-
如果你手动从源代码编译并安装软件包,它们可能会存放在这些目录中。
-
-
其他用户自定义目录:
-
系统管理员可以根据需要设置其他目录来存放特定类型的 unit 配置文件。
-
-
runlevel
:在 CentOS 7 中,由于采用了systemd
作为初始化系统,传统的运行级别概念被替代为目标(targets
)。每个目标定义了一组要启动的服务和进程,相当于传统运行级别下的状态。以下是 CentOS 7 中的一些常见目标(相当于运行级别):
-
emergency.target: 紧急目标,用于故障修复和系统维护。
sudo systemctl emergency
-
rescue.target: 救援目标,类似于传统的单用户模式,用于修复系统问题。
sudo systemctl rescue
-
multi-user.target: 多用户文本模式,类似于传统运行级别 3,启动多用户文本模式。
sudo systemctl isolate multi-user.target
-
graphical.target: 图形界面模式,类似于传统运行级别 5,启动图形界面。
sudo systemctl isolate graphical.target
-
network.target: 网络目标,用于启动网络服务
-
multi-user.target with graphical.target: 启动多用户文本模式,并且支持图形界面。
-
查看当前活动目标
systemctl list-units --type=target
除了上述目标,CentOS 7 中还有一些其他目标,以及用户可以自定义的目标,以满足特定的需求。要切换到不同的目标,你可以使用 systemctl
命令。例如:
-
切换到多用户文本模式:
sudo systemctl isolate multi-user.target
-
切换到图形界面模式:
sudo systemctl isolate graphical.target
需要注意的是,在 systemd
中,目标可以自由组合,并且可以自定义。每个目标会启动一组相应的服务和进程,从而达到不同的系统状态。这种灵活性是传统运行级别无法提供的,使得系统管理更加现代化和高效。
runlevel是软链接,实际指向.target
3、CentOS6
和7
的启动区别
-
文件路径和位置:
-
GRUB Legacy: 配置文件通常位于
/boot/grub/menu.lst
或/boot/grub/grub.conf
。 -
GRUB2: 配置文件位于
/boot/grub/grub.cfg
。不过,不建议直接编辑grub.cfg
,因为它是由自动生成的,而且手动编辑可能会在系统更新后被覆盖。该文件会在每次执行grub2-mkconfig
后自动执行。
-
-
配置文件格式:
-
GRUB Legacy: 配置文件使用简单的文本格式,每个引导条目在配置文件中都有一个明确的条目。
-
GRUB2: 配置文件仍然使用文本格式,但采用了更复杂的结构,通过脚本和模块的方式来定义引导条目,这使得配置文件更具动态性和灵活性。
-
-
菜单条目的定义:
-
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 }
-
-
模块化加载:
-
GRUB Legacy: 旧版本GRUB将所有功能都包含在引导加载程序中,可能导致较大的引导加载程序。
-
GRUB2: 新的GRUB2支持模块化加载,只有在需要时才加载所需的模块,从而减小引导加载程序的大小。
-
-
图形界面配置:
-
GRUB Legacy: 通常需要手动安装额外的软件以实现图形界面。
-
GRUB2: GRUB2内置了图形界面支持,可以通过配置文件中的参数设置来启用或禁用。
-
-
/etc/default/grub:这个文件包含了
GRUB2
的默认配置参数,包括引导菜单的外观、默认操作系统、引导超时等。通过编辑这个文件,你可以修改引导菜单的外观以及其他引导选项。但是要注意,更改了这个文件后,需要运行update-grub
或grub2-mkconfig
等命令来生成新的grub.cfg
配置文件,使更改生效。 -
/etc/grub.d/*:这个目录包含了一系列用于生成
grub.cfg
配置文件的脚本文件。每个脚本文件代表一个配置方面,例如操作系统条目、内核参数、用户自定义脚本等。这些脚本文件会被grub2-mkconfig
命令调用,根据用户的配置和系统信息生成最终的引导菜单配置文件grub.cfg
。
4、更换内核
-
安装
elrepo
源
[root@fishman-160 system]# dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
-
导入证书
[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 仓库中的所有可用内核软件包。
-
安装内核
在 ELRepo
中有两个内核选项,一个是 kernel-lt
(长期支持版本),一个是kernel-ml
(主线最新版本),采用长期支持版本(kernel-lt
)更稳定。
[root@fishman-160 system]# yum --enablerepo="elrepo-kernel" install kernel-lt
-
完成安装
-
查看
/boot
目录
-
重新生成 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。这意味着生成的配置文件将被保存在指定的文件路径中,而不是默认的位置。
-
查看默认内核
[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
-
开机grub2引导菜单显示多内核
执行 sudo grub2-mkconfig -o /boot/grub2/grub.cfg
命令会生成 GRUB2 的引导菜单配置文件 /boot/grub2/grub.cfg
,其中会包括所有已安装的内核版本的选项,以便在启动时选择。
生成的 GRUB2 配置文件会包含每个内核版本的菜单项,以及相应的内核引导参数和选项。这样,在启动时,你可以从 GRUB2 菜单中选择要引导的内核版本。通常,新安装的内核会默认在菜单的顶部,而旧版本的内核会在下面列出。
你可以通过向上或向下键来选择不同的内核版本,然后按 Enter 键来启动选择的内核。这样,你可以根据需要选择不同的内核版本进行引导
5、加密GRUB
-
生成密码
grub2-mkpasswd-pbkdf2
-
打开
/etc/grub.d/00_header
,末行添加cat <<EOF
和hash
密码,并EOF
结束格式:
password_pbkdf2 [user name] [hashed string]
cat << EOF set superusers="admin" password_pbkdf2 admin grub.pbkdf2.sha512.10000.5186C1843654B66B88A1F69DA8BC315890C854B8C7EEBFA76BD5057CDB0D05300C989BF6AFCD080368FF93C885D925C68183020DE1BF41AE2CB891034AF97921.945AC4652A00C74CACBCF322CE068F80839704A9E2D2AE159CE2 8E125D24220D73BE9AF0775FACAFD4EC9A516BEF694229FC5A3BC282BCD7D442F50CF3F0865A EOF
-
重新加载
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的引导分区
开始恢复:
-
开机按
f2
进入BIOS
-
修改启动顺序
-
加载光盘,进入光盘引导界面,选择
Troublesshooting
-
选择进入
Rescue a CentOS Stream system
-
选择
Continue
恢复环境会尝试查找你的 Linux 安装,并将其挂载到目录
/mnt/sysroot
下。然后,你可以对系统进行必要的更改。选择 '1' 将继续执行这一步骤。你也可以选择以只读模式而不是读写模式挂载文件系统,通过选择 '3' 可以直接跳过并进入一个 shell(命令行界面)。如果因某种原因这个过程无法正常工作,选择 'f' 来启动一个 shell。最后,选择 'Continue' 来继续执行下一步操作。 -
输入
Enter
即可获取到shell
7、通过chroot /mnt/sysimage
切换根目录并执行grub2-install /dev/sda
8、exit
退出后重启,成功进入grub2
引导程序
标签:引导,systemd,配置文件,启动,图形界面,Linux7,原理,加载 From: https://www.cnblogs.com/kcloveworld/p/17984430