双系统不论是重装还是新装都有可能导致双系统只能引导进入一个系统,这里记录一种简单修复双系统引导方法。
一、当只能引导进入Win 10系统时,可利用windows系统bcdedit工具进行引导修复。
修复步骤如下:
1.以管理员身份启动powershell(Win+X)。修改BCD文件前可以先备份一下:
bcdedit /export D:backup.bcd
2. 通过复制当前引导配置来创建ubuntu引导配置,执行命令:
bcdedit /copy "{bootmgr}" /d "Ubuntu"
3.查看启动配置可以看到复制的ubuntu启动配置:
C:\Windows\system32> bcdedit /enum firmware
固件启动管理器
---------------------
标识符 {fwbootmgr}
displayorder {bootmgr}
{2d1cd890-c02e-11ef-b243-d86807feaf75}
{2d1cd883-c02e-11ef-b243-d86807feaf75}
{2d1cd880-c02e-11ef-b243-d86807feaf75}
{2d1cd881-c02e-11ef-b243-d86807feaf75}
{2d1cd87d-c02e-11ef-b243-d86807feaf75}
{2d1cd87e-c02e-11ef-b243-d86807feaf75}
{2d1cd87f-c02e-11ef-b243-d86807feaf75}
{2d1cd882-c02e-11ef-b243-d86807feaf75}
{2d1cd884-c02e-11ef-b243-d86807feaf75}
timeout 2
Windows 启动管理器
--------------------
标识符 {2d1cd890-c02e-11ef-b243-d86807feaf75}
device partition=\Device\HarddiskVolume7
path \EFI\Microsoft\Boot\bootmgfw.efi
description Ubuntu
locale zh-CN
inherit {globalsettings}
default {current}
resumeobject {2d1cd88c-c02e-11ef-b243-d86807feaf75}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Windows 启动管理器
--------------------
标识符 {bootmgr}
device partition=\Device\HarddiskVolume7
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale zh-CN
inherit {globalsettings}
default {current}
resumeobject {2d1cd88c-c02e-11ef-b243-d86807feaf75}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
4.可以看到新创建的启动项为:{2d1cd890-c02e-11ef-b243-d86807feaf75}。新建的“Windows 启动管理器”的“description”显示为“Ubuntu”,但是仔细看“path”显示的和{bootmgr}相同,这里需要使用下面命令修改为Ubuntu系统的的启动grub文件路径:
bcdedit /set "{2d1cd890-c02e-11ef-b243-d86807feaf75}" path \EFI\ubuntu\grubx64.efi
也可以将timeou改小一点,比如:
bcdedit /set "{2d1cd890-c02e-11ef-b243-d86807feaf75}" timeout 5
再次查看一下修改后的启动配置:
C:\Windows\system32> bcdedit /enum firmware
固件启动管理器
---------------------
标识符 {fwbootmgr}
displayorder {bootmgr}
{2d1cd890-c02e-11ef-b243-d86807feaf75}
{2d1cd883-c02e-11ef-b243-d86807feaf75}
{2d1cd880-c02e-11ef-b243-d86807feaf75}
{2d1cd881-c02e-11ef-b243-d86807feaf75}
{2d1cd87d-c02e-11ef-b243-d86807feaf75}
{2d1cd87e-c02e-11ef-b243-d86807feaf75}
{2d1cd87f-c02e-11ef-b243-d86807feaf75}
{2d1cd882-c02e-11ef-b243-d86807feaf75}
{2d1cd884-c02e-11ef-b243-d86807feaf75}
timeout 2
Windows 启动管理器
--------------------
标识符 {2d1cd890-c02e-11ef-b243-d86807feaf75}
device partition=\Device\HarddiskVolume7
path \EFI\ubuntu\grubx64.efi
description Ubuntu
locale zh-CN
inherit {globalsettings}
default {current}
resumeobject {2d1cd88c-c02e-11ef-b243-d86807feaf75}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 5
Windows 启动管理器
--------------------
标识符 {bootmgr}
device partition=\Device\HarddiskVolume7
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale zh-CN
inherit {globalsettings}
default {current}
resumeobject {2d1cd88c-c02e-11ef-b243-d86807feaf75}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
到这里ubuntu启动配置修复完成了,重启进入BIOS看看是不是多了一个"Ubuntu"启动选项。如果上述步骤搞错需要删除启动项执行下面命令:
bcdedit /delete "{2d1cd890-c02e-11ef-b243-d86807feaf75}"
二、启动只能进入ubuntu系统修复方法
1.通过向grub中添加windows 10启动项,修改/boot/efi/grab.cfg:
## Windows Boot Manager
menuentry 'Windowns 10' -class windows --class os $menuentry_id_option 'osprober-efi-DA18-EBFA' {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root BFD0-9CFE
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
2.通过还原EFI分区中Microsofe文件夹:
a) 首先安装efi工具:
sudo apt install efibootmgr
b) 挂载EFI分区到/mnt目录(这里以我的第二块硬盘的第一个分区为例,一般情况下EFI分区都在硬盘的第一个分区):
sudo mount /dev/sdb1 /mnt
c) 到其他正常电脑里复制一份到/mnt/EFI/目录中, 找不到的话通知我上传一份
d) 使用efiboot将/EFI/Microsoft/Boot/bootmgfw.efi文件添加到系统启动项中。
efibootmgr -c -d /dev/sdb -p 1 -L "Windows Boot Manager" -l \EFI\Microsoft\Boot\bootmgfw.efi
三、双系统都不能正常启动
这里需要用的U盘启动盘方法修复。首先利用大白菜或者其他U盘PE工具制成U盘启动盘,然后通过U盘启动进入PE系统来重新创建EFI分区,然后把里面/EFI目录还原进入,具体细节这里不写了,网上资料比较多。