Microsoft revela como funciona o subsistema Windows 10 linux

Vídeo: Rodando Linux DENTRO do Windows - WSL (Windows Subsystem for Linux) 2024

Vídeo: Rodando Linux DENTRO do Windows - WSL (Windows Subsystem for Linux) 2024
Anonim

O Bash no Ubuntu no Windows permite que os binários Linux ELF64 nativos sejam executados no Windows por meio do Windows Subsystem for Linux (WSL). Embora muitas pessoas tenham ficado chocadas com o anúncio do Bash no Ubuntu, vale ressaltar que ele abre novas portas para a compatibilidade entre diferentes sistemas operacionais. A Microsoft dá outro passo à frente e revela como a WSL funciona, para que possamos entender melhor como os dois sistemas se comunicam.

O WSL foi criado pela equipe do Microsoft Windows Kernel e contém componentes do modo do usuário e do modo do kernel. Mais especificamente, o sistema é composto por:

  • um serviço do gerenciador de sessões no modo de usuário que lida com o ciclo de vida da instância do Linux
  • Drivers de provedor Pico (lxss.sys, lxcore.sys) cuja função é emular um kernel Linux traduzindo syscalls do Linux
  • O Pico processa a hospedagem do Linux no modo de usuário não modificado (por exemplo, / bin / bash).

A conexão entre os três componentes é descrita da seguinte maneira:

É o espaço entre os binários Linux no modo de usuário e os componentes do kernel do Windows onde a mágica acontece. Ao colocar binários Linux não modificados nos processos do Pico, permitimos que as chamadas do sistema Linux sejam direcionadas para o kernel do Windows. Os drivers lxss.sys e lxcore.sys convertem as chamadas do sistema Linux em APIs do NT e emulam o kernel do Linux.

O principal desafio do processo é fazer com que os dois sistemas funcionem juntos:

O WSL executa binários Linux ELF64 não modificados, virtualizando uma interface do kernel do Linux na parte superior do kernel do Windows NT. Uma das interfaces do kernel que ele expõe são chamadas do sistema (syscalls). Um syscall é um serviço fornecido pelo kernel que pode ser chamado no modo de usuário. O kernel do Linux e o Windows NT expõem várias centenas de syscalls ao modo de usuário, mas eles têm semânticas diferentes e geralmente não são diretamente compatíveis. Por exemplo, o kernel do Linux inclui coisas como fork, open e kill, enquanto o kernel do Windows NT possui os NtCreateProcess, NtOpenFile e NtTerminateProcess comparáveis.

O Windows Subsystem para Linux inclui drivers no modo kernel (lxss.sys e lxcore.sys) responsáveis ​​pelo tratamento de solicitações de chamada do sistema Linux em coordenação com o kernel do Windows NT. Os drivers não contêm código do kernel do Linux, mas são uma implementação de sala limpa de interfaces do kernel compatíveis com o Linux. No Linux nativo, quando um syscall é feito a partir de um executável no modo de usuário, ele é tratado pelo kernel do Linux. Na WSL, quando uma syscall é feita do mesmo executável, o kernel do Windows NT encaminha a solicitação para lxcore.sys. Sempre que possível, o lxcore.sys converte o syscall do Linux na chamada equivalente do Windows NT que, por sua vez, faz o trabalho pesado.

Levando em conta o interesse da Microsoft em plataformas de código aberto, muitas pessoas se perguntaram se a gigante da tecnologia deveria adquirir grandes empresas focadas no Linux, como a Canonical, a empresa por trás do sistema operacional Ubuntu. Embora a Microsoft e a Canonical tenham cooperado com o software de código aberto, nenhum dos dois comentou essa possibilidade.

Se você é interessante em como a interação Linux - Windows evolui, acesse o Blog da Microsoft. A equipe prometeu que mais posts do blog sobre esse tópico viriam.

Microsoft revela como funciona o subsistema Windows 10 linux