基本原理
我主要使用 Fedora 40 的 KDE Spin,但次要使用 Windows 11 Pro。要将更新应用于 Windows,我必须重新启动 PC。但是,由于 Fedora 在 EFI 的 GUI 中设置为默认操作系统,这可能会导致 PC 启动到 Fedora,从而取消应用 Windows 更新(实际上)。为了解决这个问题,我指示 Windows 启动到 UEFI 的引导加载程序 GUI,以便我可以在下次启动时手动选择 Windows 引导加载程序。
但是,这很繁琐。我更愿意只是指示 Windows 修改下次启动的启动顺序,以便 Windows 自动重新启动到 Windows。
尝试
为了实现这一点,我设法在 Reddit 上找到了一条评论,它指示我调用以下内容。根据与父评论作者的后续沟通,我对其进行了修改:
#!/usr/bin/env -S pwsh
#Requires -RunAsAdministrator
sudo BCDEdit /BootSequence '{current}' && ` <# [Yes, `sudo` exists for Windows.](https://github.com/microsoft/sudo/blob/d67aaec73801d5d325bc5733a671bf04ce95888f/README.md#-sudo-for-windows) #>
shutdown /r /t 0 # [I'd like to use `Restart-Computer`.](https://superuser.com/revisions/1855231/2)
但是,尽管命令执行成功:
PS C:\Users\rokej> sudo BCDEdit /BootSequence '{current}' The operation completed successfully.
...无论如何我都会重新启动进入 Fedora。
我期望它能够发挥作用,因为:
bcdedit /enum
返回{current}
我当前启动项的输出,以及$?
$True
调用后响应
...可惜。
Linux 对应 (示例)
这可能很有用——我使用下面提到的命令从 Fedora 调用 Windows:
#!/usr/bin/env -S pwsh # Requirements # ------------ #```PS1 #Requires -PSEdition Core #Requires -Version 7.4.5 #``` Set-StrictMode -Version 'Latest' $ErrorActionPreference = 'Stop' # Script # ------ sudo efibootmgr --bootnext $(efibootmgr | grep -e 'Windows' | tail -n1 | cut -d' ' -f1 | cut -d't' -f2 | sed s/.$//) && Restart-Computer
我希望如果我将 Windows 设置为默认值,它可以适应重新初始化 Fedora,所以如果它的bcdedit
对应部分不能,我会感到惊讶。
您可以通过始终启动到 GRUB 来实现这一点,同时承认 Windows 启动管理器对于此类用例的不可靠性。
在 Linux 中,您可以设置 GRUB以始终启动最近选择的选项。在文件 /etc/default/grub 中设置以下内容:
然后运行以下命令提交更改:
现在,您将默认启动 Linux,并可以在 GRUB 菜单中选中 Windows,然后自动启动并循环更新。更新完成后,您将重新启动并再次选择 Linux。
您还可以通过在 Linux 上的终端中输入以下命令来选择 Windows 进行一次性使用:
将 n 替换为启动菜单中 Windows 的索引(第一个选项为零)。然后,在完成 Windows 操作后,重新启动将自动启动到 Linux。