如何在无头系统上通过grub选择操作系统?


3

我有一个双引导系统(Linux和Windows),我通常无头运行,并且默认情况下会引导到Linux(这是我主要使用的系统)。所有这些都可以正常工作,只是在某些情况下,我想启动Windows时,必须插入键盘并进行监视,才能在初始grub启动屏幕中选择Windows。我想知道是否有更简单的方法来做到这一点?我不介意是否必须先启动Linux,我只是希望能够偶尔重启Windows而不必插入任何外围设备。


无论您做什么,都需要一种在系统启动时向系统发送信号的方法。如果没有头,您有什么用?一个鼠标 ?几个用户可编程的按钮?串行控制台?仅网络访问?
b0fh

另外,您是否考虑过使用虚拟化而不是双重引导?
b0fh

@bofh:它只是一台普通PC,所以我有网络,USB,常用的板载外围设备等。我想知道是否可以通过某种方式在USB记忆棒上进行设置并从中引导系统被插入?
Paul R

@bofh:我不认为虚拟化将帮助(假设你的意思运行一个或两个操作系统的虚拟机作为),因为我需要运行的东西像剖析,它需要CPU的性能寄存器等直接访问工具
保罗- [R

1
这似乎更简单-您可以使USB具有比Windows高的启动优先级,并在那里安装linux
Journeyman Geek

Answers:


1

没有真正简单的方法来执行此操作,因为grub只能在启动时通过键盘控制,并且没有远程控制功能。

我想到了两种可能性来解决这个问题。第一个是基于脚本的:在重新启动之前,编写一些简单的脚本来调整grub.conf / menu.lst。请参阅grub手册的“配置”部分中的默认条目:

# By default, boot the first entry.
default 0

将此设置为要引导的条目。

此解决方案要求您在Windows上安装ext2 / ext3驱动程序,以从启动的Windows系统中更改crub.conf / menu.lst。

我正在考虑的第二个解决方案可能是一些经过调整的PXE引导,其中pxe映像的引导菜单的配置将设置为相应的本地磁盘。

该链接提供了许多信息,包括“从第一个磁盘启动” 设置pxe启动

我从没有尝试过,但我认为这是可能的。

无论如何,这些解决方案在我看来似乎有些拙劣。也许其他人提出了更好的建议。


感谢所有建议-我将继续阅读更多内容。
Paul R

2
如果选择编辑menu.lst,则不一定非要Windows才能对其进行修改:您还可以设置grub 1,使其先启动Windows,再启动Linux。grub手册中的“仅引导一次”下有一个示例。
吉尔斯

@吉尔斯:谢谢-我会继续读下去-总是欢迎不必在Windows环境中进行任何重大更改。
Paul R

2

我只是在研究类似内容,因此http://www.gnu.org/software/grub/manual/legacy/Booting-once_002donly.html看起来很有希望:

13.1.7后备

如果设置了此变量,则它将标识在默认菜单项无法启动时应选择的菜单项...

...但是该功能似乎已在Grub2中终止...在我的情况下,http: //www.gnu.org/software/grub/manual/grub.html#fallback 可以解决问题,但可能不会在你的:

4.3.1仅引导一次

您可以教GRUB仅在下次引导时引导条目。假设您有一个旧内核old_kernel和一个新内核new_kernel。您知道old_kernel可以正确引导系统,并且您想测试new_kernel。...


呵呵

1
请在参考链接中引用答案的关键部分,因为如果链接页面发生更改,答案可能会失效。
DavidPostill

1

我想在重启之前先编辑grub以使Windows首先运行-我需要进行一些规划,但是我想您可能会有一对备用配置文件,在启动前您将它们重命名为正确的配置文件


谢谢-我对grub不太了解-您能告诉我我需要编辑哪个文件吗?
Paul R
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.