这段是我写的Arch重启到Windows的:
efibootmgr | grep "Windows Boot Manager" | tail -n 1 | head -c 8 | tail -c 4 | xargs sudo efibootmgr -n
我怕重复造轮子。
最近编辑记录 huangsijun17 (2022-10-31 23:56:03)
离线
Linux to Windows肯定是有的,差不多就像你这样就可以。我想过去有人写过脚本,但是毕竟不同的LInux发行版(主要是grub的问题)会有一些区别,最好的方法可能还是自己造轮子了。
Windows to Linux我不清楚,Windows下也有程序能调整uefi启动项的顺序什么的,但是我不知道powershell的相关东西。我推测能写出来
PS:你可以用同方的uefi,这玩意有bug,如果Linux是第一启动项,你在windows待机后唤醒就变成linux啦
离线
Linux to Windows肯定是有的,差不多就像你这样就可以。我想过去有人写过脚本,但是毕竟不同的LInux发行版(主要是grub的问题)会有一些区别,最好的方法可能还是自己造轮子了。
Windows to Linux我不清楚,Windows下也有程序能调整uefi启动项的顺序什么的,但是我不知道powershell的相关东西。我推测能写出来
PS:你可以用同方的uefi,这玩意有bug,如果Linux是第一启动项,你在windows待机后唤醒就变成linux啦
我是给双系统掌机之类使用的。因为不接键盘的话,很难在掌机的UEFI引导菜单、grub引导菜单中选择系统。
离线
linux到win使用efibootmgr没问题
efibootmgr -n 是一次性命令,如果要永久生效考虑使用 -o
win到linux的话使用一些GUI软件会比较方便,如果要用batch脚本,尝试现在管理员权限下的cmd中使用以下命令:
bcdedit /enum firmware
不要忘了后面的firmware,这个参数告知bcdedit去读取EFI NVRAM中的项目,而不是windows自有的bcd 引导配置数据文件
我的机器运行结果如下:
Firmware Boot Manager
---------------------
identifier {fwbootmgr}
displayorder {bb1fd5e4-1b17-11ed-bfc3-806e6f6e6963}
{bootmgr}
timeout 1
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume3
path \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {c3925678-e7a5-11ec-bfa3-ac82474bf89c}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Firmware Application (101fffff)
-------------------------------
identifier {bb1fd5e4-1b17-11ed-bfc3-806e6f6e6963}
device partition=\Device\HarddiskVolume3
path \EFI\GRUB\GRUBX64.EFI
description GRUB
这里需要用到linux引导程序的标识符“{bb1fd5e4-1b17-11ed-bfc3-806e6f6e6963}”如果需要一次性启动,使用
bcdedit /set {fwbootmgr} bootsequence {bb1fd5e4-1b17-11ed-bfc3-806e6f6e6963}
永久生效
bcdedit /set {fwbootmgr} default {bb1fd5e4-1b17-11ed-bfc3-806e6f6e6963}
如果是powershell环境,务必将含有“{}”的段使用双引号引起来,否则会报错
参考来源:
https://man.archlinux.org/man/efibootmgr.8
https://blog.mussard.org.uk/2014/05/30/ … m-windows/
https://github.com/chengxuncc/booToLinux
https://learn.microsoft.com/zh-cn/windo … -reference
https://serverfault.com/questions/71433 … om-windows
最近编辑记录 Watermelon.Rei (2022-11-01 10:00:10)
离线
linux到win使用efibootmgr没问题
efibootmgr -n 是一次性命令,如果要永久生效考虑使用 -owin到linux的话使用一些GUI软件会比较方便,如果要用batch脚本,尝试现在管理员权限下的cmd中使用以下命令:
bcdedit /enum firmware
不要忘了后面的firmware,这个参数告知bcdedit去读取EFI NVRAM中的项目,而不是windows自有的bcd 引导配置数据文件
我的机器运行结果如下:
Firmware Boot Manager --------------------- identifier {fwbootmgr} displayorder {bb1fd5e4-1b17-11ed-bfc3-806e6f6e6963} {bootmgr} timeout 1 Windows Boot Manager -------------------- identifier {bootmgr} device partition=\Device\HarddiskVolume3 path \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI description Windows Boot Manager locale en-US inherit {globalsettings} default {current} resumeobject {c3925678-e7a5-11ec-bfa3-ac82474bf89c} displayorder {current} toolsdisplayorder {memdiag} timeout 30 Firmware Application (101fffff) ------------------------------- identifier {bb1fd5e4-1b17-11ed-bfc3-806e6f6e6963} device partition=\Device\HarddiskVolume3 path \EFI\GRUB\GRUBX64.EFI description GRUB
这里需要用到linux引导程序的标识符“{bb1fd5e4-1b17-11ed-bfc3-806e6f6e6963}”如果需要一次性启动,使用
bcdedit /set {fwbootmgr} bootsequence {bb1fd5e4-1b17-11ed-bfc3-806e6f6e6963}
永久生效
bcdedit /set {fwbootmgr} default {bb1fd5e4-1b17-11ed-bfc3-806e6f6e6963}
如果是powershell环境,务必将含有“{}”的段使用双引号引起来,否则会报错
参考来源:
https://man.archlinux.org/man/efibootmgr.8
https://blog.mussard.org.uk/2014/05/30/ … m-windows/
https://github.com/chengxuncc/booToLinux
https://learn.microsoft.com/zh-cn/windo … -reference
https://serverfault.com/questions/71433 … om-windows
efibootmgr -n 是一次性命令,但Windows Boot Manager有将自己移到最前的特性。所以我就偷了个懒,直接引导一次,让Windows自己去改顺序去了。不然脚本要复杂不少。
离线
我是在efi分区安装了refind来引导多系统的,重启就可以进入refind选择对应系统。
掌机、平板等等,只能通过触摸屏、音量键或摇杆选择系统。总不能每次外接个HUB再接USB键盘吧。
离线