我们在引导修复时需要利用光盘进入系统,所以需要事先为虚拟机添加一个挂载了系统镜像的光驱、挂载系统镜像到光盘
挂载系统镜像到光盘
1、磁盘引导
问题模拟:
[root@westoslinux ~]# fdisk -l
Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 sectors ##系统启动分区/dev/vda1处于系统硬盘/dev/vda上
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x34fd8722
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 2099199 2097152 1G 83 Linux
/dev/vda2 2099200 6293503 4194304 2G 82 Linux swap / Solaris
/dev/vda3 6293504 41943039 35649536 17G 83 Linux
dd if=/dev/zero of=/dev/vda bs=446 count=1 ##清空系统启动磁盘/dev/sda上的mbr数据
reboot ##重启
重启系统,系统找不到启动分区,停止启动
引导恢复
按e进入挽救模式,选择Troubleshooting
选择Rescue a Red Hat Enterprise linux system
输入1,continue
重新安装grub2到系统硬盘/dev/vda
编辑/etc/sysconfig/selinux文件,设置SELINUX=disabled
关闭虚拟机,设定用硬盘启动系统,可以成功开启虚拟机,完成引导恢复。
grub2文件引导
系统文件引导过程中需要用到以下两类引导文件:
一个主引导文件:/boot/grub2/grub.cfg
两个子引导文件:/boot/loader/entries/xxxxxxxxx.conf
主引导文件指定启动分区/boot位置,子引导文件指定系统启动时加载的文件名称,这两类文件丢失时系统无法启动。
1、问题模拟:主引导文件丢失
rm -fr /boot/grub2/grub.cfg删除主引导文件
解决:
重新生成主引导文件,引导恢复完成
2、问题模拟: 子引导文件丢失
rm -fr /boot/loader/entries/xxxxxxxxx.conf删除子引导文件,重启虚拟机,无法成功开启
解决:
手动引导,开启虚拟机
kerne-install add 内核版本号 内核镜像重新生成内核引导文件,引导恢复完成
内核加载
系统启动过程中通过加载/boot/vmlinuz-$(uname -r)这一内核初始化硬件设备,内核丢失后,系统报错无法重新启动。
问题模拟:
rm -fr /boot/vmlinuz-$(uname -r)删除/boot下的系统内核
解决:
关闭虚拟机,设定用光驱启动系统
复制光驱系统中usr下的内核文件到/boot中即可完成恢复
关闭虚拟机,设定用硬盘启动系统,可以成功开启虚拟机。
系统初始化镜像
问题模拟:
rm -fr /boot/initramfs-xxxxx.img删除/boot下的系统初始化镜像
引导解决:
系统启动级别
级别号 含义
0 关机
1 单用户
2 无图形网络模式
3 无图形网络模式
4 无图形网络模式
5 有图形网络模式
6 重启
问题模拟:
设定系统默认启动级别为6,重启虚拟机,系统会一直处于重启状态,无法开启虚拟机
解决:在开机选择界面按 e 进入到引导文件编辑模式,在内核加载选项最后加入启动级别5,ctrl+x后可以成功开启虚拟机。
超级用户密码破解
在开机选择界面按 e 进入到引导文件编辑模式,删除到ro选项,更改ro为rw,加入rd.break参数终止系统启动进入单用户模式;
切换到真实系统环境的shell下,修改超级用户密码,建立 /.autorelabel 文件
重启虚拟机,超级用户密码更改完成,可以成功登录超级用户。