我有一个双启动设置:
- Ubuntu 16.04 LTS
- 视窗
目前,当我想reboot
从 Ubuntu 切换到 Windows 时,我会使用grub-reboot
适当的数字作为参数。这很有效。
但是有时 Windows 需要重新启动才能安装或更新某个程序,而我必须手动选择正确的 grub 启动菜单项。有没有类似的方法(从 Windows UI)来告诉 grub 要启动哪个条目?
我认为该grub-reboot
命令将参数传递给一个文件,该文件随后由 grub 读取reboot
。
编辑(关于我选择的答案): 我目前正在研究安装包含 /boot 的 ext4 驱动器并编写编辑脚本。这可能需要相当长一段时间,因为我是在每周 40 小时非技术工作之余利用空闲时间做这件事的。^^
答案1
最简单的方法是使用 Grub
从 Windows进行控制很麻烦grub
。需要第三方应用程序才能从 Windows 访问 Ubuntu,并且需要一些黑客技术。但是从这篇文章的开头部分来看:如何更改双启动发行版的顺序,您可以设置grub
为自动重新启动到最后一个菜单选项。因此,当您首次使用 Windows 启动时,它会在凌晨 2 点唤醒以运行更新,grub
将重新加载 Windows,以便它能够顺利完成更新。
当您手动重启并从所有下次重启中选择 Ubuntu 时,将自动加载 Ubuntu。如果您当前内核中有错误并且想要自动重启到您选择的旧内核版本,grub
此功能同样有效。grub
如何让 Grub 重复上次启动选择
这相当简单。使用sudo
权限编辑/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 默认设置重新启动进入 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
}
~/.bashrc
使用新功能保存文件reboot-to-windows
。- 关闭当前终端会话。
- 打开一个新的终端会话以
~/.bashrc
加载更改。 - 您可以键入
: ~/.bashrc
以将其重新加载到现有的终端会话中,但是有些人建议不要这样做。
要从命令行重新启动 Windows,请使用:
reboot-to-windows
如果 Windows 在您不注意的时候自动重启,则 Windows 会重新启动。这允许 Windows 自动更新在 Windows 有时使用的多次重启周期内正常处理。
答案2
您可以复制该grub-reboot
操作。这只是一个最终调用的脚本:
grub-editenv /boot/grub/grubenv set next_entry="Windows"
你的 grub 菜单项的名称在哪里Windows
?可能不是
我运行了它。它所做的就是插入next_entry=Windows
到/boot/grub/grubenv
。在第 2 行。因此,如果它只是文件系统上的一个文件,您可以在 Windows 中执行完全相同的操作。这是需要解决的 Windows 问题,但以下是高层概述:
安装启动所在的磁盘。这可能是最难的部分,因为这可能是 ext4。这可能会有帮助,但您可能需要在 Windows 上运行 Linux 来编辑它,这并非不可想象。
正如 muru 指出的,事情没必要这么难。您可以移动
/boot
到其自己的 FAT32 分区. 这使得在 Windows 中挂载变得非常简单。next_entry=Windows
在文件中,在注释之后、哈希值之前插入(或其他内容)。- 卸载。
- 重启。
编写脚本在 Windows 中远远超出了我的舒适区,也不是我们在这里真正要做的事情。但这应该是你需要做的全部。
答案3
grub-set-default
应该与 grub-reboot 执行相同的操作,但使设置永久生效。正如您所问的那样,这不完全是从 Windows UI 执行的,但也许对您有用。
答案4
您尚未说明 Windows 是哪个版本,或者您是否使用 UEFI。
如果您使用的是正确的 UEFI 启动(而不是传统启动),则可以暂时启动到 Windows UEFI 启动项。在 Linux 上,可以使用 等工具来完成此操作efibootmgr
。在 Windows 上,我个人使用简易UEFI。它对个人、GUI 使用免费,但对企业或 CLI 使用不免费。我不能保证它的安全性。它似乎也有点慢,但它似乎确实有效
在我自己的设置中,使用 Arch Linux(内核 EFI shim,没有 GRUB)和 Windows 10,在启动屏幕上选择“管理 EFI 启动选项”后,它看起来是这样的:
如果您使用 UEFI 启动,您应该会看到 Windows 的类似内容,以及 Ubuntu 的单个条目(用于加载 GRUB),以及一些其他特定于设备的选项。然后可以使用一次性启动选项来设置一次启动到 Windows 的 UEFI 启动条目,然后返回到 GRUB 启动。设置完成后,您可以正常重新启动。