一、通电
由于通电导致的系统障碍与系统本身无关
二、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使更改不生效