# 启动顺序更改前
安装好双系统(Linux After Windows)完后,启动顺序一切正常,启动顺序(Primary Boot Sequence) 如下:
```text
> M.2 Drive 1: Sum...
> Manjaro
> Windows Boot Manager
> SATA 1: ...
> SATA 2: ...
```
# 启动顺序被更改
但开机动画太拖延时间,又去 `BIOS` 胡乱设置,导致只能启动 `Windows`,重启后再次进入 `BIOS` 发现 `Primary Boot Sequence` 已经被 `Windows` 更改(调戏)了:
```text
> M.2 Drive 1: Sum...
> Windows Boot Manager *
> Manjaro *
> SATA 1: ...
> SATA 2: ...
```
`BIOS` 是无法对同一个硬盘下的 `Windows Boot Manager` 和 `Manjaro` 设置启动顺序。
> 因为电脑只有一个 `M.2` 接口,所以只能将 `512G` 的硬盘分区装双系统
# 解决方案
开机时按 `F12` 选择 `Manjaro`。进入 `Manjaro` 后需提前安装 [efibootmgr](https://github.com/rhboot/efibootmgr)。执行 `efibootmgr` 结果如下:
```bash
➜ ~ efibootmgr
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0000,0003,0007,0006,0008,0009,000A
Boot0000* Windows Boot Manager
Boot0003* Manjaro
Boot0006* ST2000DM008-2FR102
Boot0007* Samsung SSD 970 PRO 512GB
Boot0008* Realtek PXE B04 D00
Boot0009* Generic Usb Device
Boot000A* CD/DVD Device
```
通过 `BootOrder: 0000,0003,0007,0006,0008,0009,000A` 可以看出 `Boot0000* Windows Boot Manager` 被安排了。我们只需要修改成期望的执行顺序即可:
```bash
➜ ~ efibootmgr -o 0003,0000,0007,0006,0008,0009,000A
➜ ~ reboot
```
> 这里 -o 参数的意思是设置启动顺序
最后,建议将双系统安装在不同的硬盘中,避免一些不必要得麻烦。
# 参考
- https://github.com/rhboot/efibootmgr
- https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#efibootmgr

解决双系统(同盘)启动顺序