有没有办法让grub从Windows自动重启到Windows?
我有双启动设置:
- Ubuntu 16.04 LTS
- 视窗
目前,当我想从Ubuntu reboot
到Windows时,我使用grub-reboot
并使用适当的数字作为参数。 这很好用。
但是,有时Windows需要重新启动,因此某个程序可以安装或更新,我手动必须选择正确的grub启动菜单项。 是否有类似的方式(从Windows UI)告诉grub引导哪个条目?
我想grub-reboot
命令将参数传递给一个文件,该文件在reboot
由grub读取。
编辑(关于我选择的答案):我正在考虑安装包含/ boot和脚本编辑的ext4驱动器。 这可能需要一段时间,因为我在我的40小时/周非技术工作旁边的空闲时间这样做。 ^^
您可以复制grub-reboot
function。 它只是一个最终调用的脚本:
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-windows
function保存~/.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引导。 设置完成后,您将正常重启。