MBR主导分区损坏
模拟问题:dd if=/dev/zero of=/dev/vda bs=446 count=1

当你重启电脑后会出现以下错误,系统无法正常开机

前提条件----------------必须要有一个与系统相同的镜像
解决方案
(1)真机执行virt-manager,选择grub2出现错误的虚拟机,并关闭虚拟机;

(2)点击灯泡,根据虚拟机版本添加光驱(如7.3的系统光驱为7.3版本的镜像)

(3)点击Boot opations,将IDE CDROM 调到第一个,以便系统启动时第一个识别IIDE CDROM1; ##注意:光驱启动

(4)打开虚拟机,选择修复选项


(5)进入系统后,进行过下面的步骤
进入真实环境:chroot /mnt/sysimage
查看boot程序所在分区:df
执行:grub2-install /dev/vda
两次exit重启系统

(5)关闭虚拟机点击灯泡,选择Boot opations将IDE CDROM1调到最后一个,使系统重启时第一个识别

重新打开系统并打开图形界面,就可启动成功
文件引导损坏——/boot/grub2/grub.cfg
boot分区的引导文件 /boot/grub2/grub.cfg

/boot/grub2/grub.cfg.此文件属于 Linux 系统开启的自动引导文件,通过此文可以自动完成对系统根目录的挂载,linux 内核的初始化和初始化程序的引导,此文件若是缺失,系统则无法自动开启,需要进行手动引导。
模拟问题:/boot/grub2/grub.cfg文件缺失
第一种情况:没有重启:grub2-mkconfig > /boot/grub2/grub.cfg

第二种情况:/boot/grub2/grub.cfg文件缺失,重启后:
(1)设定root用户读取第一个磁盘的第一个分区 : set root=‘hd0,msdos1’
(2)手动进行内核引导 ,将根目录只读挂在到/dev/vda1:linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/vda1
(3)生成自动引导初始化程序 :initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img
(4)启动机器

(5)打开虚拟机,在虚拟机里进行恢复:grub2-mkconfig > /boot/grub2/grub.cfg

内核程序被删除——vmlinuz-3.10.0-123.el7.x86_64
若是系统的 vmlinuz-3.10.0-123.el7.x86_64 缺失,系统因为无法进行下一步的开机引导而不能启动。
模拟问题:rm -rf /boot/vmlinuz-3.10.0-123.el7.x86_64
重启服务后出现下面的问题

解决问题:
(1)进入修复模式且进入真正的系统中(第一个问题的第四步)
(2)切换到Packages目录下:cd /run/install/repo/Packages
(3)复制内核文件到真实环境的真实目录下: cp kernel-3.10.0-123.el7.x86_64.rpm /mnt/sysimage/mnt
(4)rpm2cpio 命令用于将rpm软件包转换为cpio格式的文件:rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id
(5)复制vmlinuz-3.10安装到boot分区:cp boot/vmlinuz-3.10.0-123.el7.x86_64 /boot/
第一个’boot/’是内核安装包内的东西,第二个/boot/是真实主机的根目录,将内核安装包内的对应内核程序移动到/boot/下,使机器可以正常运行
(6)两次exit进行重新启动

初始化镜像文件丢失——initramfs-3.10.0-123.el7.x86_64.img
模拟问题:rm -f /boot/initramfs-3.10.0-123.el7.x86_64.img
情况一:没有重启系统
重新恢复:mkinitrd /boot/initramfs-3.10.0-123.el7.x86_64.img 3.10.0-123.el7.x86_64.img

情况二:重启系统后
重启服务后出现下面的问题

(1)进入修复模式且进入真正的系统中(第一个问题的第四步)
(2)进入真实环境:chroot /mnt/sysimage
(3)在/boot目录下建立一个映像文件:mkinitrd /boot/initramfs-3.10.0-123.el7.x86_64.img 3.10.0-123.el7.x86_64
mkinitrd /boot/initramfs-$(uname -r).img (uname−r)等同于mkinitrd/boot/initramfs−3.10.0−123.el7.x8664.img3.10.0−123.el7.x8664mkinitrd指定映像文件名称和路径指定所依据的内核版本信息mkinitrd可建立映像文件,以供linux开机时载入ramdis;根据内核版本和指定参数生成映像文件显示内核版本uname−r在bash中,(uname -r) 等同于 mkinitrd /boot/initramfs-3.10.0-123.el7.x86_64.img 3.10.0-123.el7.x86_64
mkinitrd 指定映像文件名称和路径 指定所依据的内核版本信息
mkinitrd 可建立映像文件,以供linux开机时载入ramdis;根据内核版本和指定参数生成映像文件
显示内核版本uname -r
在bash中,(uname−r)等同于mkinitrd/boot/initramfs−3.10.0−123.el7.x8664.img3.10.0−123.el7.x8664mkinitrd指定映像文件名称和路径指定所依据的内核版本信息mkinitrd可建立映像文件,以供linux开机时载入ramdis;根据内核版本和指定参数生成映像文件显示内核版本uname−r在bash中,()与(反引号)都是用来做命令替换的,$()并不是所有的unix系统都支持这种方式,但反引号肯定支持。
报错信息:cat:write error:Broken pipe
pro里面的东西在这个环境下(IDE CDROM1)没有,所以出现报错信息;
(5)两次exit重新启动系统

当/boot分区被删除
模拟问题:rm -fr /boot/
重启服务后出现下面的问题

解决问题:
(1)进入修复模式且进入真正的系统中(第一个问题的第四步)
(2)进入真实环境:chroot /mnt/sysimage
(3)挂载光驱
(4)强制安装内核文件

当开机启动级别被篡改
模拟问题:sytemctl set-default reboot.target
重启服务后出现下面的问题

解决问题:
(1)进入修复模式且进入真正的系统中(第一个问题的第四步)
(2)进入真实环境:chroot /mnt/sysimage
(3)删除软连接 :rm -fr /etc/systemd/system/default.target
(4)建立新连接: ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target ##建立新的软连接
837

本文详细介绍了Linux系统遇到MBR主导分区损坏、文件引导损坏、内核程序丢失及初始化镜像文件丢失等问题时的修复方法。包括使用GRUB2修复MBR,重建grub.cfg文件,恢复内核程序vmlinuz及初始化镜像initramfs,并处理/boot分区被删除和开机启动级别被篡改的情况。

711

被折叠的 条评论
为什么被折叠?



