如果启动前挂载了光盘,系统无法加载 / 分区

2019-10-05 21:15 来源:未知

                               1.  MBR故障修复

stage1 mbr的破坏和恢复

清空mbr 前446字节

dd if=/dev/zero of=/dev/sda bs=1 count=446

如果没有挂载启动光盘,会显示这样

永利平台娱乐 1

如果启动前挂载了光盘,则重启之后自动从光驱启动了

永利平台娱乐 2

此时选择救援模式,Rescue installed system

按照提示操作最后进入到shell

修复mbr需要用到grub去修复磁盘,所以要先把根切到硬盘上

chroot /mnt/sysimage

运行grub-install进行修复

grub-install /dev/sda

查看一下

hexdump -C -n 512 /dev/sda

exit

reboot

centos6启动大体分为四部

一、POST加电自检
二、MBR引导
三、GRUB
四、加载内核
其中,MBR引导有三部分组成

  1. 446个字节为boot loader
  2. 64个字节为分区表
  3. 2个字节为标记位 即 (55 aa)

 

stage1.5 数据破坏与修复

1.5阶段的数据存放在mbr之后的27个扇区内,也就是13824个字节

破坏掉1.5阶段的数据,无需全部破坏,我们用5120个字节试试.

dd if=/dev/zero of=/dev/sda bs=1 count=5120 skip=512 seek=512

修复方法同样可以用grub-install

重启进入救援模式

chroot /mnt/sysimage

grub-install /dev/sda

reboot

Centos 6

实验一:我们模拟对/boot/grub/*进行转移

把/boot/grub/移动到/app下
mv /boot/grub/
/app
把/app/grub.conf文件移动回/boot/grub/下
mv /app/grub.conf /boot/grub/
重启centos 6,我们发现系统可以正常启动。

由此证明:系统启动二阶段只有一个grub.conf文件是可以启动的

备份

stage2  grub目录的破坏与修复

删除文件但保留grub.conf

重启,提示error 15 ,

因为之前用grub-install修复过.所以之后启动系统都需要读取这些文件.

除了grub.conf文件,其他文件依然使用grub-install来修复.

进入救援模式

chroot /mnt/sysimage/

grub-install /dev/sda

sync

恢复grub.conf文件

cd /boot/grub/

可以使用scp命令通过网络其他主机copy一个过来

也可以手动编辑一个grub.conf,内容格式如下

永利平台娱乐 3

实验环境:VMware Workstation Pro 14(试用版)

实验二:对系统启动第一阶段/dev/sda的前446(即boot loader)个字节进行破坏

破坏一阶段/dev/sda的前446个字节
dd if=/dev/zero of=/dev/sda bs=1 count=446
查看被破坏的二进制的文件
hexdump -C -n 512 /dev/sda
可以看出前446个字节都为0

永利平台娱乐 4

1.png

重新启动centos6就会发现系统无法启动,系统默认是进入光盘模式启动,这时我们需要进入救援模式

进入救援模式后,我们使用df命令发现显示的根(/)不是我们系统原来的根(/),而系统原来的根(/)在/mnt/sysimage/下,需要切根操作,
chroot /mnt/sysimage
而被我们破坏的/dev/sda的前446个字节只需要一个命令就可以修复,那就是重新安装grub
grub-install /dev/sda
查看/dev/sda的前512个字节
hexdump -C -n 512 /dev/sda
发现前446个字节已经有内容了,即修复成功。

永利平台娱乐 5

2.png

重启centos6发现可以启动成功。

mkdir /pp

如果 /boot文件夹丢失

进入救援模式

切换根,挂载光驱

chroot /mnt/sysimage/

mount /dev/cdrom /mnt

安装内核

rpm -ivh /mnt/Packages/kernerl.... --force

如果没切根 要加 --root=/mnt/sysimage/

修复grub

grub-install /dev/sda

编辑恢复 grub.conf

系统平台:

实验三:破坏1.5阶段(即跳过/dev/sda的前512个字节之后破坏512个字节)

破坏前/dev/sda的前512个字节
dd if=/dev/zero of=/dev/sda bs=1 count=10240 skip=512 seek=512
查看破坏后的二进制文件
hexdump -C -n 1024 /dev/sda
发现从标记位(55 aa)之后为0

永利平台娱乐 6

3.png

重启centos6,无法启动,使用光盘引导,进入救援模式
chroot /mnt/sysimage/ (切根)
grub (使用grub手工引导)
root (hd0,0)(hd0:代表第一个磁盘,后面的0代表第一个分区)
setup (hd0)
quit (退出)
检查修复后的二进制文件
hexdump -C -n 14000 /dev/sda
修复成功,重启

永利平台娱乐 7

4.png

mount /dev/sdb1 /pp

丢失/boot/ 和 /etc/fstab

先修复 fstab

执行mount 按照内容来猜测每一个设备分区对应的挂载点

也可以 fdisk -l 按照分区大小来区分

或者创建临时文件夹,挂载分区,查看其内容来确定

mkdir /mnt /tmp

mount /dev/sda1 /mnt/tmp;ls /mnt/tmp

mount /dev/sda2 /mnt/tmp;ls /mnt/tmp

...

按照上面得到的信息编辑fstab文件.

vi /mnt/tmp/etc/fstab

reboot

此时已可以加载分区,但还需要恢复/boot文件夹.

进入救援模式

挂载光盘/mnt/cdrom

安装内核

rpm -ivh /mnt/cdrom/.... kernel.....rpm --root=/mnt/sysimage/ --force

修复grub

grub-install /dev/sda

sync

编写grub.conf

vi /boot/grub/grub.conf

reboot

CentOS release 6.9 (Final)       内核  2.6.32-696.el6.x86_64

实验四:把/boot/grub/grub.conf文件移除并恢复

把/boot/grub/grub.conf文件移到/app下
mv /boot/grub/grub.conf /app/
重启centos6会发现1阶段和1.5阶段都可以启动,到2阶段是就会卡在grub界面无法启动

永利平台娱乐 8

5.png

这里我们需要手工输入来引导系统启动
grub>root (hd0,0)
grub>kernel /vmlinuz-2.6.32-696.e16.x86_64 root=/dev/sda2
grub>initrd /initramfs-2.6.32-696.e16.x86_64.img
grub>boor(启动)

永利平台娱乐 9

6.png

启动成功即修复完成

dd if=/dev/sda of=/pp/mrb.bak bs=512 count=1

丢失/sbin/init

用bash代替init

救援模式

读写方式重新挂载根

mount -o remount.rw /

如果之前在/dev/sda3有init的备份,则挂载/dev/sda3.并恢复备份

mount /dev/sda3 /app

mv /app/init /sbin

如果没有备份,可以直接重装upstart.

挂载光盘/mnt/cdrom

安装

rpm ivh /mnt/cdrom/CentOS_6.9_Final/Packages/upstart.xxxxxxxx.rpm –force

ramdisk(ramfs)丢失损坏

实验五:对/boot/grub/文件夹进行删除并修复

删除/boot/grub/文件夹
rm -rf /boot/grub
启用光盘救援模式,进入光盘救援模式后,切根(/)
chroot /mnt/sysimage
重新安装grub
grub-install /dev/sda
安装完成以后,需要我们在/boot/grub/下手工编写一个grub.conf文件
vim /boot/grub/grub.conf
格式如下:

default=0
timeout=3
root (hd0,0)
title wanglinux
kernel /vmlinuz-2.6.32-696.e16.x86_64 root=/dev/sda2
initrd /initramfs-2.6.32-696.e16.x86_64.img
保存退出

永利平台娱乐 10

7.png

编辑使用vi,而不是vim,编写格式如下

永利平台娱乐 11

8.png

为了确保文件已写入,我们使用命令sync同步一下
在使用exit退出两次进行重启,重启成功即修复完成。

 

逻辑卷被破坏

通常centos默认安装分区是会使用逻辑卷的,但/boot一定会使用普通分区.

永利平台娱乐 12

假设破坏导致/etc/fstab和/boot丢失

删除 /etc/fstab和/boot

reboot

修复:

1) 恢复逻辑卷

进入救援模式

使用命令查看磁盘和逻辑卷信息

blkid

lvs

pvs

挂载lv

mkdir /mnt/root

vgchange -ay 激活卷组

mount /dev/VolGroup/Lv_root /mnt/root

挂载boot分区

mkdir /mnt/boot

mount /dev/sda1 /mnt/boot

编辑fstab内容,把主要磁盘挂载记录添加即可

vi /mnt/root/etc/fstab

其中UUID可以通过blkid获得

reboot

2)恢复/boot

进入救援模式

切换根

chroot /mnt/sysimage/

挂载光盘

mkdir /mnt/cdrom

安装内核

rpm -ivh /mnt/cdrom/....kernel.....rpm –force

修复grub

grub-install

启用swap

blkid | tail -n1 >> /etc/fstab

swapon -a

swapon –s

查看内存状态

free

reboot

 内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问,并加载相应的硬件驱动

破坏mrb

没有此文件,系统无法加载 / 分区,也就无法启动系统。

dd if=/dev/zero of=/dev/sda bs=512 count=1

CentOS 5 文件名: initrd

reboot

CentOS 6,7文件名: initramfs

重启后镜像界面显示找不到引导系统,

当系统的ramfs文件丢失或损坏时,系统启动时表现为

连接光驱,进入紧急救援模式到shell字符界面还原备份

永利平台娱乐 13永利平台娱乐 14

永利平台娱乐 15

修复如下:

    2. Grub 文件丢失或损坏

 

挂载硬盘并备份groub.conf文件

mount /dev/sdb1 /pp

cd /boot/grub

cp grub.conf  /pp

破坏grub并重启系统

mv grub.conf grub.conf.bak

重新启动

 

引导停滞

永利平台娱乐 16

 手动输入grup信息

永利平台娱乐 17

最后输入boot启动系统

 进入系统,恢复原来文件

 cd /boot/grub/

mv grub.conf.bak  grub.conf

 

2.进入紧急救援模式,利用备份还原

 进入boot调整把光驱顺序提前,进入紧急救援模式,切换/ chroot/mnt/sysimage

永利平台娱乐 18

重启系统

3.grub程序损坏

 

 

1.利用mrb的备份恢复

 破坏grub程序

dd if=/dev/zero of=/dev/sda bs=446 count=1

reboot

进入紧急救援模式,利用mrb备份还原

重启系统

 

2.重建grub

 破坏grub程序

dd if=/dev/zero of=/dev/sda bs=446 count=1

 进入紧急模式重新安装grub

chroot /mnt/sysimage

 grub -install /dev/sda

 vim /dev/grub/grub.conf

exit

reboot

3.rm -fr /booot/grub/利用备份还原文件

进入紧急救援模式重建grub

永利平台娱乐 19

 永利平台娱乐 20

 

 

进入救援模式,重新生成ramdisk文件即可。

为当前正在使用的内核重新制作ramdisk文件,以下2种指令都可以。

# mkinitrd initramfs-`uname -r`.img `uname -r`

# dracut initramfs-`uname -r`.img `uname -r`

GRUB相关

 MBR:

446: bootloader, 64: 分区表, 2: 55AA

 GRUB:

阶段

存放位置

作用

stage1

MBR的446字节内

MBR引导

stage1_5

MBR之后的27个扇区

让stage1中的bootloader能识别stage2所在的分区上的文件系统,这个阶段可以加载驱动

stage2

/boot/grub(grub2)

grub的核心功能

stage1是以二进制存放于磁盘,并不是文件形式。

永利平台娱乐 21永利平台娱乐 22

/boot/grub下的文件为:

主要是驱动与grub配置文件。这个目录下的文件只保留grub.conf的时候,系统是可以正常启动的

stage1破坏修复

stage1也就是bootloader所在,

模拟破坏(请不拿生产中的机器来做试验,本人不负责任)

#dd if=/dev/zero of=/dev/sda bs=1 count=446

系统启动时表现为

永利平台娱乐 23永利平台娱乐 24

修复如下:

1.进入救援模式

2.启动一个shell

永利平台娱乐 25永利平台娱乐 26

3.切换至原系统的根目录,一般救援模式进来的时候会提醒.(假如能找到/文件系统)

# chroot /mnt/sysimage

4.安装grub

方法(1) grub-install

安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到 DIR/boot目录下

grub-install  /dev/DISK .注意,是磁盘而非分区。--root-directory=DIR 参数可选

此方法会一并重新生成/boot/grub下除了grub.conf之外的文件

永利平台娱乐 27永利平台娱乐 28

方法(2) grub

grub> root (hd#,#)

grub> setup (hd#)  

可以看到系统已经写入GRUB信息至MBR

永利平台娱乐 29永利平台娱乐 30

第2种方法修复时,需要/boot/grub下有这些文件

# ls -1

device.map  e2fs_stage1_5 fat_stage1_永利平台娱乐,5 ffs_stage1_5 grub.conf iso9660_stage1_5 jfs_stage1_5

menu.lst minix_stage1_5 reiserfs_stage1_5 splash.xpm.gz stage1 stage2 ufs2_stage1_5

vstafs_stage1_5 xfs_stage1_5

5.重启系统

#exit 并reboot

开机直接出现grub>

修复如下:

grub> root (hd#,#)  root目录指的是/boot分区所在的磁盘位置。

grub> setup (hd#)  

小提示:root (hd0,然后按tab键补全,会有如下显示

永利平台娱乐 31永利平台娱乐 32

输入kernel /vm 按tab键如果可以补全则说明是正确的,接着输入ro root=/dev/sda1 回车.注意(hd0,0)=/dev/sda1 (hd0,1)=/dev/sda2如图

永利平台娱乐 33永利平台娱乐 34

接着输入initrd /ini 按tab键补全,回车

永利平台娱乐 35永利平台娱乐 36

输入boot命令,这时系统会重新启动

stage1.5破坏修复

模拟破坏

# dd if=/dev/zero of=/dev/sda bs=1 count=13000 skip=512 seek=512

TAG标签:
版权声明:本文由永利平台娱乐发布于每日更新,转载请注明出处:如果启动前挂载了光盘,系统无法加载 / 分区