É possível inicializar dois sistemas operacionais ao mesmo tempo?


36

É possível inicializar dois sistemas operacionais ao mesmo tempo?

Por exemplo : No momento, estou inicializando o Ubuntu 11.04 e o Windows 7. com dupla inicialização. O Ubuntu está sendo executado em um único disco rígido de 500 gb, o Windows 7 está sendo executado no espelho RAID 1 de 1 TB. Para alternar entre os dois sistemas operacionais, é necessário reiniciar. É possível alternar entre os dois sistemas operacionais sem reiniciar?

NOTA : Estou ciente dos recursos do VirtualBox e VMWare Player - eu uso os dois. Por favor, não responda "Use Virtualization!"

EDIT: Se isso não for possível, você pode compartilhar por que não é possível? Para mim, não parece que seria tão difícil. Tenha em mente que minha visão não está sobrecarregada pelo conhecimento!


Em um mainframe com memória particionada ...
Fiasco Labs

Respostas:


36

A maioria dos sistemas operacionais convencionais, se não todos, espera ter acesso exclusivo à funcionalidade de baixo nível do computador host (por exemplo: hardware, portas etc.) e não tem nenhum conceito de compartilhamento com mais nada - simplesmente não funciona - portanto, tentar executar dois sistemas operacionais simultaneamente no mesmo sistema requer alguma forma de árbitro transparente para proteger os sistemas operacionais um do outro - em outras palavras, um aplicativo de virtualização.


Aplicativo de virtualização parece ser o consenso. Existem opções gratuitas ou de código aberto que você recomendaria?
James Hill

2
Realmente depende do que você está tentando fazer, já que alguns aplicativos de VM são melhores em algumas coisas do que outros, mas em geral: Escolha seu sistema operacional principal principal (por exemplo: inicialize no Ubuntu ou Windows) e instale o Virtualbox, VM Player (meus dois favorito) ou seu aplicativo VM favorito e instale o outro sistema operacional como uma máquina virtual nesse ambiente.
Linker3000

você pode criar uma distribuição do ubuntu baseada no colinux. O colinux executa o kernel do linux como um processo no Windows, portanto não é realmente virtualização. de certo modo, o que a pergunta original é possível, ainda não foi feita.
Jay R. Wren

No entanto, alguns foram portados para rodar em sistemas operacionais, em oposição ao hardware real - o UserModeLinux é o contra-exemplo perfeito. O colinux (como mencionado por @Jay) é outro exemplo de um sistema operacional sendo "portado" para outro.
precisa saber é o seguinte

15

Você parece dispensar o Hyper-V e o Xen (os chamados hipervisores "bare-metal"), mesmo que eles estejam mais próximos do que você está pedindo. Sim, é virtualização, mas não da mesma maneira que o VirtualBox funciona.

Imagine que algo como o VirtualBox fosse seu próprio sistema operacional, para que você pudesse instalar um minúsculo sistema operacional VirtualBox e, em seguida, executar o Windows e o Ubuntu lado a lado como máquinas virtuais sobre o sistema operacional VirtualBox. Bem, isso é essencialmente o que o Hyper-V ou o Xen fazem. É apenas uma fina camada de virtualização entre o hardware e os sistemas operacionais convidados e é o mais próximo possível de executá-los diretamente lado a lado com o hardware e os sistemas operacionais existentes.

Você não precisa de um servidor separado para nenhum deles, basta instalar o hipervisor como se fosse o primeiro sistema operacional na máquina e, em seguida, adicionar o Windows e o Ubuntu como máquinas virtuais no hipervisor.

O Xen e o Hyper-V executam o Ubuntu e o Windows como sistemas operacionais convidados, embora possa não ser uma configuração suportada. O Xen é mais Linux e o Hyper-V é um produto MS, então eu sugiro escolher o hipervisor com base no sistema operacional com o qual você se sentir mais confortável.


8

A coisa mais próxima que você pode fazer ... é usar a hibernação. Infelizmente, os sistemas operacionais são estranhos o suficiente um para o outro e não há como os dois sistemas operacionais estarem executando ao mesmo tempo sem implementar a virtualização. Honestamente, a virtualização não é tão ruim quanto você pensa ... especialmente quando você está usando uma plataforma de virtualização que suporta as extensões "VT". Os sistemas operacionais convidados têm a capacidade de se comunicar diretamente com o hardware e têm um mapeamento de memória muito melhor e tal. Na verdade, configurei um sistema operacional convidado instalado diretamente em um SSD ... e ele foi executado mais rapidamente que o sistema operacional host.


Não tenho nenhum problema com a virtualização, uso o VirtualBox em todos os computadores que possuo. Você pode explicar as extensões VT que você mencionou um pouco mais? FYI - Isso é para uso doméstico, então estou procurando uma maneira barata (leia-se: código aberto / gratuito) de fazer isso.
James Hill

VT = Virtualização de Hardware. Basicamente, a CPU possui algumas extensões adicionais (às vezes requer ativação no BIOS) projetadas para facilitar a execução de SOs em paralelo. O VirtualBox pode fazer isso ... mas se você estiver preso à virtualização de software, ele não terá um bom desempenho. Às vezes chamado de VT-x, VT, AMD-V, virtualização de hardware ou uma infinidade de nomes adicionais.
TheCompWiz

O VMWare tem essa criatura de extensões "VT" de que você fala? Nesse caso, ele precisa ser ativado explicitamente?
MasterMastic

VT é um recurso de processador. É uma questão de tempo ou não, sua CPU possui os bits integrados ou não ... e também se a placa-mãe tem suporte para isso. (as extensões do processador podem ser desabilitadas em muitos BIOS). Normalmente, ele é habilitado por padrão ... mas pode ser desabilitado. Meu laptop HP desligou ... mas meus servidores supermicro o ligaram.
TheCompWiz

7

Aqui está o simples e curto motivo pelo qual a resposta é 'não': que software controlaria seu hardware?

Se o OS 1 faz isso, você não está executando o OS 2. Se o OS 2 faz isso, então você não está executando o OS 1. Se ambos o fizerem, algum outro software teria que mediar o acesso compartilhado ao hardware físico , e isso é virtualização (que você descartou).


8
A menos que o OS 1 seja o OS / 2. Em seguida, seu sistema operacional rodando / 2 como OS 1.: D
Kenneth Cochran

Isso é simplesmente Warped ... Lembrando-se de um sistema operacional organizado por uma empresa que não conseguia sair de um saco de papel molhado.
Fiasco Labs

2

O que vem à mente são:
- Gerenciamento de memória (ram e cache)
- Gerenciamento de processos (threads de processo em execução)

Portanto, você provavelmente precisaria de um homem no meio do malabarismo com o uso e os processos de memória entre os dois sistemas operacionais.

Isso seria outro sistema operacional / firmware.
Portanto, se alguém implementou o SO, você pode acabar com 3 em vez de 2 OSs executando simultaneamente

EDIT-
Adicionando o que o linker3000 escreveu: gerenciamento de portas

Esse 'homem do meio' basicamente se tornará seu sistema operacional host e os outros sistemas operacionais virtualizados, levando você de volta ao que você já sabia que era uma solução


2

Todos os SOs que conheço exigem controle total do hardware do computador.

É teoricamente possível embora. Ambos os sistemas operacionais precisariam ser projetados para:

  • Executar como mestre (controle total de hardware) e como escravo (solicita recursos do sistema operacional mestre)
  • Abandone o controle do hardware mediante solicitação de outro SO

Se essas duas condições forem atendidas, seria possível executar dois sistemas operacionais simultaneamente, sem nenhum tipo de virtualização. Seria semelhante a dois sistemas operacionais usando multitarefa cooperativa . Obviamente, a multitarefa cooperativa foi praticamente abandonada devido ao problema de aplicativos mal escritos que se recusam a ceder o controle. Talvez dois SOs escritos corretamente tenham um bom desempenho. Então, novamente, qual seria o incentivo?


1

Deixe-me abordar a parte "por que".

Uma das razões para um sistema operacional moderno é permitir que vários programas (processos) sejam executados ao mesmo tempo em um sistema. Se você deseja fazer isso com segurança, o seguinte precisa acontecer:

  • Você provavelmente (a menos que tenha necessidades especiais) não deseja dividir a RAM no sistema de maneira fixa - por exemplo, 256 MB corrigidos por processo - limita você a 8 processos em um sistema de 2 GB. Você deseja que cada processo possa "pedir" memória e devolvê-la quando terminar.

  • Você também não deseja dividir dispositivos de E / S de maneira fixa entre dispositivos. Normalmente, você deseja que parte ou todo o hardware, como a memória, seja um recurso compartilhado ou, pelo menos, apenas temporariamente exclusivo para processos específicos em horários específicos. Isso requer que todos os processos não tentem fazer E / S por conta própria, mas "repitam" algo para agendar e coordenar a E / S. O agendamento é importante, pois a maioria das E / S é muito mais lenta que a CPU, portanto, você pode fazer com que a CPU funcione para outros processos enquanto aguarda E / S, mesmo em um sistema de núcleo único.

Para fazer o que foi dito acima, é preciso tirar proveito de vários recursos de hardware da CPU. Um deles é o MMU, o outro é o modo protegido. Dois sistemas operacionais poderiam compartilhar esses recursos de hardware de forma cooperativa para executar dois ou mais sistemas operacionais?

Claro, mas não há nada no hardware capaz de impedir que um sistema operacional atinja toda a memória dos outros sistemas operacionais. Se a CPU estiver no modo kernel (ela possui apenas um modo kernel), qualquer código poderá fazer qualquer coisa. É 100% possível que o código de um sistema operacional execute o código ou os dados do outro sistema operacional. E sabemos que os sistemas operacionais tiveram vulnerabilidades no passado e terão mais no futuro. Portanto, é muito ruim para segurança.

Agora, não seria legal se você pudesse colocar outra "camada" sobre isso e ter o suporte de hardware necessário para vários sistemas operacionais? É exatamente isso que os recursos de virtualização de hardware fazem, eles colocam uma barreira de hardware entre vários sistemas operacionais em execução e existe uma "interface" de nível superior chamada hypervisor. Você pode ter apenas um hypervisor. E sim, os processos em execução no sistema operacional devem passar por três camadas para executar a E / S (processo - kernel local - hypervisor)


0

Sei que você disse que não há virtualização, mas algo como o servidor MS Hyper V pode atender às suas necessidades


O Hyper-V exigiria uma segunda máquina para atuar como servidor. Se eu tivesse uma segunda máquina que fosse tão poderosa, eu a colocaria ao lado da minha outra torre e as inicializaria com sistemas operacionais diferentes :). Além disso, pelo que entendi, a instalação custaria nada menos que US $ 2k.
James Hill

Eu acho que você pode executar o Hyper V em uma única máquina ..
Akash

2
o V no hyper-v é para virtualização. se a restrição não for virtualização, o hyper-v não será uma solução.
Jay R. Wren

0

Não há outra maneira além da virtualização. Acho difícil obter informações definitivas sobre quais sistemas convidados funcionarão para os diferentes hipervisores. http://en.wikipedia.org/wiki/Hypervisor Deve ser um bom começo para obter algumas informações e o Xen pode valer a pena tentar, embora eu esperasse que alguém confirmasse ou negasse definitivamente se ele suporta os convidados do Windows 7.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.