Máquina dual-boot ou virtual para programadores Linux que faz algum desenvolvimento do Visual Studio?

26

O cenário:

  • Sou um desenvolvedor de software freelancer que desenvolve principalmente em Linux (Python, MySQL, MongoDB, etc.)
  • Meu computador de trabalho é um laptop Lenovo com processador i7 e 8 GB de RAM. SSD Big HD + 128 GB. O sistema operacional é o Ubuntu Linux

Eu posso ter 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 seqüência de instalação recomendada? Windows primeiro ou Linux primeiro? (Eu 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 for VM: Como o VMWare Workstation e o VirtualBox se comparam em termos de desempenho?
  • Minha configuração de sonho provavelmente seria a seguinte:
    • Inicialização 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 do Linux como uma máquina virtual. Isso é possível?
por codeape 25.06.2014 / 19:40

7 respostas

12

Outras pessoas cobriram o restante da sua pergunta, mas vejo que elas não foram atendidas:

But if I boot into Linux, I can boot the Windows partition as a virtual machine. Is this possible? And/or: If I boot into Windows, I can boot the Linux partition as a virtual machine. Is this possible?

A resposta curta é sim.

A resposta longa é sim, mas com várias restrições e implicações.

Até esse mês de janeiro (quando adquirimos novas máquinas), eu tinha meu computador de trabalho 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 preocupei em tentar usar o Windows como um host para uma VM Linux de disco direto, mas também é possível. Meu computador usava BIOS / MBR legado, não sei como fazer isso se você usa UEFI / GPT.

Eu escolhi o VirtualBox para fazê-lo, mas pelo que entendi também deve ser possível com o VMWare.

O desempenho foi perfeitamente aceitável para os meus propósitos; Eu dei o núcleo do CPU do Windows 1, 2GB de memória, 1 monitor e não me lembro de 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 avançado.

Vou discutir a estranheza antes de entrar em detalhes:

  • Alternando entre a inicialização nativa e o modo de VM O Windows 7 disparou o aviso do Windows de que minha cópia do Windows não era original. 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" a minha instalação porque muitos dos drivers de baixo nível 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 em ambas as máquinas ficava lento. Mover cada sistema operacional para seu próprio disco rígido corrigiu bem esse problema; usar uma unidade de estado sólido também resolveria o problema.

  • Por algum motivo, o Ubuntu ocasionalmente não gostava de acordar após a suspensão (talvez 20% do tempo), o que equivalia a um desligamento total da minha VM do Windows. Como resultado, desligaria a VM todas as noites antes de suspender o host.

  • Tive que ter muito cuidado para nunca tentar montar a partição do Windows no Linux para evitar possíveis danos / perda de dados. Eu rapidamente adicionei uma regra do udev para evitar isso.

Tudo bem, se isso não parece tão ruim, aqui estão os detalhes: A referência mais útil que encontrei para fazer isso é este blog: link . Aqui estão os passos resumidos:

  • RTFM. Mesmo. Você estará usando comandos que podem corromper seu sistema de arquivos, se feito errado.

  • Encontre as partições.

  • Altere as permissões para suas partições (alternativamente, você pode inicializar sua VM usando sudo, mas todos os arquivos criados na unidade compartilhada host / guest pertencerão a root).

  • Crie um MBR para que o convidado não tente usar o bootloader 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 Windows, mas o Linux provavelmente lidaria com o hardware diferente de maneira mais elegante. Pode ser mais fácil usar uma partição compartilhada / home (e talvez / opt) e ter partições-raiz diferentes para as máquinas nativas vs. guest.

    
por 26.06.2014 / 17:15
12

Eu faço o oposto em geral, que é o meu sistema de home é uma máquina com Windows 7 e eu executo vários tipos de Linux como VMs. Sendo como o Linux pode funcionar muito bem com recursos limitados, isso funciona para mim, embora eu tenha apenas 4GB de memória RAM (lembre-se, isso significa que eu executo uma única VM de cada vez e geralmente dou 1024MB de RAM para manter bastante para Windows).

Seus 8GB de RAM devem permitir que você execute uma VM do Windows com bastante facilidade. Eu acho que a única grande questão aqui é o tipo de resultados que você vai querer medir para o seu desenvolvimento. Eu hesitaria em confiar em qualquer métrica de desempenho / taxa de transferência para itens que você desenvolve em uma VM (a menos que ela seja implantada em um ambiente de VM semelhante com as mesmas especificações em toda a placa). Caso contrário, você deve ser bom para ir.

E para abordar os comentários em outro tópico, naturalmente, se você estiver indo para saber que estará desenvolvendo aplicativos que exigem uma grande quantidade de recursos, otimizar para esse fim seria o caminho a ser seguido. boot seria certamente preferível ao uso de VM's).

Eu usei o VMWare e o VirtualBox, e não vi nenhuma ocorrência real de desempenho usando nenhum deles. Eu não tenho ido ao ponto de benchmarking da VM dentro, eu simplesmente não notei nenhum impacto negativo de qualquer plataforma (ainda uso o VirtualBox em casa e o VMware no trabalho).

    
por 25.06.2014 / 20:07
8

Depende de como você trabalha e de como deseja que o sistema operacional sinta .

Inicialização dupla significa reiniciar e inicializar se você quiser mudar o SO, isso leva tempo . Como freelancer, você trabalha 8 horas seguidas com um projeto sem fazer o "seu" material ("seu material" seria você na inicialização do linux).

Se você trabalha 8 horas seguidas no Windows e depois passa o resto do dia no Linux, use inicialização dupla. Se você trabalha 30 minutos e depois quer fazer alguma coisa no Linux, mude para trabalhar novamente por 3 horas, depois para linux novamente, etc. Então eu escolheria VM.

Se você não tiver certeza, faça as duas coisas. Inicialização dupla e quando no Windows executar uma VM. Você verá uma clara diferença entre ambos e você preferirá um ao outro.

Eu pessoalmente só uso um vm para testar o novo linux dists e às vezes um servidor falso quando devloping (ser capaz de estragar um vm é inestimável e muito menos incômodo que fazê-lo em seu disco rígido real.). A VM também fica mais lenta e menos responsiva, preciso que o meu sistema operacional seja ágil e suave, a VM não tem essa área. Então eu prefiro dual boot.

Há também um problema quando se trata de compartilhar arquivos. É mais trabalho para compartilhar em um dual boot (imagine editar um arquivo no windows boot então inicializar no linux apenas para perceber que você perdeu uma linha e ter que reiniciar no windows, o pesadelo!) Onde em um vm você pode usar NFS ou samba para compartilhar arquivos entre o sistema operacional em tempo real, sem probs.

Também sobre ram não suficiente como Aboba disse, lixo eu digo. Eu corro 4GB e uma VM no Windows8. Lembre-se de que recursos o seu projeto precisa.

    
por 25.06.2014 / 20:34
5

Ou como sobre isso. Você está interessado em .net / C #, então porque não usar o Mono no linux? Sua plataforma muito cruzada no sentido de java é.

    
por 26.06.2014 / 05:43
4

Pessoalmente, tive muitas experiências positivas na metade do caminho, use um hipervisor como o Xen você pode ter o Linux e o Windows rodando sob um hipervisor de micro-kernel leve, sem ter um impacto significativo no desempenho e essa configuração é muito mais flexível, permitindo que você realoque facilmente recursos entre os dois a qualquer momento.

Isso quase coincide com a configuração dos seus sonhos, já que você pode inicializar ou desligar os dois SOs independentemente a qualquer momento para realocar recursos para o outro e você não será capaz de notar nenhum impacto no desempenho (na verdade, pode ser uma fração um% mais devagar é em alguns casos, mas você não perceberá isso, a menos que esteja comparando especificamente para testar isso).

A única pegadinha é que certos recursos exigem que sua CPU ofereça suporte à visualização, porém, cada i7 faz (afaik), então 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 para precisar de um sistema Linux é reconfigurar o Xen, já que o programa de configuração é um programa linux que você executa em um dos convidados. termo Xen significa uma VM). Você pode ter apenas linux, apenas windows ou ambos rodando a qualquer momento, mas você precisará do linux rodando para configurar o Xen, então é aconselhável deixar um pequeno linux rodando em background para fazer isso quando necessário.

O hardware pode ser manipulado de algumas maneiras, o Xen fornece um conjunto de dispositivos virtuais que permitem que uma peça de hardware seja usada por vários convidados ao mesmo tempo, como placas de rede e placas de som, etc.

Para hardware que não pode funcionar dessa maneira ou é necessário apenas para um convidado por vez xen possui dispositivos de passagem, isso significa que você pode selecionar e escolher a qualquer momento que convidado tem acesso direto à peça de hardware e pode alternar isso a qualquer momento. Isso pode ser feito para fornecer a um convidado um acesso verdadeiro à placa gráfica, se você precisar renderização acelerada de alta velocidade sem qualquer sobrecarga de virtualização .

Também é possível ter um convidado diretamente usando a placa gráfica no modo pass-through como explicado acima, mas ainda visualizar outros usando um protocolo VNC local que faz com que a tela de outros convidados apareça no Windows (pense como 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, fornecendo um acesso direto de cada vez.

Ao contrário do que você pode assumir sobre a eficiência desta configuração, é de fato uma das poucas maneiras de executar ambos os sistemas operacionais ao mesmo tempo em que mantém um desempenho nativo em ambos, se você fizer algum googling, teve sucesso usando essa configuração para executar uma máquina de jogos de alto desempenho ou outros sistemas exigentes.

    
por 26.06.2014 / 11:58
3

De acordo com a minha experiência (eu também trabalho em aplicativos .Net enquanto testo coisas legais e resolvo problemas de algo no linux), dual boot será sua melhor aposta.

Como outros apontaram, o uso de uma MV parece lento e sem resposta às vezes, o que pode ser uma dor.

Mais uma coisa que gostaria de salientar, que tome o seu tempo e tente executar uma VM e verifique se você está confortável com isso.

Quanto ao pedido
1) instalar o windows primeiro e depois o linux (preffered)
2) Instale o linux primeiro e depois o windows (então você tem que reinstalar o bootloader)

Mais uma coisa que eu gostaria de acrescentar é que para pequenos projetos .Net você pode usar o mesmo Linux usando mono, então não há necessidade de mudar de janelas para linux.

    
por 25.06.2014 / 22:09
1

Eu tenho feito muito desenvolvimento de Linux / Visual Studio há um ano, começando com o Visual Studio e mudando para o Linux ao longo do tempo (eu gosto de apt, zsh e vim!).

Eu comecei com o Windows hospedando o Ubuntu no VMWare Player, que funcionou muito bem, certamente ótimo se você está basicamente desenvolvendo o Visual Studio e apenas ocasionalmente precisa de algum pacote 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 Linux (lotes de AS3 no IntelliJ e algum nó + python) com apenas uma necessidade ocasional para o Windows (site ASP.NET), eu folheei para o Ubuntu hospedando um VirtualBox (usando um disk2vhd - & gt ; .vdi do meu antigo disco do windows). Depois de uma boa quantidade de mexer eu estou bastante feliz com isso, dada a divisão do trabalho eu geralmente tenho, mas se você está fazendo qualquer quantidade séria de Visual Studio, você provavelmente quer Windows hosting Linux, VirtualBox ou VMWare Player deve estar bem.

Eu deveria notar alguns pontos negativos: com os drivers de vídeo padrão AMD para o Ubuntu 14.04, a aceleração 3D do VirtualBox torna o Visual Studio ~ 10-100x mais lento, então desabilite a aceleração ao custo de alguma lentidão; e você realmente quer rodar em um SSD)

    
por 26.06.2014 / 00:41