有没有办法让grub从Windows自动重启到Windows?

我有双启动设置:

  1. Ubuntu 16.04 LTS
  2. 视窗

目前,当我想从Ubuntu reboot到Windows时,我使用grub-reboot并使用适当的数字作为参数。 这很好用。

但是,有时Windows需要重新启动,因此某个程序可以安装或更新,我手动必须选择正确的grub启动菜单项。 是否有类似的方式(从Windows UI)告诉grub引导哪个条目?

我想grub-reboot命令将参数传递给一个文件,该文件在reboot由grub读取。

编辑(关于我选择的答案):我正在考虑安装包含/ boot和脚本编辑的ext4驱动器。 这可能需要一段时间,因为我在我的40小时/周非技术工作旁边的空闲时间这样做。 ^^

您可以复制grub-rebootfunction。 它只是一个最终调用的脚本:

 grub-editenv /boot/grub/grubenv set next_entry="Windows" 

Windows是grub菜单项的名称。 可能不是那样

我跑了。 所有这一切都将next_entry=Windows插入/boot/grub/grubenv 。 在第2行。因此,如果它只是一个文件,在文件系统上, 您可以在Windows中执行完全相同的操作 。 这是一个需要解决的Windows问题,但这里是高级概述:

  • 将磁盘挂载到引导所在的位置。 这可能是最难的,因为这可能是ext4。 这可能有所帮助,但是您可能需要运行Windows的Linux来编辑它并不是一件令人难以置信的事情。

    正如穆鲁指出的那样,它不一定非常困难。 您可以移动/boot到自己的FAT32分区 。 这使得在Windows中安装变得微不足道。

  • 在散列之前,在注释之后将next_entry=Windows (或其他)插入到文件中。

  • 卸载。
  • 重启。

在Windows中编写脚本远远超出了我的舒适区域,而不是我们在这里做的事情。 但这应该是你需要做的。

最简单的方法是使用Grub

从Windows控制grub是麻烦的。 需要从Windows访问Ubuntu的第三方应用程序和一些黑客攻击。 但是从这篇文章的上半部分: 如何更改我的双启动发行版的顺序 ,你可以设置grub自动重启到最后一个菜单选项。 因此,当您最初使用Windows启动,并在凌晨2点唤醒以运行更新时, grub将重新加载Windows,以便它可以优雅地完成更新。

当您手动重新启动并从grub选择Ubuntu时,所有下次重新启动都会自动加载Ubuntu。 如果您在当前内核中存在错误并希望grub自动重新启动到您选择的较旧内核版本,则此function同样有效。

如何让Grub重复上次启动选择

这是相当直接的。 使用sudo powers编辑/etc/default/grub并更改以下内容:

 #GRUB_DEFAULT=0 # Rather than option #1, we'll always default to last boot choice. GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true 

您要评论的第一行和右下方插入接下来的两行。

保存文件并输入终端:

 sudo update-grub 

Ubuntu命令行重启进入Windows

目前你使用这样的东西:

 sudo grub-reboot x # Where x is Windows zero-based grub menu number sudo reboot now 

从这个修改后的Stack Exchange 答案中,您可以使用grub default重启到Windows。 将此代码复制到~/.bashrc文件中:

 function reboot-to-windows { WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2` sudo grub-set-default "$WINDOWS_TITLE" sudo reboot } 
  • 使用新的reboot-to-windowsfunction保存~/.bashrc文件。
  • 关闭当前的终端会话。
  • 为要更改的~/.bashrc打开一个新的终端会话。
  • 您可以键入: ~/.bashrc将其重新加载到现有的终端会话中,但有些人建议不要这样做。

要从命令行重新启动到Windows,请使用:

 reboot-to-windows 

如果Windows在您不查看时自动重新启动,则会重新启动Windows。 这允许Windows自动更新在Windows有时使用的多次重启循环中正常处理。

grub-set-default应该与grub-reboot相同,但要使设置永久化。 这不是完全来自Windows UI,正如您所问,但它可能适合您。

您还没有说过哪个版本的Windows或者您是否使用UEFI。

如果您正在使用正确的UEFI引导(而不是旧版引导),则可以临时引导至Windows UEFI引导条目。 在Linux上,这可以使用像efibootmgr这样的工具来完成。 在Windows上,我个人使用EasyUEFI 。 它可以免费用于个人GUI,但不能用于企业或CLI。 我无法保证其安全。 它似乎有点慢,但似乎确实有效

在我自己的设置中,它使用Arch Linux(内核EFI垫片,没有GRUB)和Windows 10,在启动屏幕上选择“Manage EFI Boot Option”后,它就是这样的:

该图显示了一次性启动选项

如果您正在使用UEFI启动,您应该会看到类似于Windows的内容,以及Ubuntu(加载GRUB)的单个条目,以及一些其他特定于设备的选项。 然后,可以使用一次性引导选项设置为Windows的UEFI引导条目引导一次,然后在此之后返回GRUB引导。 设置完成后,您将正常重启。