O Subsistema do Windows para Linux (WSL) agora dá suporte ao systemd, um sistema init e gerenciador de serviços usado por muitas distribuições Linux populares, como Ubuntu, Debian e muito mais. (O que é o systemd?).
De acordo com systemd.io: "systemd é um conjunto de blocos de construção básicos para um sistema Linux. Ele fornece um sistema e um gerenciador de serviços que é executado como PID 1 e inicia o resto do sistema."
Sendo primordialmente um sistema init e gerenciador de serviços, o systemd inclui recursos como início sob demanda de daemons, montagem e manutenção automática de ponto de montagem, suporte a snapshots e rastreamento de processos usando grupos de controle Linux.
A maioria das principais distribuições Linux agora executam o systemd, então habilitá-lo no WSL aproxima ainda mais a experiência de uso do Linux nativo. Veja o anúncio em vídeo com demonstrações do systemd ou exemplos de uso do systemd abaixo para saber mais sobre o que o systemd tem a oferecer.
Para habilitar o systemd para quaisquer outras distribuições Linux em execução no WSL 2 (alterando o padrão init systemv):
Certifique-se de que sua versão WSL seja 0.67.6 ou mais recente. (Para verificar, execute wsl --version. Para atualizar, execute wsl --update ou baixe a versão mais recente da Microsoft Store.)
Abra uma linha de comando para sua distribuição Linux e digite cd / para acessar o diretório raiz e, em seguida ls para listar os arquivos. Você verá um diretório chamado "etc" que contém o arquivo de configuração WSL para a distribuição. Abra este arquivo para que você possa fazer uma atualização com o editor de texto Nano digitando: nano /etc/wsl.conf.
Adicione estas linhas no arquivo wsl.conf que agora você tem aberto para alterar o init usado para systemd:
[boot]
systemd=true
Saia do editor de texto Nano (Ctrl + X, selecione Y para salvar sua alteração). Em seguida, você precisará fechar a distribuição do Linux. Você pode usar o comando wsl.exe --shutdown no PowerShell para reiniciar todas as instâncias do WSL.
Depois que a distribuição for reiniciada, o systemd estará em execução. Você pode confirmar usando o comando systemctl list-unit-files --type=service, que mostrará o status de todos os serviços associados à distribuição do Linux.
Saiba mais sobre as Definições de configuração avançadas no WSL, incluindo a diferença entre os arquivos de configuração wsl.conf (específicos da distribuição) e .wslconfig (globais), como atualizar as configurações de montagem automática, etc.
Vídeo de demonstração do systemd
A Microsoft fez uma parceria com a Canonical para trazer ao systemd suporte para o WSL. Veja Craig Loewen (gerente de produto para WSL na Microsoft) e Oliver Smith (gerente de produto para Ubuntu no WSL na Canonical) anunciarem o suporte ao systemd e fazerem algumas demonstrações do que ele possibilita.
Alguns exemplos de aplicativos Linux que dependem do systemd são:
snap: um sistema de empacotamento e implantação de software desenvolvido pela Canonical para sistemas operacionais que usam o kernel Linux e o sistema de init systemd. Os pacotes são chamados de "snaps", a ferramenta de linha de comando para a criação de snaps é chamada de "Snapcraft", o repositório central onde os snaps podem ser baixados/instalados é chamado de "Snap Store", e o daemon necessário para executar snaps (baixar da loja, montar, confinar e executar aplicativos neles) é chamado de "snapd". O sistema inteiro às vezes é chamado de "snappy". Tente executar o comando: snap install spotify.
systemctl: um utilitário de linha de comando usado para controlar e inspecionar systemd e para ajudá-lo a interagir com serviços em sua distribuição Linux. Experimente o comando systemctl list-units --type=service para ver quais serviços estão disponíveis e seu status.
Alguns tutoriais relacionados demonstrando maneiras de usar o systemd:
Como a ativação do systemd afeta a arquitetura WSL?
Habilitando o suporte para as mudanças necessárias do systemd na arquitetura WSL. Como o systemd requer o PID 1, o processo init do WSL iniciado dentro da distribuição Linux torna-se um processo filho do systemd. Como o processo init do WSL é responsável por fornecer a infraestrutura para a comunicação entre os componentes do Linux e do Windows, alterar essa hierarquia exigiu repensar algumas das suposições feitas com o processo initi do WSL. Modificações adicionais tiveram que ser feitas para garantir um desligamento limpo (já que esse desligamento é controlado pelo systemd agora) e para ter compatibilidade com o WSLg, o componente do WSL que executa as GUIs (Interfaces Gráficas do Usuário) do Linux, ou os aplicativos Linux que são exibidos no Windows em vez da linha de comando.
Também é importante notar que, com essas mudanças, os serviços systemd NÃO manterão sua instância do WSL ativa. Sua instância do WSL permanecerá ativa da mesma forma que acontecia antes desta atualização, sobre a qual você pode ler mais nesta postagem do blog de Suporte a tarefas em segundo plano de 2017.
Colaborar conosco no GitHub
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.
Comentários do Windows Subsystem for Linux
O Windows Subsystem for Linux é um projeto código aberto. Selecione um link para fornecer comentários:
Neste módulo, você aprenderá a usar o Subsistema do Windows para Linux (WSL) com o Visual Studio Code (VS Code). Exploramos o processo de instalação e os conceitos básicos de uso da WSL. Além disso, instalamos e utilizamos a extensão WSL do Visual Studio Code. Por fim, demonstramos como depurar e executar o código Python no VS Code em nosso ambiente WSL.