Windows与Linux的UEFI引导修复教程
UEFI引導修復教程
一、UEFI引導基本原理
1.esp引導分區
esp磁盤分區是gpt格式硬盤放efi引導文件的磁盤分區,在mbr格式硬盤中也可以由任一fat格式磁盤分區代替
2.efi文件結構
efi\boot\bootx64.efi
efi\microsoft\boot\bcd
efi\ubuntu\grubx64.efi
3.efi啟動過程
uefi bios啟動時,自動查找硬盤下esp分區的bootx64.efi,然后由bootx64.efi引導
efi下的bcd文件,由bcd引導指定系統文件(一般為c:\windows\system32\winload.efi)
二、修復windowsUEFI引導(重新生成windows在EFI下的文件夾和文件)
0)注意
1.手工運行ghost并不會修復esp分區
2.用老大們的一鍵還原,現在加上了還原后esp引導修復功能,如實測深山的一鍵還原就
自帶esp分區uefi引導修復
3.用微軟原版系統光盤安裝或PE下安裝,當然都會自動修復esp引導。
4.實用winpe上修復引導是最簡便高效的方式!
1)用bcbboot自動修復
我們建議大家啟動64位8PE,用它帶的bcdboot來修復。
(一)指定esp分區修復
環境為64位8PE,bios/uefi啟動進入下都可以
1.啟動64位8PE,并用esp分區掛載器或diskgenuis掛載esp分區
2.打開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位7或8PE,只有uefi啟動進入PE才可以
不用掛載esp分區,直接在cmd命令行下執行:
bcdboot c:\windows /l zh-cn
其中 c:\windows 硬盤系統目錄,根據實際情況修改
/l zh-cn 指定uefi啟動界面語言為簡體中文
注:在8PE中,我們也可以在uefi啟動進入pe后,掛載esp分區用方法(一)修復
(三)用“UEFI引導自動修復”腳本修復
這個腳本,其實就是用了8PE的bcdboot,來修復uefi引導。測試可以在2003 7 8 PE
中自動修復uefi引導。
附件提供兩套,第一套是程序版,為離棄制作;第二套是pecmd腳本版,由caocaofff制作,都相當完美。
2)用bootice手動修復
從efi引導啟動過程來看,雖然它的文件很多,但主要用到的就是兩文件,我們完全可以在
各pe下掛載esp分區,從硬盤系統中復制bootx64.efi文件,然后用用bootice制作好bcd,就
完成efi引導修復。
1.啟動任一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,要手工改過來
最后保存當前系統設置并退出。
這樣子,精簡的UEFI引導就手工修復了,實機和虛擬機測試通過。
注:xpPE不能識別gpt格式的硬盤分區,用2003PE中的disk.sys替換xpPE內核中的相應文件,就
可以讓xpPE也能識別gpt磁盤格式分區
指定啟動分區不是esp分區所在分區,就是硬盤64位7 8 系統所在分區
指定啟動文件為:\Windows\system32\winload.efi, 是*.efi,不是*.exe,要手工改過來
三、修復Linux的UEFI引導(重裝grub2并重新生成Linux在EFI下的文件夾和文件)
準備好一張 linux系統 對應的 DVD 光盤,或者 live USB,最好選擇與當前系統相同的版本。開機啟動 DVD 或者 Live USB,,進入救援模式。等待各種輸出結束,看到"login"后,輸入用戶名"root",直接回車即可進入救援模式,不需要輸入密碼。(進入試用系統也一樣)
1)首先查看各分區的情況,使用命令:
fdisk -l
列出分區情況。
2)將各個分區掛載。例如,假設 sda8 為 / 分區,sda6 為 /boot 分區,sda1為/boot/efi ,sda7 為 swap 分區,sda9 為 /home 分區,則按目錄結構順序掛載:
sudo mount /dev/sda8 /mnt
sudo mount /dev/sda6 /mnt/boot
sudo mount /dev/sda1 /mnt/boot/efi
sudo mount /dev/sda9 /mnt/home
注意,swap 分區不需要掛載。要先掛在根分區,然后把其他的分區相應的掛在到根分區下。
3)掛載、綁定運行環境到目標系統
sudo moun t --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
4)修復
sudo chroot /mnt /bin/bash # chroot到需要修復的系統
grub-mkconfig -o /boot/grub/grub.cfg #生成 /boot/grub/grub.cfg,ubuntu16.04命令是grub,一些linux發行版是grub2
grub-install --directory=/usr/lib/grub/x86_64-efi /boot/efi # 根據grub模塊文件和/boot /grub.cfg安裝grub到EFI分區。
exit
reboot
備注:如果是MBR的安裝的系統,grub安裝命令為:grub-install --directory=/usr/lib/grub/i386-pc /dev/sda 。默認的 --directory= /usr/lib/grub/,即你當前的運行環境。
總結
以上是生活随笔為你收集整理的Windows与Linux的UEFI引导修复教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Chapter 14 Exercises
- 下一篇: linux-3.4.2移植到FL2440