為了迎接win10決定重新裝一下win8系統,本來是win8+fedorad的雙系統,但是重裝完win8後發現進不去fedora了,為了做好雙系統的引導,糾結了半天終于解決了,寫此文來總結下
最終的解決方法:
1.如果已有fedora系統,那麼進入BIOS選擇界面(我的電腦是按F12)選擇Fedora啟動管理項即可進入fedora
2.找到fedora系統的引導檔案所在的檔案夾(boot/efi/EFI/fedora/)
如果不知道哪個是引導檔案可以使用efibootmgr -v 檢視
3.
方法一:(請優先使用方法一)
輸入grub2-mkconfig -o boot/efi/efi/fedora/grub.cfg
方法二:
打開檔案夾下的grub.cfg檔案,找到
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
在其後添加如下内容(不要有空行)
menuentry 'Windows 8.1'{
insmod part_gpt
insmod chain
set root=(hd0,1)
chainloader /EFI/microsoft/Boot/bootmgfw.efi
}
*hd(0,1)表示第一塊硬碟的第一個分區
*bootmgfw.efi是windows8.1下預設的bootloader
*可能會在整個系統中存在多個grub.cfg檔案,但是隻有與.efi檔案在同一個檔案夾下的grub.cfg是管用的
**grub2的官方不推薦直接修改grub.cfg檔案,而是修改etc/grub.d/40_custom檔案,然後使用grub2-mkconfig指令,具體操作請自行百度了
4.修改啟動管理項順序
輸入efibootmgr後會顯示啟動管理項的預設順序,在我的電腦上是
BootCurrent: 0019
Timeout: 0 seconds
BootOrder: 0019,0018,0000,0001,0002,0003,0007,0008,0009,000A,000B,000C,000D,000E,000F,0010,0011,0012
Boot0000 Setup
Boot0001 Boot Menu
Boot0002 Diagnostic Splash Screen
Boot0003 Lenovo Diagnostics
Boot0004 Startup Interrupt Menu
Boot0005 ME Configuration Menu
Boot0006 Rescue and Recovery
Boot0007* USB CD
Boot0008* USB FDD
Boot0009* ATAPI CD0
Boot000A* ATA HDD0
Boot000B* ATA HDD1
Boot000C* ATA HDD2
Boot000D* USB HDD
Boot000E* PCI LAN
Boot000F* ATAPI CD1
Boot0010 Other CD
Boot0011* ATA HDD3
Boot0012 Other HDD
Boot0013* IDER BOOT CDROM
Boot0014* IDER BOOT Floppy
Boot0015* ATA HDD
Boot0016* ATAPI CD:
Boot0017* PCI LAN
Boot0018* Windows Boot Manager
Boot0019* Fedora 22
BootCurrent表示目前使用的是哪個啟動管理項
BootOrder是目前的啟動管理項的順序,對于我的機器而言就是計算機會先嘗試使用Boot0019 Fedora 22的管理項,不行再嘗試使用Boot0018 Windows Boot Manager的附加元件(檢視具體加載檔案可輸入efibootmgr -v)
當剛安裝完windows系統後應該是windows boot manager優先級最高,那麼此時我們就要修改它
輸入efibootmgr -o BootXXXX,BootXXXX,BootXXXX...來修改加載順序,将fedora的管理項放在第一個
5.reboot即可
附:修改過程中走的一些彎路
1.首先,既然能進入windows那麼先想的是在windows的bootloader中增加fedora的附加元件,于是便嘗試使用bcdedit給其增加一個fedora附加元件(bcdedit具體用法可使用bcdedit /?檢視),設定完成後将shim.efi複制到c:下嘗試啟動,但是發現無法成功
*如果有哪個大神知道怎麼給win8增加一個linux引導項請賜教!!!謝謝了!
2.一開始在fedora下使用了efibootmgr指令修改了UEFI的啟動管理項,但是之後發現我想做的是在某個管理項中增加某個系統的附加元件,修改管理項并不會有用,然後隻能把新加的都删了。。。
強調下啟動管理器和啟動加載器是不同的概念,在windows指令行下輸入bcdedit就可發現,bootmgfw.efi是啟動管理器,winload.efi是啟動加載器,附加元件負責加載引導項
但還是寫下方法吧
新增管理項的方法是輸入
efobootmgr -c -w -L “Windows 8.1 Pro” -d /dev/sda -p 1 -l \\EFI\\Microsoft\\Boot\\bootmgfw.efi
這是增加windows附加元件,-L後的是界面會顯示的名字,-d後的是系統所在磁盤,-l後的是附加元件的具體路徑,根據這個格式自己修改即可
如果當發現自己進不了windows系統是也可以使用這個方法進入windows,但是之後應該會又進不了linux。。。
3.如果在widows下想通路esp分區,那麼可以使用MKLINK /J C:\ESP \\?\GLOBALROOT\Device\Harddisk0\Partition1\指令進行挂載,之後c:esp就是esp分區了,可以通過檢視确定部分bootloader的問題,但是無法将esp分區裡的東西複制出來或是複制進esp分區