您尚未登录。

#1 2022-10-31 23:55:30

huangsijun17
会员
注册时间: 2022-10-16
帖子: 22

有没有在Window下重启到Linux的脚本,以及Linux下重启到Windows的脚本?只考虑UEFI。

这段是我写的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)


倒腾HoloISO中。

Linux的发行版Arch-Linux的衍生发行版SteamOS的提取版steamos-jupiter-mesa等的衍生发行版HoloISO

离线

#2 2022-11-01 00:11:39

CicadaSeventeen
会员
注册时间: 2022-11-01
帖子: 1

Re: 有没有在Window下重启到Linux的脚本,以及Linux下重启到Windows的脚本?只考虑UEFI。

Linux to Windows肯定是有的,差不多就像你这样就可以。我想过去有人写过脚本,但是毕竟不同的LInux发行版(主要是grub的问题)会有一些区别,最好的方法可能还是自己造轮子了。

Windows to Linux我不清楚,Windows下也有程序能调整uefi启动项的顺序什么的,但是我不知道powershell的相关东西。我推测能写出来

PS:你可以用同方的uefi,这玩意有bug,如果Linux是第一启动项,你在windows待机后唤醒就变成linux啦

离线

#3 2022-11-01 09:51:47

huangsijun17
会员
注册时间: 2022-10-16
帖子: 22

Re: 有没有在Window下重启到Linux的脚本,以及Linux下重启到Windows的脚本?只考虑UEFI。

CicadaSeventeen 说:

Linux to Windows肯定是有的,差不多就像你这样就可以。我想过去有人写过脚本,但是毕竟不同的LInux发行版(主要是grub的问题)会有一些区别,最好的方法可能还是自己造轮子了。

Windows to Linux我不清楚,Windows下也有程序能调整uefi启动项的顺序什么的,但是我不知道powershell的相关东西。我推测能写出来

PS:你可以用同方的uefi,这玩意有bug,如果Linux是第一启动项,你在windows待机后唤醒就变成linux啦

我是给双系统掌机之类使用的。因为不接键盘的话,很难在掌机的UEFI引导菜单、grub引导菜单中选择系统。


倒腾HoloISO中。

Linux的发行版Arch-Linux的衍生发行版SteamOS的提取版steamos-jupiter-mesa等的衍生发行版HoloISO

离线

#4 2022-11-01 09:55:47

Watermelon.Rei
会员
注册时间: 2021-12-29
帖子: 114

Re: 有没有在Window下重启到Linux的脚本,以及Linux下重启到Windows的脚本?只考虑UEFI。

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)

离线

#5 2022-11-01 20:51:45

huangsijun17
会员
注册时间: 2022-10-16
帖子: 22

Re: 有没有在Window下重启到Linux的脚本,以及Linux下重启到Windows的脚本?只考虑UEFI。

Watermelon.Rei 说:

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

efibootmgr -n 是一次性命令,但Windows Boot Manager有将自己移到最前的特性。所以我就偷了个懒,直接引导一次,让Windows自己去改顺序去了。不然脚本要复杂不少。


倒腾HoloISO中。

Linux的发行版Arch-Linux的衍生发行版SteamOS的提取版steamos-jupiter-mesa等的衍生发行版HoloISO

离线

#6 2022-11-12 15:13:47

huangsijun17
会员
注册时间: 2022-10-16
帖子: 22

Re: 有没有在Window下重启到Linux的脚本,以及Linux下重启到Windows的脚本?只考虑UEFI。

kaminyan2323 说:

我是在efi分区安装了refind来引导多系统的,重启就可以进入refind选择对应系统。

掌机、平板等等,只能通过触摸屏、音量键或摇杆选择系统。总不能每次外接个HUB再接USB键盘吧。


倒腾HoloISO中。

Linux的发行版Arch-Linux的衍生发行版SteamOS的提取版steamos-jupiter-mesa等的衍生发行版HoloISO

离线

页脚