A diferença é essencialmente a que existe entre a virtualização no nível do sistema operacional e a virtualização baseada em hipervisor.
Quando você inicia o bash
a partir do menu Iniciar do Windows, você obtém uma janela de texto com acesso a um ambiente de linha de comando completo do Ubuntu, a partir do qual você pode instalar qualquer pacote do Ubuntu.
Ao contrário do que você obteria com uma VM tradicional, não há kernel do Linux para inicializar ou executar, por isso é muito mais rápido de iniciar e mais leve de ser executado. Os binários nativos do Ubuntu são simplesmente executados pelo kernel do Windows (precisamente um novo subsistema). Outra diferença é que não há integração gráfica fora da caixa. Com uma VM, você tem acesso a uma janela (ou uma tela inteira) de representação do texto e do console gráfico do hardware virtual, mas com o Windows bash, é mais parecido se você se conectar remotamente a um servidor de um emulador de terminal do Windows. Você pode, no entanto, executar aplicativos gráficos do Linux se iniciar um servidor X11
no Windows. Como não há nenhum kernel Linux envolvido, você não pode usar módulos / drivers Linux para acessar seu hardware, ele será acessado pelos nativos do Windows. Isso tem muitas implicações, por exemplo, atualmente não há suporte para links simbólicos e problemas com nomes de arquivos longos e caso de nome de arquivo, sem inotify. Não há seqüência de inicialização como uma máquina real ou uma VM tradicional, o que significa que nenhum serviço é iniciado automaticamente quando você inicia bash
. É um pouco semelhante ao lançamento do Docker bash
.
Finalmente, este é um trabalho em progresso, portanto, há muito espaço para melhorias. Você pode ter uma ideia sobre o que os usuários mais informam sobre esse site link
Veja também as perguntas frequentes: link
Observe que a primeira solicitação do usuário "Vamos iniciar processos do Windows a partir do Bash" é algo que você não pode fazer nem de uma VM do Linux em execução no Windows.