linux 进入抢救模式,一次成功的linux系统抢救

刚刚经历了一次严重的系统崩溃,花了十几个小时才将系统恢复正常,处理过程中涉及很多以前没有接触过的内容,而且连续的出现了修复一个问题后导致了更严重的问题,于是将处理的过程记录下来作为经验以供参考。

起因是这样的,我的电脑上本来有一个windows和一个ubuntu,近些时间由于测(zi)试(ji)需(zuo)要(si),又装了一个修改过的debian,考虑到基本上用不到windows,就把原来windows 70g的分区格式化后装上了debian,这就产生了一个问题,就是启动引导的问题。

原来的双系统,是先有windows后装的ubuntu,因此,ubuntu的grub就可以将windows的MBR启动覆盖掉(windows8,ubuntu15.04都是UEFI引导),而同时grub支持多系统启动,于是我就可以愉快的使用双系统啦。

但是格式化windows盘装了debian后,我本以为debian的grub会覆盖掉ubunutu的,从而可以debian和ubuntu双系统自由选择(因为之前存在的系统的grub不会写入新系统,自然无法启动新系统,后来我才知道这个问题可以使用 sudo update-grub这个指令解决),然而不知道什么原因,debian的grub并没有使用UEFI,而是写入了BIOS,使用legacy模式启动,这样默认的启动就还是ubuntu的grub,无法切换debian,于是想通过清除MBR的方式来迫使电脑使用debian的grub引导启动。

于是我将0柱面所在的扇区格式化,进BIOS看到UEFI的boot只剩下了Network boot,没有 SATA boot,启动,果然如我所料,键入debian的grub,可以实现双系统,但是ubuntu的启动时间由原来的不到十秒增长到了一分半左右,这肯定不是正常的速度,于是进入系统,使用指令

systemmd-analyse critial-chain

来查看启动日志

graphical.target @1min31s

└─multi-user.target @1min31s

└─arpwatch.service @1min30s

└─basic.target @1min30s

└─sockets.target @1min30s

└─rpcbind.socket @1min30s

└─sysinit.target @1min30s

└─systemd-backlight@backlight:intel_backlight.service @1.835s +5ms

└─system-systemd\x2dbacklight.slice @1.835s

└─system.slice @106ms

└─-.slice @97ms

可以看到,是在sysinit.socket处几乎停了90秒钟,再次打开系统,发现启动时出现下面一句话

A start job is running for dev-disk .....8da.device

我不知道8da是什么意思,猜测应该是sda8,想起将mbr抹去之后,各个分区在/dev 中的数字应该是会自动向前移动一位的,但是这之后grub自动更新,所以可以正确启动,google之,得到的结果是这一项与UEFI启动有关,猜想是mbr被格式化,导致UEFI启动不正确,进行错误检查。

于是进入 /etc/fsdsk 文件中将UEFI引导的相关内容注释掉变成

#/boot/efi was on /dev/sda2 during installation

#UUID=8419-9A79 /boot/efi vfat umask=0077 0 1

在进行启动,速度恢复正常,正要高兴,突然发现,本来是一个NTFS文件分区却被标示为了Swap无法读取,

我用 mount /dev/sda5 /media -t NTFS进行挂在,提示no NTFS signature

实在没有办法,只能用unetool制作了一个winpe的启动修复盘,打开,用diskGenius,成功读取到了数据,但是并不能将swap重新转回ntfs,我只能采用下下策,把数据拷出到移动硬盘上,格式化这个分区,想要再把数据拷进去

但是当我格式化完成重新启动的时候,突然连grub都无法启动,直接进入了grub rescue,惊出我一身冷汗!这可能意味着整个硬盘的东西都没了

再次google之,得到解决办法使用

set root=(bd0,5)

set prefix=(bd0,5)/boot/grub

insmod normal

normal

成功引导启动,可是这时候进入debian却进入emergency mode,并且只能提供最基本的bash指令,连VIM都没有。。。。。

从上面信息来看,应该是grub没有跟随盘符变化更新,导致了主分区挂载不正确(分区在/dev下的“文件”名不是载入系统后分配的,而是在bios启动后就分配好了,因此对于两个系统来说是相同的)

然后我发现,没有vim, 但是有vi。。。。。

进入 /etc/default/grub 查看,发现debian的盘符不是用UUID定义,而是用文件名既 /dev/sda* 来定义的,我把错误的文件名全部改为正确的,正常启动!

再执行

sudo update-grub

sudo grub install /dev/sda

恢复正常!!!

(我着实是被各种毛病折磨的不轻,这已经是我用LInux以来第11次GUI界面崩溃了,第9次格式化硬盘,第3次使用pe进行恢复,虽然还是什么都不懂,然而多多少少有了那么一点经验)

(世界上没有比error,exception此类东西颈令人憎恶的,如果有,那就是依赖关系不满足和GUI界面崩溃)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值