Linux系统的引导过程及引导修复

本文详细介绍了Linux系统的引导过程,包括BIOS初始化、磁盘引导及修复、GRUB2引导、内核加载和系统初始化镜像的修复。通过模拟故障并提供修复方法,帮助读者理解每个阶段的作用及故障时的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、通电

由于通电导致的系统障碍与系统本身无关

二、bios初始化

BIOS(Basic Input Output System)在IBM PC兼容系统上是一种业界标准的固件接口。bios是电脑启动时加载的第一个软件,它是一组固化在计算机主板上的一个ROM芯片上的程序,其保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自动启动程序,可以从CMSO中读写系统设置的具体信息;主要功能是为计算机提供最底层的、最直接的硬件设置和控制;是连接软件程序和硬件设备的“桥梁”,且其只有在开机时才可以进行设置。

bios初始化的功能:对硬件进行检测,初始化硬件时钟;电脑启动时会读取硬件设置的参数,并和实际的硬件设置进行比对,如不符合会影响系统启动

bios界面:

三、磁盘引导及修复

 硬盘中一般会由多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生成成本的限制,盘片数量也会受到限制,一般都在5片之内。盘片的编号由下向上从0开始;如上图中最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。

 上图为一个盘面,盘面中一圈圈灰色的同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称为一个扇区。扇区是磁盘的最小组成单元。

主引导记录MBR(Master Boot Record)

MBR是位于磁盘的0磁道1扇区的446个字节,其记录着主引导文件grub2的位置信息;其负责磁盘操作系统对磁盘进行读写时分区合法性的判别、分区引导信息的定位,由磁盘操作系统在对硬盘初始化时产生。

MBR会引导磁头读取系统启动时需要读取的分区内的数据;当MBR数据丢失时系统会因为找不到启动分区而启动失败。

问题模拟:

fdisk  -l 可以查看到系统启动分区所在的磁盘为 /dev/vda

破坏(清空)MBR数据后reboot,出现系统启动故障

 修复方式:

断电虚拟机后为此虚拟机添加光驱并为此光驱配置镜像资源

 选择优先使用光驱启动系统

 

系统开启后在启动界面选择 Troubleshooting 进行修复

选择挽救Linux系统

 

进入挽救界面

 获得一个shell

此时的光驱设备是挂载在根(/)下;所以需要使用命令:chroot /mnt/sysimages 将shell切换到真实的系统环境下;然后重新安装grub2文件至系统启动分区所在的磁盘 /dev/vda 上,即可恢复主引导记录MBR

 将selinux状态设置为disabled目的:selinux开启状态时,修复后的系统启动时会重新初始化,导致整个重新启动过程缓慢

修复操作完成后,调整此虚拟机优先选择原本的虚拟磁盘进行系统启动

 修复完成,系统成功重新启动

四、grub2文件引导及修复

RHEL8中,系统文件引导过程需要用到以下两类文件:

一个主引导文件:/boot/grub2/gtub.cfg

两个子引导文件:/boot/loader/entries/*.conf

主引导文件指定/boot分区的位置;子引导文件指定系统启动时加载的文件名称。这两类文件丢失后系统会无法启动。

问题模拟【1】:主引导文件丢失

 系统启动失败

 修复方式:

手动引导

set root='hd0,msdos1'

##指定boot分区所在磁盘位置;hd0=系统第一块磁盘;msdos1=hd0的第一块分区

linux16 /vmlinuz-4.18.0-193.el8.x86_64  ro root=/dev/vda3

##启动内核,读取根分区资源

initrd16  /initramfs-4.18.0-193.el8.x86_64.img

##加载系统初始化镜像

完成以上操作后系统启动成功;但丢失的文件依然不存在

 使用命令:grub2-mkconfig > /boot/grub2/grub.cfg 重新生成主引导文件

 主引导文件生成后系统reboot会正常启动

问题模拟【2】:子引导文件丢失

 系统启动失败

 修复方式:

手动引导部分同问题模拟【1】

进入系统后子引导文件仍然不存在

 使用命令:

kernel-install  add  4.18.0-193.el8.x86_64   /usr/lib/modules/4.18.0-193.el8.x86_64/vmlinuz

##添加内核(vmlinuz==内核)

$(uname -r)==4.18.0-193.el8.x86_64        ##内核版本号

重新生成子引导文件

 文件添加成功后,系统重启恢复正常

五、内核加载故障修复

系统启动过程中通过加载内核对硬件设备进行初始化;内核丢失后,系统无法启动

问题模拟:删除系统内核

 删除内核后系统启动失败

 修复方式:

断电虚拟机后为此虚拟机添加光驱并为此光驱配置镜像资源--->选择优先使用光驱启动系统--->系统开启后在启动界面选择 Troubleshooting 进行修复--->选择挽救Linux系统--->进入挽救界面---> 获得一个shell

 cp  /lib/modules/4.18.0-193.el8.x86_64/vmlinuz  /boot/vmlinuz-4.18.0-193.el8.x86_64

##复制光驱中的内核文件至boot分区中

修复操作完成后,调整此虚拟机优先选择原本的虚拟磁盘进行系统启动且启动后的系统中内核文件也恢复

修复完成,系统重新启动正常

六、系统初始化镜像修复

系统启动过程中需要使用系统初始化镜(/boot/initramfs-4.18.0-193.el8.x86_64.img)像来加载系统时钟、selinux、系统主机信息、磁盘挂载策略( /etc/fstab )、磁盘配额情况等,也会使用其初始化系统程序开启各自的开机自启服务,开启虚拟控制台、图形等等;所以系统初始化镜像丢失后会导致无法启动系统

 问题模拟:删除/boot下的系统初始化镜像

 删除后系统重新启动失败

 修复方式:

断电虚拟机后为此虚拟机添加光驱并为此光驱配置镜像资源--->选择优先使用光驱启动系统--->系统开启后在启动界面选择 Troubleshooting 进行修复--->选择挽救Linux系统--->进入挽救界面---> 获得一个shell

使用命令:mkinitrd  /boot/initramfs-4.18.0-193.el8.x86_64.img  4.18.0-193.el8.x86_64 创建/boot下的系统初始化镜像文件

 修复操作完成后,调整此虚拟机优先选择原本的虚拟磁盘进行系统启动且启动后的系统中初始化镜像文件也恢复

修复完成,系统重新启动正常

 七、系统启动分区

系统在启动时首先需要读取boot分区中的数据,其中包含了引导文件、系统内核文件、系统初始化镜像文件等数据;所以当boot分区下的所有文件丢失后,系统无法启动

问题模拟:删除/boot下的所有文件

 删除完成后系统重启失败

 修复方式:

断电虚拟机后为此虚拟机添加光驱并为此光驱配置镜像资源--->选择优先使用光驱启动系统--->系统开启后在启动界面选择 Troubleshooting 进行修复--->选择挽救Linux系统--->进入挽救界面---> 获得一个shell

重新安装grub2到系统硬盘/dev/vda上,从而恢复/dev/vda上的主引导记录MBR;将光驱挂载在/mnt上使用其中资源安装系统内核,安装完成会发现/boot下所需要的内核文件和初始化镜像文件等都会一并生成

修复操作完成后,调整此虚拟机优先选择原本的虚拟磁盘进行系统启动且/boot目录下的文件军会恢复

修复完成,系统重新启动正常

八、系统启动级别修复

系统启动级别:

级别号含义
0关机
1单用户模式
2无图形网络模式
3无图形网络模式
4无图形网络模式
5有图形网络模式
6重启

系统默认的启动级别为 5 ;当系统默认启动级别改变时,系统可能会启动失败

问题模拟:设定系统的默认启动级别为 6 ;则系统会一直处于启动和重启的死循环中

 设置完成后系统启动失败

 修复方式:

在系统启动界面选定系统版本后按 e 进入引导文件编辑模式

 在内核加载选项后输入 5 后;ctrl+x执行,启动系统

 

 登入系统后将系统默认启动级别恢复

修复完成,系统重新启动正常

九、超级用户密码破解

问题模拟:假装忘记root密码

修复方式:

在系统启动界面选定系统版本后按 e 进入引导文件编辑模式;

 在内核加载选项内容中删除 ro(read-only)之后的字符;

更改内核加载选项内容中的 ro 为 rw ,之后添加 rd.break 参数终止系统启动并 ctrl+x 进入单用户模式;

 在单用户模式下更改密码;

 chroot  /sysroot                ##切换到真实的系统环境

touch  /.autorelabel                ##当此文件存在时,selinux会重新初始化;建立此文件的目的是为了避免系统中的selinux使更改不生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值