terça-feira, 18 de abril de 2017

O Windows Subsystem for Linux no Windows 10 – Um pouco da história e mão na massa

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.

clip_image002

É 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.

2017-04-18_13-36-31

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

clip_image006

É 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

image

Habilitando o WSL no Windows 10 Creators Update

1) Acesse Configurações > Atualização e Segurança

2017-04-18_13-38-07

 

2) Clique em Para desenvolvedores > selecione Modo de desenvolvedor e reinicie o computador

2017-04-18_13-38-45

3) Após a reinicialização acesse o Painel de Controle > selecione Ativar ou desativar Recursos do Windows

2017-04-18_13-39-20

4) Selecione Subsistema do Windows para Linux (WSL) > OK

2017-04-18_13-40-04

5) Acesse o bash (como administrador)

2017-04-18_13-43-08

6) Será solicitado a sua confirmação para instalação do Ubuntu no Windows > confirme

clip_image010

7) Confirme novamente

clip_image012

8) Será necessário informar um nome de usuário e senha para o Linux

clip_image014

9) Agora é tirar proveito do Linux no Windows

Nesse exemplo estou instalando o gcc usando o comando

sudo apt-get install gcc

2017-04-18_13-40-47

10) Já nesse exemplo estou instalando o xrdp

sudo apt-get install xrdp

2017-04-18_13-41-54

11) Literalmente estamos no Linux

clip_image019

sudo apt-get install squid

2017-04-18_13-42-23

Nenhum comentário: