web-dev-qa-db-pt.com

É possível dual boot dois sistemas operacionais ao mesmo tempo?

É possível dual boot dois sistemas operacionais ao mesmo tempo?

Por exemplo: Estou atualmente reiniciando o Ubuntu 11.04 e o Windows 7. O Ubuntu está rodando em um único disco rígido de 500GB, o Windows 7 está rodando em um espelho de 1TB RAID 1. Para alternar entre os dois sistemas operacionais, uma reinicialização é necessária. É possível alternar entre os dois sistemas operacionais sem reinicializar?

NOTE: Estou totalmente ciente das capacidades do VirtualBox e do VMWare Player - eu uso ambos. Por favor, não responda "Use Virtualization!"

EDIT: Se isso não for possível, você pode compartilhar porque 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 de conhecimento!

35
James Hill

A maioria, se não todos, os sistemas operacionais tradicionais esperam ter acesso exclusivo à funcionalidade de baixo nível do computador Host (por exemplo: hardware, portas etc.) e não têm nenhum conceito de compartilhamento com qualquer outra coisa - simplesmente não funcionará - Portanto, para tentar executar dois sistemas operacionais simultaneamente no mesmo sistema, é necessária alguma forma de árbitro transparente para proteger os sistemas operacionais uns dos outros - em outras palavras, um aplicativo de virtualização.

36
Linker3000

Você parece estar descartando Hyper-V e Xen (chamados hipervisores "bare-metal"), embora eles estejam mais próximos do que você parece estar pedindo. Sim, é virtualização, mas não da mesma forma que o VirtualBox funciona.

Imagine algo como o VirtualBox era o seu próprio sistema operacional, então você poderia instalar um pequeno sistema operacional VirtualBox, e então rodar o Windows e o Ubuntu lado a lado como máquinas virtuais no topo do 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 perto possível de executá-los diretamente lado a lado com o hardware existente e os sistemas operacionais existentes.

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

Tanto o Xen quanto o Hyper-V rodarão o Ubuntu e o Windows como sistemas operacionais convidados, embora possa não ser uma configuração suportada. Xen é mais Linuxy e Hyper-V é um produto MS, então eu sugiro escolher o hipervisor baseado em qualquer sistema operacional que você esteja mais confortável.

14
Kevin

A coisa mais próxima que você pode fazer é usar a hibernação. Infelizmente, os sistemas operacionais são alienígenas o suficiente para que não haja maneira de os dois sistemas estarem sendo executados ao mesmo tempo sem a implementação da 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. Na verdade, eu configurei um sistema operacional convidado instalado diretamente em um SSD ... e ele rodou mais rápido que o sistema operacional host.

8
TheCompWiz

Aqui está a razão simples e curta, a resposta é "não": qual software controlaria seu hardware?

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

7
David Schwartz

As coisas que vêm à mente são:
- Gerenciamento de memória (ram e cache)
- Gerenciamento de processos (encadeamentos de processos em execução)

Então, você provavelmente precisaria de um homem no meio para manipular o uso de memória e os processos entre os dois sistemas operacionais.

Isso seria outro os/firmware.
Então, se alguém implementou ou implementou, você pode acabar com 3 em vez de 2 Oss rodando simultaneamente

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

Esse 'homem no meio' se tornará essencialmente o seu SO Host e os outros SOs virtualizados, levando você de volta ao que você já sabia que era uma solução

2
Shekhar

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

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

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

Se ambas as condições forem atendidas, seria possível executar dois sistemas operacionais simultaneamente sem qualquer tipo de virtualização. Seria semelhante a dois sistemas operacionais usando multitarefa cooperativa . É claro que a multitarefa cooperativa foi praticamente abandonada por causa da questão de aplicativos mal escritos que se recusam a ceder o controle. Talvez dois SOs escritos adequadamente fossem o Nice. Então, novamente, qual seria o incentivo?

2
Kenneth Cochran

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ê quiser fazer isso com segurança, o seguinte precisa acontecer:

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

  • Você também não deseja dividir os dispositivos de E/S de forma fixa entre os dispositivos. Normalmente, você deseja algum ou todo o hardware, como a memória para ser um recurso compartilhado ou, pelo menos, apenas temporariamente exclusivo para processos específicos em momentos específicos. Isso requer que todos os processos não tentem fazer a E/S sozinhos, mas "passar por" algo para programar e coordenar a E/S. O escalonamento é importante, pois a maioria das E/S é muito mais lenta que a CPU, então você pode fazer com que a CPU funcione para outros processos enquanto aguarda a E/S, mesmo em um sistema de núcleo único.

Para fazer o direito acima, é preciso tirar proveito de vários recursos de hardware da CPU. Uma delas é a MMU, a outra é o modo protegido. Poderiam dois sistemas operacionais compartilhar esses recursos de hardware cooperativamente para executar dois ou mais sistemas operacionais?

Claro, mas não há nada no hardware capaz de parar um sistema operacional de pisotear toda a memória do outro sistema operacional. Se a CPU estiver no modo kernel (só tem m modo kernel), qualquer código pode fazer qualquer coisa. É 100% possível para o código de um sistema operacional rodar sobre o código ou dados do outro sistema operacional. E sabemos que os sistemas operacionais tiveram vulnerabilidades no passado e terão mais no futuro. Então é muito ruim para segurança.

Agora, não seria legal se você pudesse colocar outra "camada" sobre isso e ter esse suporte de hardware necessário para vários sistemas operacionais? Isso é exatamente o que os recursos de virtualização de hardware fazem, eles colocam uma barreira de hardware entre vários sistemas operacionais em execução e há uma "interface" de nível superior para eles chamada de hypervisor. Você só pode ter um hipervisor. E sim, processos rodando sob qualquer SO devem passar por três camadas para fazer I/O (process - local kernel - hypervisor)

1
LawrenceC

Não há outro caminho 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 alguma informação e Xen pode valer a pena tentar, embora eu espere que alguém definitivamente confirme ou negue se suporta convidados do Windows 7.

0
Nornagest

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

0
Akash