我可以从 Windows 更改 grub 默认选择吗?

我可以从 Windows 更改 grub 默认选择吗?

这是一个奇怪的问题。我读过如何设置 GRUB 的默认操作系统选择(如何设置 grub 超时和 grub 默认启动项?) 我确实这样做了,但由于我经常在家工作,所以我想通过 VNC 自动从 Windows 7 切换到 Ubuntu 13,并从 Ubuntu 13 自动切换到 Windows 7。

我可以手动编辑该文件/etc/default/grub,但无法sudo update-grub在 Windows 环境中进行该操作。

我的问题是:有没有办法在 Windows 环境中执行此操作,或者使用变通方法来更改默认引导加载程序选择并远程启动到另一个操作系统?

答案1

默认菜单选项存储在(或可以存储在)GRUB“环境块”中,这是一个默认位于 /boot/grub/grubenv 中的 1024 字节小文件。您可以轻松地将其放在 Windows 和 Linux 均可访问的驱动器上(例如 FAT 或 NTFS 分区),并进行相应的修改。我已经使用一个小脚本为我妈妈的笔记本电脑单向(Linux -> Windows)完成了此操作:

#! /bin/bash
sudo /usr/sbin/grub-set-default 0
nohup bash -c "sleep 15s && sudo /sbin/reboot" &
gnome-session-quit --no-prompt --logout

还将以下内容添加到 /etc/sudoers 以使必要的命令无需提示即可执行:

%adm ALL=(root) NOPASSWD: /usr/sbin/grub-set-default, /sbin/reboot

或者,看起来有人可能已经完成了繁重的工作:

http://de.mcbf.net/david/grubchoosedefault/

虽然我还没有尝试过...

答案2

大约 20 年前,我的 OS/2 就是这样的。我对启动过程了解得更多一些,但我不知道它是如何做到的。它可能在 PBR(分区启动扇区)中安装了启动加载程序,只是移动了启动标志。或者它可能只是用不同的版本对启动扇区/MBR 进行了 dd。这些现在可能有效。

但是将 grub2 安装到单独的 NTFS grub2 启动分区可能更简单。然后,您可以直接从 Windows 和 Linux 编辑 grub.cfg。虽然您可以编辑 grub.cfg,但我可能只制作 3 个 grub 配置,即工作、Windows 启动和 Linux 启动。并且只需使用脚本将 Windows 启动或 Linux 启动复制到工作副本即可。然后无需更新 grub。

在我最初创建为 Windows 7 修复闪存驱动器的闪存驱动器之一上,我过度安装了 grub2,因此我可以从同一闪存驱动器通过 loopmount 直接启动其他 Linux 修复 ISO。在 Windows 中安装 grub 的唯一问题是确保您不会创建 /Boot 和 /boot,否则您会遇到重大问题。我在一个 /Boot 文件夹中有 /BCD 和 /grub。因此,您甚至可能不必有一个单独的 grub 专用分区,但必须小心不要损坏 Windows。

相关内容