修復(fù) Failed to open \efi\centos\grubx64.efi - not found
最近由于一臺(tái)Liunx服務(wù)器突然斷電运杭,導(dǎo)致Centos系統(tǒng)再開(kāi)機(jī)時(shí)報(bào)錯(cuò)如下圖:
錯(cuò)誤信息Failed to open \efi\centos\grubx64.efi - not found
1揉忘、進(jìn)入急救模式
大致就是因?yàn)殚_(kāi)機(jī)時(shí)系統(tǒng)沒(méi)有找到grubx64.efi
這個(gè)文件導(dǎo)致系統(tǒng)進(jìn)不去了挖息。于是開(kāi)始進(jìn)行系統(tǒng)修復(fù)(主要就是把丟失的這個(gè)文件給放到原來(lái)的位置上去)茂附,我在網(wǎng)上找了很多文章蔬蕊,大致都是需要使用Centos系統(tǒng)安裝盤(pán)光驅(qū)
或者Centos的U盤(pán)啟動(dòng)盤(pán)
在選擇安裝系統(tǒng)的界面如下圖:
進(jìn)入rescue system
晰筛,然后將/mnt/sysimage
文件夾下面的grubx64.efi
文件復(fù)制到丟失文件目錄/boot/efi/EFI/centos/
下谨究。
可能有些電腦在bios
里面無(wú)法找到U盤(pán)啟動(dòng)選項(xiàng)逻锐,這些需要去找主板對(duì)應(yīng)的bios設(shè)置進(jìn)行設(shè)置夫晌,具體要看自己的電腦主板是什么品牌和型號(hào)就不在這里細(xì)說(shuō)了(網(wǎng)上都能找到這些設(shè)置)。
在進(jìn)入rescue system
時(shí)昧诱,也有可能會(huì)報(bào)modprobe:ERROR: could not insert 'floppy'
和modprobe:ERROR: could not insert 'edd':No
晓淀。
然后后面會(huì)打印200個(gè)腳本執(zhí)行超時(shí),并最終進(jìn)入>dracut:/#
,這時(shí)候是因?yàn)檫M(jìn)入rescue system
選擇設(shè)置中的stage2=xxxx
路徑不正確導(dǎo)致的盏档,所以這個(gè)時(shí)候進(jìn)入>dracut:/#
后凶掰,執(zhí)行:
# 查看/dev下面的硬盤(pán)和外部驅(qū)動(dòng)器
ls /dev
一般U盤(pán)會(huì)是sdbx
(x是數(shù)字)或者sdc
這樣的掛載路徑,找到插入的U盤(pán)是哪一個(gè),然后重啟電腦懦窘,再次進(jìn)入選擇rescue system
的頁(yè)面
選擇Rescue a CentOS system
,然后按e
進(jìn)入它的引導(dǎo)配置編輯頁(yè)面前翎,然后修改配置中的stage2=hd:LABEL=CentOS\xxxx
為stage2=hd:/dev/sdbx
(sdbx為前面找到的U盤(pán)路徑),然后按control + x
運(yùn)行畅涂,這時(shí)候就能正常進(jìn)入rescue system
了鱼填。
然后這個(gè)時(shí)候進(jìn)入/mnt/sysimage
文件夾下面,將grubx64.efi
文件復(fù)制到丟失文件目錄/boot/efi/EFI/centos/
下重啟即可毅戈。但是我卻發(fā)現(xiàn)這個(gè)目錄下面根本沒(méi)有丟失那個(gè)文件苹丸,并且我在根目錄下使用find . -name '*.efi'
進(jìn)行全局查找,其它目錄下也沒(méi)有丟失的這個(gè)文件苇经,既然現(xiàn)在找不到這個(gè)文件赘理,那就只能從外部把這個(gè)文件放進(jìn)去了。
我在制作完成CentOS啟動(dòng)盤(pán)后扇单,我的U盤(pán)中是有這個(gè)CentOS需要的系統(tǒng)文件的商模,那么我可以將的U盤(pán)掛載進(jìn)去,就能拿到我的這個(gè)文件了蜘澜。
2施流、掛載U盤(pán)
-
查看磁盤(pán)列表
fdisk -l
找到U盤(pán)的盤(pán)符,U盤(pán)容量固定8G鄙信、16G瞪醋、或者32G、64G的装诡,而且一般都是sdbx
或者sdc
這類(lèi)名稱(chēng)银受,所以比較好找。
-
查看掛載列表
df -h
這個(gè)時(shí)候會(huì)發(fā)現(xiàn)CentOS并沒(méi)有將U盤(pán)掛載上去鸦采。
-
掛載U盤(pán)
# 創(chuàng)建掛載的文件夾
mdkri /mnt/usb
# 將U盤(pán)掛載到文件夾下面
mount /dev/sdbx /mnt/usb
這個(gè)時(shí)候會(huì)發(fā)現(xiàn)CentOS的啟動(dòng)盤(pán)U盤(pán)無(wú)法進(jìn)行掛載宾巍,估計(jì)可能是因?yàn)橹白隽藛?dòng)盤(pán)的原因,無(wú)法再次掛載渔伯,然后我使用了另外一個(gè)U盤(pán)顶霞,將U盤(pán)也格式化為FAT32格式,并將grubx64.efi放進(jìn)去锣吼,然后進(jìn)行掛載选浑,結(jié)果發(fā)現(xiàn)掛載成功之后,里面并沒(méi)有g(shù)rubx.efi文件吐限,而只有一個(gè)found+local的文件夾百侧,里面也是空空如也轻猖,并且卸載這個(gè)U盤(pán)掛載umount \mnt\usb
再插入windos電腦顯示無(wú)法讀取,只能進(jìn)行格式化才行〗癫玻可見(jiàn)這樣進(jìn)行掛載之后U盤(pán)的文件系統(tǒng)被破壞了,里面的文件也丟失了狐粱,這之后我還嘗試過(guò)掛載另外的Liunx硬盤(pán)舀寓,依然是失敗的。
3肌蜻、最終解決辦法
其實(shí)很簡(jiǎn)單互墓,將CentOS的啟動(dòng)U盤(pán)拔出來(lái),這時(shí)候運(yùn)行命令
fdisk -l
可以發(fā)現(xiàn)啟動(dòng)盤(pán)還在蒋搜,這是因?yàn)閱?dòng)盤(pán)在啟動(dòng)了之后其實(shí)已經(jīng)復(fù)制內(nèi)容到系統(tǒng)中了篡撵,并虛擬了一個(gè)盤(pán)符進(jìn)行掛載,這個(gè)時(shí)候的盤(pán)符跟插在電腦上的啟動(dòng)U盤(pán)已經(jīng)沒(méi)有什么關(guān)系了豆挽,并且因?yàn)檫@種啟動(dòng)U盤(pán)的特性育谬,在啟動(dòng)之后并不能再看到真實(shí)的U盤(pán)盤(pán)符,所以把U盤(pán)拔掉再重新插上去即可帮哈。
再次插上去之后膛檀,會(huì)發(fā)現(xiàn)有一個(gè)名為sdc
文件系統(tǒng)為FAT32(其它的類(lèi)型U盤(pán)文件系統(tǒng)可能不一樣)的盤(pán)符,我們直接使用命令將這個(gè)盤(pán)符掛載上去即可
mount /dev/sdc /mnt/usb
這個(gè)時(shí)候進(jìn)入 /mnt/usb
目錄就能訪問(wèn)U盤(pán)中的文件了娘侍。
然后執(zhí)行copy命令
# 將U盤(pán)中的grubx64.efi文件復(fù)制到/boot/efi/EFI/centos/目錄中
cp /mnt/usb/EFI/BOOT/ /boot/efi/EFI/centos/grubx64.efi
卸載U盤(pán)
umount /mnt/usb
然后拔出U盤(pán)咖刃,重啟電腦將bios中的啟動(dòng)項(xiàng)改回電腦的系統(tǒng)硬盤(pán)就能進(jìn)入系統(tǒng)了。如果還有其它的文件丟失的話憾筏,也可以使用同樣的方式將文件放入到丟失的位置上去嚎杨。