我的团队正在开发一个需要在多平台上工作的应用程序(linux [32/64],windows [32/64]),并涉及3D渲染(OpenGL)。 我们希望使用服务器和nvidia主板来自动化testing。
我们试图使用Xen Server(免费版)虚拟化所有我们想testing的平台,但是我们无法让虚拟服务器与nvidia主板配合使用。 然后我们用VirtualBox做了一些testing,但是3D加速对于我们的目的不是很好。
现在我们正考虑将所有操作系统安装在服务器上,作为一个多引导configuration。 有谁知道一些解决scheme,允许远程控制这台服务器,所以我们可以远程启动并重新启动,我们select的操作系统? 通过这种方式,在所有平台上自动执行testing过程将非常简单。
我也打开其他可能的解决scheme。
如果您使用grub作为引导加载程序,那么当您准备切换到下一个操作系统时,您可以将grub.conf更改为具有不同的默认引导分区,然后在重新启动时进入下一个操作系统。 在Windows上,你将不得不安装ext2驱动程序,但这并不难。
使用grub并修改grub.conf中的默认操作系统是@Dan所build议的,这不是一个坏的方法,但我会build议一个IP KVM ,它允许你远程控制你的机器 – 包括BIOS和bootloader操作 – 从字面上任何你有互联网连接。
如果走这条路,我build议设置一个长时间的自动启动延迟来补偿不可避免的networking延迟,或者甚至完全禁用自动启动,以便手动select要每次加载的操作系统。 它本身并不是“自动化”的,但它是控制远程系统引导的最终方式,并不要求你对任何底层操作系统进行任何修改。
除了Dan的build议(如果你使用GRUB,这可能是最好的select),我唯一能想到的用于“自动化”引导加载程序的方法是将串行控制台连接到单独的机器,并使用Expect或类似的东西进行交互引导装载程序。
引导加载程序的一般假设是(a)没有人会在附近,在这种情况下,应该启动“默认”操作系统,或者(b)有人将在控制台上select他们想要的操作系统。 它似乎不是一个受到自动化专家们很多关注的领域。
有了一台机器,这可能比它的价值更麻烦,但是如果您有多台需要启动各种configuration的开发机器,则可以考虑使用GRUB-PXE通过networking加载启动configuration。 这将允许您在一个位置更改要引导的值,而不依赖于正在引导的文件系统和可访问的文件系统。
在Windows上, iReboot将执行您所需的操作,让您select一个操作系统从login的环境中重新启动您的电脑(仅一次或重复)。 不过,您需要在由BOOTMGR / BCD控制的多重引导中configuration不同的操作系统,而不是GRUB / GRUB2。