是否可以同时双启动两个操作系统?


36

是否可以同时双启动两个操作系统?

例如:我目前正在双重引导Ubuntu 11.04和Windows7。Ubuntu在单个500gb HDD上运行,Windows 7在1TB RAID 1镜像上运行。要在两个操作系统之间切换,需要重新启动。是否可以在两个操作系统之间切换而无需重新启动?

注意:我完全了解VirtualBox和VMWare Player的功能-我两者都使用。请不要回答“使用虚拟化!”

编辑:如果这不可能,您可以分享为什么它不可能吗?对我来说,似乎没有那么困难。请记住,我的视野不受知识的束缚!


在具有分区内存的大型机上……
Fiasco Labs

Answers:


36

大多数(如果不是全部)主流操作系统都希望对主机的低级功能(例如:硬件,端口等)具有独占访问权限,并且不具有与其他任何设备共享的概念-它将无法正常工作-因此,要尝试在同一系统上同时运行两个操作系统,就需要某种形式的透明仲裁程序,以将操作系统彼此屏蔽,换句话说,就是虚拟化应用程序。


虚拟化应用似乎已成为共识。您是否会推荐任何免费或开源的选项?
詹姆斯·希尔

2
这实际上取决于您要尝试执行的操作,因为某些VM应用程序在某些方面比其他应用程序要好,但是通常:选择您的主要默认操作系统(即:引导至Ubuntu或Windows),然后安装Virtualbox,VM Player(我的两个)收藏夹)或您最喜欢的VM应用程序,然后在该环境中将其他操作系统安装为虚拟机。
Linker3000 2011年

您可以基于colinux创建一个ubuntu发行版。colinux在Windows上将linux内核作为进程运行,因此它并不是真正的虚拟化。从某种意义上说,最初的问题是可能的,但尚未完成。
杰伊·雷恩

但是,有些已移植到与实际硬件相反的操作系统上运行-UserModeLinux是完美的反例。colinux(如@Jay所述)是将操作系统“移植”到另一个操作系统的另一个示例。
12:12 new123456

15

您似乎正在解雇Hyper-V和Xen(所谓的“裸机”虚拟机管理程序),即使它们最接近您的要求。是的,它是虚拟化,但与VirtualBox的工作方式不同。

想象一下像VirtualBox这样的东西是它自己的操作系统,因此您可以安装一个很小的VirtualBox OS,然后在VirtualBox OS之上同时运行Windows和Ubuntu作为虚拟机。好吧,这基本上就是Hyper-V或Xen所做的。它只是硬件和来宾操作系统之间的一个薄虚拟化层,与直接将它们与现有硬件和现有操作系统并排运行就近了。

不需要任何一个单独的服务器,只需将虚拟机监控程序安装为该机器上的第一个操作系统,然后将Windows和Ubuntu作为虚拟机添加到虚拟机监控程序下即可。

Xen和Hyper-V都将作为来宾操作系统运行Ubuntu和Windows,尽管它可能不受支持。Xen更像是Linuxy,Hyper-V是MS产品,因此我建议根据您更喜欢的操作系统选择虚拟机监控程序。


8

您能做的最接近的事情就是利用休眠。不幸的是,操作系统彼此之间的差异是如此之大,以至于两个操作系统都无法在不实施虚拟化的情况下同时运行。老实说,虚拟化不再像您想的那样糟糕……尤其是当您使用支持“ VT”扩展的虚拟化平台时。来宾操作系统具有直接与硬件通信的能力,并且具有更好的内存映射等。实际上,我已经设置了直接安装在SSD上的来宾操作系统...它的运行速度比主机操作系统快。


我对虚拟化没有任何问题,我在拥有的每台计算机上都使用VirtualBox。您能解释一下您提到的VT扩展吗?仅供参考-这是家用的,因此我正在寻找一种便宜的方式(阅读:免费/开源)。
詹姆斯·希尔

VT =硬件虚拟化。基本上,CPU具有一些其他扩展(有时需要在BIOS中启用),旨在促进并行运行OS。VirtualBox可以做到这一点...但是,如果您坚持使用软件虚拟化,则效果会不佳。有时称为VT-x,VT,AMD-V,硬件虚拟化或许多其他名称。
TheCompWiz 2011年

VMWare是否具有您所说的“ VT”扩展生物?如果是这样,是否需要显式启用它?
2014年

VT是处理器功能。这是一个天气问题,您的CPU是否内置了位...以及主板是否支持它。(可以在许多BIOS中禁用处理器扩展)通常默认情况下启用它...但是可以禁用它。我的HP笔记本电脑已将其关闭...但是我的超微型服务器已将其打开。
TheCompWiz 2014年

7

这是一个简单的简短原因,答案为“否”:哪种软件可以控制您的硬件?

如果OS 1做到了,那么您就没有在运行OS2。如果OS 2做到了,那么您就没有在运行OS1。如果他们都这样做了,那么其他一些软件将不得不调解它们对物理硬件的共享访问。 ,那就是虚拟化(您已排除在外)。


8
除非OS 1是OS / 2。然后将OS / 2作为OS 1运行。:D
Kenneth Cochran

简直就是扭曲……记得一家公司创造的一种精巧的操作系统,它无法从湿纸袋中推销产品。
Fiasco Labs 2013年

2

我想到的是:
-内存管理(ram和缓存)
-进程管理(正在运行的进程线程)

因此,您可能需要在中间处理两个操作系统之间的内存使用和进程的工作。

那将是另一个操作系统/固件。
因此,如果有人实现了它,操作系统将实现它,则最终可能会同时运行3个而不是2个Os

编辑-
添加linker3000编写的内容:端口管理

这个“中间人”从本质上将成为您的主机操作系统,以及其他虚拟化的操作系统,使您回到已经知道的解决方案


2

我知道的所有操作系统都要求对计算机硬件进行完全控制。

从理论上讲这是可能的。两种操作系统都需要设计为:

  • 作为主机(总硬件控制)和从机(从主操作系统请求资源)运行
  • 根据其他操作系统的要求放弃对硬件的控制

如果同时满足这两个条件,则可以在没有任何虚拟化的情况下同时运行两个操作系统。这类似于使用协作多任务的两个OS 。当然,由于编写不当的应用程序拒绝让出控制权的问题,协作式多任务处理几乎被放弃了。也许两个正确编写的OS会很好玩。那又有什么诱因呢?


1

我来谈谈“为什么”部分。

现代OS的原因之一是允许多个程序(进程)在系统上同时运行。如果要安全地执行此操作,则需要进行以下操作:

  • 您可能(除非有特殊需要)不想以固定的方式分配系统中的RAM-例如,每个进程256MB固定-将您限制为2GB系统中的8个进程。您希望每个进程都可以“询问”内存,并在完成后将其返回。

  • 您也不想以固定的方式在设备之间分配I / O设备。通常,您希望某些或所有硬件(例如内存)成为共享资源,或者至少仅在特定时间临时专有进程专用。这就要求所有进程不要试图自己做I / O,而要“经历”一些事情来安排和协调I / O。调度很重要,因为大多数I / O都比CPU慢得多,因此,即使在单核系统上,CPU在等待I / O时,也可以让CPU为其他进程工作。

要实现上述权利,需要利用多种CPU硬件功能。其中之一是MMU,另一种是保护模式。两个操作系统可以协同共享这些硬件功能以运行两个或多个OS吗?

可以,但是硬件中没有什么可以阻止一个操作系统踩踏其他操作系统内存的。如果CPU处于内核模式(它只有一个内核模式),则任何代码都可以执行任何操作。一个操作系统的代码可以100%地运行另一操作系统的代码或数据。我们知道,操作系统过去曾存在漏洞,将来还会更多。因此,这对安全性非常不利。

现在,如果您可以在上面放置另一个“层”并为多个操作系统提供所需的硬件支持,那会不会很酷?这正是硬件虚拟化功能所要做的,它们在多个运行的OS之间设置了硬件障碍,并且为它们提供了一个顶级的“接口”,称为虚拟机管理程序。您只能有一个管理程序。是的,在两种操作系统下运行的进程都必须经过三层才能进行I / O(进程-本地内核-虚拟机监控程序)


0

我知道您说过不进行虚拟化,但是MS Hyper V服务器之类的产品可能会满足您的需求


Hyper-V将需要第二台计算机充当服务器。如果我有第二台功能强大的计算机,则将其设置在另一台计算机旁边,并使用不同的OS来启动它们:)。而且,据我了解,设置费用将不少于$ 2k。
詹姆斯·希尔

我认为您可以在一台计算机上运行
HyperV。– Akash

2
hyper-v中的V用于虚拟化。如果没有虚拟化的限制,那么hyper-v不是解决方案。
杰伊·雷恩

0

除了虚拟化,别无他法。我发现很难获得明确的信息,哪些来宾系统将适用于不同的管理程序。http://en.wikipedia.org/wiki/Hypervisor应该是获得一些信息的一个好的开始,Xen可能值得一试,尽管我会等待有人明确确认或拒绝它是否支持Windows 7 guest虚拟机。

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.