系统启动阶段可能遇到的问题及恢复
系统启动阶段可能遇到的问题及恢复
系统引导过程
通电---bios初始化---grub2磁盘引导---grub2文件引导---指定boot所在分区---启动内核,只读挂载设备---启动init程序进入初始化阶段---启动systemd初始化程序---取/etc/systemd/中的文件----启动程序---启动登陆环境
grub 文件引导阶段
由文件 / boot/grub2/grub.cfg 控制流程指定 / boot 分区位置——> 加载内核——> 启动系统初始化进程——>grub2-mkconfig
内核引导阶段
检测硬件设备——> 设备驱动初始化——> 将 / 只读挂载——> 载入初始化进程 systemd——> 内核文件丢失重新找回
systemd 初始化
开启 selinux 和 systemd-tools——> 加载内核参数——> 加载系统时钟,键盘,主机名称——> 读写挂载 / 文件系统——> ** raid,lvm 设备——> **系统配额——> 启动 multi-user.target.wants 中的所有服务脚本——> 启用虚拟控制台——> 启动图形
1.引导程序boot损坏
mbr 的作用是为了记录 /boot 目录所在分区位置
磁盘的 0 磁道 1 扇区的前 446 字节
dd if=/dev/zero of=/dev/vda bs=446 count=1
未重启可用grub2-install /dev/xda 恢复
但若关机
[[email protected] ~]# dd if=/dev/zero of=/dev/vda bs=446 count=1
[[email protected] ~]# reboot
界面显示如下
[[email protected] Desktop]$ virt-manager
首先关闭所有虚拟机
j建立一个光盘镜像,从光驱启动
启动
选择troubleshooting 系统修复
选择rescue a red hat enterprise linux system 挽救模式
选择continue,一直选ok
为方便输入,先df
Chroot /mnt/sysimage/
Grub2-install /dev/vda
出现No error reported表示成功
为快速启动,可将selinux设置为disable
关闭虚拟机
选择硬盘启动再次启动即可
启动后可在正常页面修复
2.grub 文件引导阶段出错及解决方式
/boot/grub2/grub.cfg
指定 /boot 分区位置
加载内核
启动系统初始化进程
grub2-mkconfig
模拟引导文件 / boot/grub2/grub.cfg 丢失
[[email protected] ~]# rm -rf /boot/grub2/grub.cfg 模拟文件引导阶段出错
未关机可用[[email protected] ~]# grub2-mkconfig > /boot/grub2/grub.cfg修复
关机后显示如下
用[[email protected] ~]# grub2-mkconfig > /boot/grub2/grub.cfg修复
Ok
3.内核文件丢失
[[email protected] boot]# rm -rf vmlinuz-3.10.0-123.el7.x86_64
未关机时
首先查找丢失文件所属
[[email protected] boot]# yum whatprovides /boot/vmlinuz-3.10.0-123.el7.x86_64
Loaded plugins: langpacks
rhel_dvd/filelists_db | 3.0 MB 00:00
kernel-3.10.0-123.el7.x86_64 : The Linux kernel
然后进入/run/media/root/RHEL-7.0 Server.x86_64/Packages
找到vmlinuz-3.10.0-123.el7.x86_64文件,移动到桌面
拆分
[[email protected] Desktop]# rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id
将丢失部分拷贝会
[[email protected] Desktop]# cp boot/vmlinuz-3.10.0-123.el7.x86_64 /boot/
完成
如果关机了
从光盘进入挽救模式
cd /mnt/sysimage/mnt
rpm2cpio /run/install/repo/Packages/kernel... | cpio -id
cd boot
cp vmlinuz-3.10.0-123.el7.x86_64 /mnt/sysimage/boot/
硬盘启动即可
4.初始化文件丢失
[[email protected] boot]# rm -rf vmlinuz-3.10.0-123.el7.x86_64
未关机可通过mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)修复
关机后显示如下
进入挽救模式
chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
5.自动启动引导出错
1runlevel1.target,rescue.target 进入救援模式。
2runlevel2.target,multi-user.target 进入非图形界面的多用户方式。
3runlevel3.target,multi-user.target 进入非图形界面的多用户方式。
4runlevel4.target,multi-user.target 进入非图形界面的多用户方式。
5runlevel5.target,graphical.target 进入图形界面的多用户方式。
6runlevel6.target,reboot.target 重启系统
6.更改超级用户密码
重启虚拟机,在系统启动阶段按上下键停止系统启动引导,选择系统启动标题,按“e”键进行编辑
找到linux16引导条目这一行,从这行最后开始删到ro 将ro改为rw ,添加rd.break
ctrl+x 启动设定过的系统引导条目
进入系统后执行chroot /sysroot进入真实系统环境
passwd root 修改超级用户密码
建立文件 /.autorelabel让系统重新扫描
exit两次重启系统
7.引导程序boot损坏且建立时提示无目录
chroot /mnt/sysimage/时系统提示无/bin/bash目录
此时可应将/bin/bash 复制给真实环境,即/mnt/sysimage/ban/bash