O Windows Subsystem for Linux no Windows 10 – Um pouco da história e mão na massa
Autor: :: André Ruschel :: | Publicado: 2017-04-18T13:30:00-03:00

Confesso que demorei um pouco para escrever um artigo sobre o Windows Subsystem for Linux no Windows 10 porque há muitos anos atrás eu tive o privilégio de realizar uma palestra no Teched 2010 (um dos maiores eventos da Microsoft no Brasil) e naquela época eu já mostrrei algumas dessas possiblidades.   É importante voltar ao passado para poder entender algumas coisas que aconteceram, pois a Microsoft lá no ano 2000 já falava em Interix (migração de aplicações e soluções de interoperabilidade entre Windows e UNIX). Era o Interix, um ambiente completo que permite aos clientes rodar facilmente aplicações e scripts UNIX em sistemas operacionais Microsoft Windows NT e Windows 2000, sem reescrever o código. Primeira versão disponível para Windows 2000, o Interix é um componente-chave da estratégia de migração de aplicações entre os sistemas Windows e UNIX. Ele permite aos usuários tirar vantagem dos benefícios da plataforma Windows NT, incluindo redução de custo total de propriedade (TCO), maior gerenciabilidade e acesso à uma gama de aplicações Windows ao mesmo tempo que atua em aplicações Unix existentes.  Depois disso ainda tivemos o SFU que era o Services for Unix e logo mais tivemos o SUA – Subsystem Unix Application, ambos ofereceram inúmeras possibilidades mas pouco exploradas na época.  Essa era a estrutura do SUA que ao contrário do que muitos pensavam não era uma emulação, até porque rodava ao lado do Win32 Subsystem.   Caso queria ver algum desses recursos: https://www.youtube.com/watch?v=_rJIyF67ywI  O próprio Debian chegou a ter um projeto portando as aplicações para usar no SUA Windows    É fato que a função SUA - Subsystem Unix Application foi fazer com que os aplicativos fossem portados para o Windows sem serem reescritos totalmente e isso teve sucesso com o desenvolvimento das APIs de modo de usuário POSIX usando construções NT. Como praticamente todos os componentes foram construídos em modo de usuário, foi difícil ter um bom desempenho para chamadas de sistema em modo kernel.  Por fim, o SUA acabou sendo retirado do Windows principalmente porque esse modelo se baseava na necessidade de recompilação de programas, era necessário uma constante utilização de mão de obra. Como eu já mencionei o Kernel do Windows NT foi arquitetado para permitir novos ambientes de subsistema, e foi baseado nele que a Microsoft teve capacidade de ampliá-lo para desenvolver o Windows Subsystem para Linux.  É fato que o que temos hoje no Windows 10 não é a mesma coisa pois WSL é uma coleção de componentes que permite que os binários ELF64 (Executable and Linkable Format 64-bit) nativos do Linux sejam executados no Windows.  ELF - é um formato de arquivo padrão para arquivos executáveis, código de objeto, bibliotecas compartilhadas e despejos de núcleo. Linux e muitos sistemas operacionais tipo UNIX usam esse formato.  O WSL (Windows Subsystem Linux) contém os componentes do modo de usuário e do modo kernel e é composto por:    Serviço de Gerenciador de sessão do modo de usuário que trata do ciclo de vida da instância do Linux  Drivers de provedores Pico (lxss.sys, lxcore.sys) que emulam um kernel Linux traduzindo syscalls Linux  Processos Pico que hospedam o modo de usuário não modificado Linux (por exemplo / bin / bash) A estrutura do WSL   Habilitando o WSL no Windows 10 Creators Update  1) Acesse Configurações &gt; Atualização e Segurança   &nbsp;   2) Clique em Para desenvolvedores &gt; selecione Modo de desenvolvedor e reinicie o computador    3) Após a reinicialização acesse o Painel de Controle &gt; selecione Ativar ou desativar Recursos do Windows    4) Selecione Subsistema do Windows para Linux (WSL) &gt; OK    5) Acesse o bash (como administrador)    6) Será solicitado a sua confirmação para instalação do Ubuntu no Windows &gt; confirme    7) Confirme novamente    8) Será necessário informar um nome de usuário e senha para o Linux    9) Agora é tirar proveito do Linux no Windows  Nesse exemplo estou instalando o gcc usando o comando  sudo apt-get install gcc    10) Já nesse exemplo estou instalando o xrdp  sudo apt-get install xrdp    11) Literalmente estamos no Linux    sudo apt-get install squid