剛剛經(jīng)歷了一次嚴(yán)重的系統(tǒng)崩潰,花了十幾個(gè)小時(shí)才將系統(tǒng)恢復(fù)正常驶鹉,處理過(guò)程中涉及很多以前沒(méi)有接觸過(guò)的內(nèi)容轰驳,而且連續(xù)的出現(xiàn)了修復(fù)一個(gè)問(wèn)題后導(dǎo)致了更嚴(yán)重的問(wèn)題,于是將處理的過(guò)程記錄下來(lái)作為經(jīng)驗(yàn)以供參考礁苗。
起因是這樣的爬凑,我的電腦上本來(lái)有一個(gè)windows和一個(gè)ubuntu,近些時(shí)間由于測(cè)(zi)試(ji)需(zuo)要(si)试伙,又裝了一個(gè)修改過(guò)的debian贰谣,考慮到基本上用不到windows娜搂,就把原來(lái)windows 70g的分區(qū)格式化后裝上了debian,這就產(chǎn)生了一個(gè)問(wèn)題吱抚,就是啟動(dòng)引導(dǎo)的問(wèn)題百宇。
原來(lái)的雙系統(tǒng),是先有windows后裝的ubuntu秘豹,因此携御,ubuntu的grub就可以將windows的MBR啟動(dòng)覆蓋掉(windows8,ubuntu15.04都是UEFI引導(dǎo))既绕,而同時(shí)grub支持多系統(tǒng)啟動(dòng)啄刹,于是我就可以愉快的使用雙系統(tǒng)啦。
但是格式化windows盤裝了debian后凄贩,我本以為debian的grub會(huì)覆蓋掉ubunutu的誓军,從而可以debian和ubuntu雙系統(tǒng)自由選擇(因?yàn)橹按嬖诘南到y(tǒng)的grub不會(huì)寫入新系統(tǒng),自然無(wú)法啟動(dòng)新系統(tǒng)疲扎,后來(lái)我才知道這個(gè)問(wèn)題可以使用 sudo update-grub
這個(gè)指令解決)昵时,然而不知道什么原因,debian的grub并沒(méi)有使用UEFI椒丧,而是寫入了BIOS壹甥,使用legacy模式啟動(dòng),這樣默認(rèn)的啟動(dòng)就還是ubuntu的grub壶熏,無(wú)法切換debian句柠,于是想通過(guò)清除MBR的方式來(lái)迫使電腦使用debian的grub引導(dǎo)啟動(dòng)。
于是我將0柱面所在的扇區(qū)格式化棒假,進(jìn)BIOS看到UEFI的boot只剩下了Network boot溯职,沒(méi)有 SATA boot,啟動(dòng)帽哑,果然如我所料缸榄,鍵入debian的grub,可以實(shí)現(xiàn)雙系統(tǒng)祝拯,但是ubuntu的啟動(dòng)時(shí)間由原來(lái)的不到十秒增長(zhǎng)到了一分半左右甚带,這肯定不是正常的速度,于是進(jìn)入系統(tǒng)佳头,使用指令
systemmd-analyse critial-chain
來(lái)查看啟動(dòng)日志
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秒鐘,再次打開(kāi)系統(tǒng)康嘉,發(fā)現(xiàn)啟動(dòng)時(shí)出現(xiàn)下面一句話
A start job is running for dev-disk .....8da.device
我不知道8da是什么意思碉输,猜測(cè)應(yīng)該是sda8,想起將mbr抹去之后亭珍,各個(gè)分區(qū)在/dev 中的數(shù)字應(yīng)該是會(huì)自動(dòng)向前移動(dòng)一位的敷钾,但是這之后grub自動(dòng)更新枝哄,所以可以正確啟動(dòng),google之阻荒,得到的結(jié)果是這一項(xiàng)與UEFI啟動(dòng)有關(guān)挠锥,猜想是mbr被格式化,導(dǎo)致UEFI啟動(dòng)不正確侨赡,進(jìn)行錯(cuò)誤檢查蓖租。
于是進(jìn)入 /etc/fsdsk
文件中將UEFI引導(dǎo)的相關(guān)內(nèi)容注釋掉變成
#/boot/efi was on /dev/sda2 during installation
#UUID=8419-9A79 /boot/efi vfat umask=0077 0 1
在進(jìn)行啟動(dòng),速度恢復(fù)正常羊壹,正要高興蓖宦,突然發(fā)現(xiàn),本來(lái)是一個(gè)NTFS文件分區(qū)卻被標(biāo)示為了Swap無(wú)法讀取油猫,
我用 mount /dev/sda5 /media -t NTFS
進(jìn)行掛在稠茂,提示no NTFS signature
實(shí)在沒(méi)有辦法,只能用unetool制作了一個(gè)winpe的啟動(dòng)修復(fù)盤情妖,打開(kāi)睬关,用diskGenius,成功讀取到了數(shù)據(jù)鲫售,但是并不能將swap重新轉(zhuǎn)回ntfs共螺,我只能采用下下策该肴,把數(shù)據(jù)拷出到移動(dòng)硬盤上情竹,格式化這個(gè)分區(qū),想要再把數(shù)據(jù)拷進(jìn)去
但是當(dāng)我格式化完成重新啟動(dòng)的時(shí)候匀哄,突然連grub都無(wú)法啟動(dòng)秦效,直接進(jìn)入了grub rescue,驚出我一身冷汗涎嚼!這可能意味著整個(gè)硬盤的東西都沒(méi)了
再次google之阱州,得到解決辦法使用
set root=(bd0,5)
set prefix=(bd0,5)/boot/grub
insmod normal
normal
成功引導(dǎo)啟動(dòng),可是這時(shí)候進(jìn)入debian卻進(jìn)入emergency mode法梯,并且只能提供最基本的bash指令苔货,連VIM都沒(méi)有。立哑。夜惭。。铛绰。
從上面信息來(lái)看诈茧,應(yīng)該是grub沒(méi)有跟隨盤符變化更新,導(dǎo)致了主分區(qū)掛載不正確(分區(qū)在/dev下的“文件”名不是載入系統(tǒng)后分配的捂掰,而是在bios啟動(dòng)后就分配好了敢会,因此對(duì)于兩個(gè)系統(tǒng)來(lái)說(shuō)是相同的)
然后我發(fā)現(xiàn)曾沈,沒(méi)有vim, 但是有vi。鸥昏。塞俱。。互广。
進(jìn)入 /etc/default/grub
查看敛腌,發(fā)現(xiàn)debian的盤符不是用UUID定義,而是用文件名既 /dev/sda* 來(lái)定義的惫皱,我把錯(cuò)誤的文件名全部改為正確的像樊,正常啟動(dòng)!
再執(zhí)行
sudo update-grub
sudo grub install /dev/sda
恢復(fù)正常B梅蟆I鳌!
(我著實(shí)是被各種毛病折磨的不輕媳谁,這已經(jīng)是我用LInux以來(lái)第11次GUI界面崩潰了涂滴,第9次格式化硬盤,第3次使用pe進(jìn)行恢復(fù)晴音,雖然還是什么都不懂柔纵,然而多多少少有了那么一點(diǎn)經(jīng)驗(yàn))
(世界上沒(méi)有比error,exception此類東西頸令人憎惡的锤躁,如果有搁料,那就是依賴關(guān)系不滿足和GUI界面崩潰)