轉自:http://blog.163.com/ycy_sdfc/blog/static/196180420144183845261/
當uefi引導文件損壞,或ghost還原64位系統到C盤,因無uefi引導還是不能啓動系統。
怎麼修復UEFI引導呢?
UEFI引導基本原理:
1、esp引導分區
esp磁盤分區是gpt格式硬盤放efi引導文件的磁盤,在mbr格式硬盤中也可以由任一fat格式磁盤分區代替
2、efi文件結構
efi\boot\bootx64.efi
efi\microsoft\boot\bcd
3、efi啓動過程
uefi bios啓動時,自動查找硬盤下esp分區的bootx64.efi,然後由bootx64.efi引導efi下的bcd文件,由bcd引導指定系統文件(一般爲c:\windows\system32\winload.efi)
修復方法:
一、用bcbboot自動修復
我們建議大家啓動64位8PE,用它帶的bcdboot來修復。
(一)指定esp分區修復
環境爲64位8PE,bios/uefi啓動進入下都可以
1、啓動64位8PE,並用esp分區掛載器或diskgenuis掛載esp分區
打開cmd命令行,輸入以下命令並運行
bcdboot c:\windows /s o: /f uefi /l zh-cn
其中:c:\windows 硬盤系統目錄,根據實際情況修改
/s o: 指定esp分區所在磁盤,根據實際情況修改
/f uefi 指定啓動方式爲uefi
/l zh-cn 指定uefi啓動界面語言爲簡體中文
注:64位7PE不帶/s參數,故7PE不支持bios啓動下修復
(二)不指定esp分區修復
環境爲64位Win7或Win8PE,只有uefi啓動進入Win PE纔可以
不用掛載esp分區,直接在cmd命令行下執行:
bcdboot c:\windows /l zh-cn
其中 c:\windows 硬盤系統目錄,根據實際情況修改
/l zh-cn 指定uefi啓動界面語言爲簡體中文
注:在Win8 PE中,我們也可以在uefi啓動進入Win pe後,掛載esp分區用方法(一)修復
二、用bootice手動修復
從efi引導啓動過程來看,雖然它的文件很多,但主要用到的就是兩文件,我們完全可以在各Win pe下掛載esp分區,從硬盤系統中複製bootx64.efi文件,然後用用bootice製作好bcd,就完成efi引導修復。
1、啓動任一Win pe,用esp分區掛載器或diskgenuis掛載esp分區
2、查看esp分區是否可正常讀寫,如不正常可重新格式化爲fat16分區格式。
3.在esp分區中建立如下空文件夾結構
\efi\boot\ (bootx64.efi等複製)
\efi\microsoft\boot\ (bcd等建立)
4、複製硬盤系統中的bootmgfw.efi(一般在c:\windows\boot\efi下)到esp分區的\efi\boot\下,並重命名爲bootx64.efi
5、打開bootice軟件,有esp分區的\efi\microsoft\boot\下新建立一bcd文件,
打開並編輯bcd文件,添加“windows vista\7\8啓動項,指定磁盤爲硬盤系統盤在的盤,指定啓動分區爲硬盤系統分區(一般爲c:)
指定啓動文件爲:\Windows\system32\winload.efi, 是.efi,不是.exe,要手工改過來
最後保存當前系統設置並退出。
注:Winxp PE不能識別gpt格式的硬盤分區,用2003PE中的disk.sys替換xpPE內核中的相應文件,就可以讓xpPE也能識別gpt磁盤格式分區
指定啓動分區不是esp分區所在分區,就是硬盤64位Win7、Win8 系統所在分區
指定啓動文件爲:\Windows\system32\winload.efi, 是.efi,不是.exe,要手工改過來
其它問題
1、手工運行ghost並不會修復esp分區
2、用老大們的一鍵還原,現在慢慢加上了還原後esp引導修復功能,如實測深山的一鍵還原就自帶esp分區uefi引導修復
3、用微軟原版系統光盤安裝或PE下安裝,當然都會自動修復esp引導。
@echo off
:1
title BIOS+UEFI引導修復工具1.1
color 03
echo *******************************************************************************
echo * BIOS+UEFI引導修復工具1.1 *
echo * *
echo *******************************************************************************
echo * *
echo * 此工具主要用於修復Windows引導,兼容BIOS啓動和UEFI啓動。 *
echo * 同時也可以用於修復多系統引導 *
echo * *
echo *******************************************************************************
echo.
set /p A=請輸入Windows所在盤符:
echo.
set /p B=請輸入引導文件所在盤符:
echo.
echo Windwos所在盤符爲%A%,引導文件所在盤符爲%B%。確定要修復嗎?
pause
if exist "%HOMEDRIVE%\Program Files (x86)" (
goto x64
) else (
goto x86
)
:x64
echo 正在修復引導。。。
bcdboot64 %A%:\windows /s %B%: /f all /l zh-cn
echo 已完成修復
pause
cls
goto 1
:x86
echo 正在修復引導。。。
bcdboot32 %A%:\windows /s %B%: /f all /l zh-cn
echo 已完成修復
pause
cls
goto 1