今天在裝linux的window雙系統時,出如今沒法使用linux引導的問題,開機老是自動進windows,照理來講我先裝的window,後裝的linux,應該是開機進grub引導纔對。在主板的boot里根本沒有linux項,後來用EasyUEFI檢查發現linux的啓動項被禁止和隱藏了!!linux
後來查了查,部分品牌的電腦會出現沒法使用linux引導的問題,BIOS的boot裏只有windows的啓動項。若是是傳統的引導方式,能夠經過EasyBCD在windows系統下添加linux啓動項,而UEFI的啓動方式就無法用window引導linux了。ios
此時可使用linux的引導文件替換windows的引導文件,讓主板覺得你這是windows的引導項。shell
雖然經過正常的方式沒法進入linux系統,可是能夠經過linux的啓動盤找到linux的啓動項,我用的是manjaro系統,插入刻錄好的U盤,選擇USB方式引導,在Detect EFI bootloaders裏能夠找到安裝好的manjaro系統的引導項。經過它能夠進入Linux系統。vim
進入系統的/boot/efi/EFI/
目錄能夠看到以下三個文件夾windows
總用量 32 drwx------ 2 root root 8192 10月 7 05:53 Boot drwx------ 2 root root 8192 10月 7 14:14 Manjaro drwx------ 4 root root 8192 10月 7 15:07 Microsoft
其中Manjaro裏的grubx64.efi就是Linux的bootloader。ui
爲了開機使用Linux引導咱們可使用Manjaro的grubx64.efi替換Microsoft的bootmgfw.efi,在我電腦上的具體命令是:code
# 備份原文件 cp Microsoft/Boot/bootmgfw.efi Microsoft/Boot/bootmgfw1.efi # 替換 cp Manjaro/grubx64.efi Microsoft/Boot/bootmgfw.efi
但這麼以來即便你在Linux的grub裏選擇Windows Boot Manager項也不能進入Windows了,由於這個啓動項指向的Windows bootloader已經被Linux替換了,因此還須要修改grub的Windows啓動項,讓它指向咱們備份的bootmgfw1.efi。efi文件是不可讀的,咱們能夠修改的是cfg文件。orm
看一個當前目錄的Boot文件夾,裏面有一個叫grub.cfg的文件,使用cat命令查看內容:blog
cat Boot/grub.cfg search.fs_uuid 766eca58-fb60-457a-b79c-607f2c728407 root hd1,gpt4 set prefix=($root)'/boot/grub' configfile $prefix/grub.cfg
發現它其實是引用的/boot/grub/grub.cfg
的內容,使用vim打開它,搜索Windows
能夠發現Windows的啓動項ci
menuentry 'Windows Boot Manager (on /dev/sdb1)' --class windows --class os $menuentry_id_option 'osprober-efi-000E-17EB' { savedefault insmod part_gpt insmod fat set root='hd1,gpt1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt1' --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1 000E-17EB else search --no-floppy --fs-uuid --set=root 000E-17EB fi chainloader /EFI/Microsoft/Boot/bootmgfw.efi }
將chainloader中的bootmgfw.efi改爲bootmgfw1.efi
重啓應該就能夠了。