O cenário:
- Sou desenvolvedor de software freelancer que desenvolve principalmente em Linux (Python, MySQL, MongoDB etc.)
- Meu computador de trabalho é um laptop Lenovo com um processador i7 e 8 GB de RAM. HD grande + SSD de 128 GB. O sistema operacional é o Ubuntu Linux
Posso obter alguns projetos .NET / C # em um futuro próximo, portanto, estou procurando algumas orientações sobre o seguinte:
- Devo optar por uma solução de inicialização dupla ou usar máquinas virtuais para coisas do Windows?
- Se eu for dual-boot: Qual é a sequência de instalação recomendada? Windows primeiro ou Linux primeiro? (Estou olhando para uma reinstalação completa do Ubuntu para obter o LTS mais recente de qualquer maneira, para que eu possa começar a instalar tudo novo)
- Se eu for VM: como o VMWare Workstation e o VirtualBox se comparam ao desempenho?
- A configuração dos meus sonhos provavelmente seria a seguinte:
- Bota dupla
- Mas se eu inicializar no Linux, posso inicializar a partição do Windows como uma máquina virtual. Isso é possível?
- E / ou: Se eu inicializar no Windows, posso inicializar a partição Linux como uma máquina virtual. Isso é possível?
linux
windows
boot
virtualization
visual-studio
codeape
fonte
fonte
Respostas:
Outros abordaram o restante da sua pergunta, mas vejo que eles deixaram esta parte não endereçada:
A resposta curta é sim.
A resposta longa é sim, mas com várias advertências e implicações.
Até janeiro deste ano (quando recebemos novas máquinas), meu computador de trabalho estava configurado para inicialização dupla ou para usar o Linux como host de uma VM do Windows 7 que acessava diretamente a partição do Windows. Eu nunca me incomodei em tentar usar o Windows como host para uma VM Linux em disco direto, mas também é possível. Meu computador usou BIOS / MBR herdado, não sei como fazer isso se você usar UEFI / GPT.
Eu escolhi o VirtualBox para fazer isso, mas, pelo que entendi, também deve ser possível com o VMWare.
O desempenho foi perfeitamente aceitável para meus propósitos; Dei ao Windows 1 núcleo da CPU, 2 GB de memória, 1 monitor e não lembro quanta memória de vídeo. A VM era capaz de reproduzir vídeo e trabalhar com meu aplicativo Java GUI e muitos sites de conteúdo rico.
Vou discutir a estranheza antes de entrar em detalhes:
A alternância entre o Windows 7 de inicialização nativa e o modo VM acionou o aviso do Windows de que minha cópia do Windows não era genuína. Dependendo da sua licença, a MS pode considerar isso uma violação de licença instalando em duas peças de hardware. Eu também precisava "reparar" minha instalação porque muitos dos drivers de nível inferior são diferentes para o hardware real e o "hardware" da VM.
Sempre que o Windows Update era executado (ou qualquer outra operação de E / S de disco grande), meu disco rígido era esmagado sob carga e tudo nas duas máquinas ficava lento. Mover cada sistema operacional para seu próprio disco rígido dedicado corrigiu esse problema muito bem; o uso de uma unidade de estado sólido também teria resolvido o problema.
Por alguma razão, o Ubuntu ocasionalmente não gostava de acordar após a suspensão (talvez 20% do tempo), o que equivalia a um desligamento intenso da minha VM do Windows. Como resultado, eu desligava a VM todas as noites antes de suspender o host.
Eu tive que tomar muito cuidado para nunca tentar montar a partição do Windows no Linux para evitar possível corrupção / perda de dados. Eu rapidamente adicionei uma regra do udev para evitar isso.
Tudo bem, se isso não parecer muito ruim, eis os detalhes: A referência mais útil que encontrei para fazer isso é este blog: http://www.rajatarya.com/website/taming-windows-virtualbox-vm . Aqui estão as etapas resumidas:
RTFM. Sério. Você usará comandos que podem corromper seu sistema de arquivos, se isso for feito errado.
Encontre as partições.
Altere as permissões para suas partições (como alternativa, você pode inicializar sua VM usando o sudo, mas todos os arquivos criados na unidade compartilhada host / convidado pertencerão à raiz).
Crie um MBR para que o convidado não tente usar o carregador de inicialização normal.
Use um comando interno do VirtualBox para criar a imagem vmdk a ser usada para a VM.
Crie a VM. Use o vmdk que você acabou de criar.
Inicialize e repare sua instalação.
Eu esperaria encontrar muitos dos mesmos problemas usando um host do Windows, mas o Linux provavelmente lidaria com o hardware diferente de maneira mais elegante. Realmente pode ser mais fácil usar uma partição compartilhada / home (e talvez / opt) e ter apenas partições raiz diferentes para as máquinas nativas e de convidado.
fonte
Geralmente, faço o oposto: meu sistema doméstico é uma máquina com Windows 7 e eu executo vários tipos de Linux como VMs. Sendo que o Linux pode funcionar muito bem com recursos limitados, isso funciona para mim, mesmo que eu tenha apenas 4 GB de RAM (lembre-se de que isso significa que eu executo uma única VM por vez e geralmente dou 1024 MB de RAM no máximo para manter a abundância para Windows).
Seus 8 GB de RAM devem permitir que você execute uma VM do Windows com bastante facilidade. Penso que a única grande questão aqui é o tipo de resultados que você deseja medir para o seu desenvolvimento. Eu hesitaria em confiar em qualquer métrica de desempenho / taxa de transferência para itens que você desenvolver em uma VM (a menos que seja implantada em um ambiente de VM semelhante com as mesmas especificações em todos os aspectos). Caso contrário, você deve estar pronto.
E para tocar nos comentários de outro segmento, naturalmente, se você souber que estará desenvolvendo aplicativos que requerem uma grande quantidade de recursos, a otimização para esse fim seria o caminho a seguir (portanto, nesses casos, a inicialização dupla certamente preferível a usar VMs).
Usei o VMWare e o VirtualBox e também não vi nenhum desempenho real. Não cheguei ao ponto de comparar as VMs internas, simplesmente não notei nenhum impacto negativo de nenhuma das plataformas (ainda use o VirtualBox em casa e o VMware no trabalho).
fonte
Depende de como você trabalha e como deseja que o sistema operacional se sinta .
Inicialização dupla significa reiniciar e inicializar, se você deseja alterar o sistema operacional, isso leva tempo . Como freelancer, você trabalha 8 horas seguidas com um projeto sem fazer "suas" coisas ("suas coisas" seriam você na inicialização do linux).
Se você trabalha 8 horas seguidas no Windows e passa o resto do dia no Linux, use a inicialização dupla. Se você trabalha 30min e depois quer fazer algo no Linux, mude para trabalhar novamente por 3 horas, depois para o linux novamente etc. Então eu escolheria VM.
Se não tiver certeza, faça as duas coisas. Inicialização dupla e quando no Windows, execute uma VM. Você verá uma clara diferença entre os dois e preferirá um sobre o outro.
Pessoalmente, uso apenas uma vm para testar novos discos Linux e, às vezes, um servidor falso quando devloping (poder estragar uma vm é inestimável e muito menos complicado do que fazê-lo no seu disco rígido real). A VM também fica atrasada e se sente menos responsiva, preciso que meu sistema operacional se sinta responsivo e suave, a VM não possui nessa área. Então eu prefiro dual boot.
Há também um problema no compartilhamento de arquivos. É mais trabalho compartilhar em uma inicialização dupla (imagine editar um arquivo na inicialização do Windows e depois inicializar no Linux, apenas para perceber que você perdeu uma linha e precisa reiniciar o Windows, o pesadelo!), Onde em uma VM você pode usar NFS ou samba para compartilhar arquivos entre os sistemas operacionais em tempo real, sem problemas.
Também sobre o suficiente ram como Aboba disse, lixo eu digo. Eu corro 4gb e uma VM no Windows8. Lembre-se de quais recursos o seu projeto precisa.
fonte
Ou como está isso? Você está interessado em .net / C #, então por que não usar o Mono no linux? Sua plataforma cruzada no sentido java é.
fonte
Pessoalmente, tive muitas experiências positivas tomando a metade do caminho, use um hipervisor como o Xen, para que você possa ter o Linux e o Windows executando sob um hipervisor de micro-kernel leve, nem sofrer um desempenho significativo e essa configuração é muito mais flexível , permitindo realocar facilmente recursos entre os dois a qualquer momento.
Isso quase coincide com a configuração dos seus sonhos mencionada, pois você pode inicializar ou desligar os dois sistemas operacionais de maneira independente a qualquer momento para realocar recursos para o outro e você não poderá perceber nenhum impacto no desempenho (na realidade, pode ser uma fração um pouco mais lenta em alguns casos, mas você não notará isso, a menos que esteja comparando especificamente para testar isso).
O único problema é que certos recursos exigem que sua CPU ofereça suporte à visualização, no entanto, todo i7 suporta (portanto), portanto isso não deve ser um problema para você.
EDITAR:
O Xen contém seu próprio microkernel, o Debian não é necessário para executá-lo, a única razão pela qual um sistema linux seria necessário para reconfigurar o Xen, pois o programa de configuração é um programa linux que você executa em um dos convidados (guest é o termo que o Xen usa para significar uma VM). Você pode ter apenas Linux, apenas Windows ou ambos em execução a qualquer momento, mas precisará executar o Linux para definir as configurações do Xen, por isso é aconselhável deixar um pequeno Linux em execução em segundo plano para fazer isso quando necessário.
O hardware pode ser tratado de várias maneiras, o Xen fornece um conjunto de dispositivos virtuais que permitem que um pedaço de hardware seja usado por vários convidados ao mesmo tempo, como placas de rede e placas de som, etc.
Para hardware que não funciona dessa maneira ou é necessário apenas por um convidado de cada vez que o xen possui dispositivos de passagem, isso significa que você pode selecionar e escolher a qualquer momento que o convidado tem acesso direto à peça de hardware e pode alterná-lo a qualquer momento Tempo. Isso pode ser feito para fornecer a um convidado específico o verdadeiro acesso à placa de vídeo, se você precisar renderizar acelerada em alta velocidade sem sobrecarga de virtualização .
Também é possível ter um convidado usando a placa de vídeo diretamente no modo de passagem, como explicado acima, mas ainda assim ver outros usando um protocolo local semelhante ao VNC que faz com que a tela de outros convidados apareça nas janelas (pense em caixa virtual ou área de trabalho remota) enquanto um tem controle direto da placa gráfica; ou, é claro, você pode simplesmente alternar entre as telas dos convidados, oferecendo um acesso direto por vez.
Ao contrário do que você pensa sobre a eficiência dessa configuração, é de fato uma das poucas maneiras de executar os dois sistemas operacionais ao mesmo tempo, mantendo um desempenho nativo eficaz em ambos; se você pesquisar no Google, verá que muitos tiveram sucesso usando essa configuração para executar uma máquina de jogos de alto desempenho ou outros sistemas exigentes.
fonte
De acordo com a minha experiência (eu também trabalho em aplicativos .net enquanto teste coisas legais e resolva problemas no Linux), a inicialização dupla será sua melhor aposta.
Como outros já apontaram, o uso de uma VM parece lento e sem resposta às vezes, o que pode ser uma dor.
Mais uma coisa que gostaria de salientar que leva o seu tempo, tente executar uma VM e verifique se você está confortável com ela.
Quanto à ordem
1) instale primeiro o Windows e depois o Linux (preferido)
2) Instale o Linux primeiro e depois o Windows (é necessário reinstalar o gerenciador de inicialização)
Mais uma coisa que gostaria de acrescentar é que, para pequenos projetos .Net, você pode usar até linux usando mono, portanto, não há necessidade de alternar entre janelas do linux.
fonte
Estou desenvolvendo muito o Linux / Visual Studio há mais de um ano, começando com o Visual Studio e migrando para o Linux ao longo do tempo (eu gosto do apt, zsh e vim!).
Comecei com o Windows hospedando o Ubuntu no VMWare Player, que funcionou razoavelmente bem, certamente ótimo se você estiver desenvolvendo principalmente o Visual Studio e apenas ocasionalmente precisar de algum pacote somente Linux ou qualquer outra coisa. Com o tempo, descobri que queria que meu trabalho estivesse no ambiente linux com mais frequência e a integração da VM tinha alguns pontos problemáticos, então ...
Como mudei para o desenvolvimento principalmente de linux (muitos AS3 no IntelliJ e alguns nós + python) com apenas uma necessidade ocasional de Windows (site ASP.NET), mudei isso para o Ubuntu que hospedava um VirtualBox (usando um disk2vhd -> .vdi do meu disco antigo do Windows). Depois de uma boa quantidade de mexericos, estou bastante satisfeito com isso, considerando a divisão de trabalho que geralmente tenho, mas se você estiver realizando uma quantidade séria de Visual Studio, provavelmente desejará que o Windows hospede o Linux, o VirtualBox ou o VMWare Player devem ficar bem.
Devo observar alguns pontos problemáticos: com os drivers de vídeo padrão Ubuntu 14.04 AMD, a aceleração 3D do VirtualBox torna o Visual Studio ~ 10-100x mais lento, portanto, desative a aceleração à custa de alguma lentidão; e você realmente quer rodar em um SSD)
fonte