Partilhar via


Use o systemd para gerir serviços Linux com o WSL

O Subsistema Windows para Linux (WSL) agora suporta systemd, um sistema init e gerenciador de serviços usado por muitas distribuições Linux populares, como Ubuntu, Debian e muito mais. (O que é systemd?).

O padrão do sistema init mudou recentemente do SystemV, com systemd agora sendo o predefinido para a versão atual do Ubuntu que será instalada usando o comando wsl --install predefinido. Distribuições Linux diferentes da versão atual do Ubuntu ainda podem usar o init WSL, semelhante ao SystemV init. Para mudar para systemd, consulte Como habilitar o systemd.

O que é systemd no Linux?

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 funciona como PID 1 e inicia o resto do sistema."

Principalmente um sistema de inicialização e gestor de serviços, o systemd inclui recursos como início sob demanda de daemons, manutenção de ponto de montagem e automontagem, suporte a snapshots e monitorização de processos usando grupos de controlo do Linux.

A maioria das principais distribuições Linux agora roda systemd, então habilitá-lo no WSL traz a experiência ainda mais perto do uso do Linux bare-metal. Veja abaixo o anúncio em vídeo do com demonstrações do systemd ou exemplos de uso do systemd para saber mais sobre o que o systemd tem a oferecer.

Como habilitar o systemd?

Systemd é agora o padrão para a versão atual do Ubuntu que será instalado usando o comando wsl --install padrão.

Para habilitar o systemd para quaisquer outras distribuições Linux em execução no WSL 2 (alterando o padrão de usar o systemv init):

  1. Certifique-se de que sua versão do WSL é 0.67.6 ou mais recente:

  2. Abra uma linha de comando para sua distribuição Linux e digite cd / para acessar o diretório raiz e, em seguida, ls 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.

  3. Adicione estas linhas no arquivo de wsl.conf que você tem agora aberto para alterar o init usado para systemd:

    [boot]
    systemd=true
    

    Ativar systemd no WSL 2

  4. Saia do editor de texto Nano (Ctrl + X, digite Y para salvar sua alteração e confirmar com a tecla enter).

  5. Em seguida, você precisará fechar a distribuição Linux. Você pode usar o comando wsl.exe --shutdown no PowerShell para reiniciar todas as instâncias WSL.

  6. Depois de reiniciar a distribuição Linux, o systemd estará em execução. Você pode verificá-lo usando o comando systemctl status para mostrar o em execução estado e o comando systemctl list-unit-files --type=service, que mostrará o status de quaisquer serviços associados à sua distribuição Linux.

Se a sua distribuição Linux é Debian/Ubuntu/Kali Rolling, você não só deve ter instalado o pacote systemd, mas também certificar-se de que o pacote systemd-sysv está instalado.

sudo apt-get update -y && sudo apt-get install systemd systemd-sysv -y

Saiba mais sobre configuração de configurações 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 suporte systemd para a WSL. Veja Craig Loewen (PM para WSL na Microsoft) e Oliver Smith (PM para Ubuntu na WSL na Canonical) anunciam o suporte ao systemd e mostram algumas demonstrações do que ele permite.

Exemplos de Systemd

Alguns exemplos de aplicações Linux que dependem do systemd são:

  • snap: um sistema de empacotamento e implementação de software desenvolvido pela Canonical para sistemas operacionais que usam o kernel Linux e o sistema systemd init. Os pacotes são chamados de "snaps", a ferramenta de linha de comando para construir 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 no lugar, confinar e executar aplicativos fora deles) é chamado de "snapd". Todo o sistema é por vezes referido como "rápido". Tente executar o comando: snap install spotify.

  • microk8s: um Kubernetes de código aberto, com baixa necessidade de operações e mínimo para produção, que automatiza a implantação, o escalonamento e a gestão de aplicações em contentores. Siga as instruções para Instalar o MicroK8s no WSL2, confira o Tutorial de Introduçãoou assista ao vídeo no Kubernetes no Windows com MicroK8s e WSL 2.

  • 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?

A habilitação do suporte para systemd exigiu alterações na arquitetura WSL. Como o systemd requer PID 1, o processo de inicialização do WSL iniciado dentro da distribuição Linux torna-se um processo filho do systemd. Como o processo de inicialização da WSL é responsável por fornecer a infraestrutura para a comunicação entre os componentes Linux e Windows, alterar essa hierarquia exigiu repensar algumas das suposições feitas com o processo de inicialização da 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 WSLg, o componente do WSL que executa Linux Graphical User Interfaces (GUIs), ou os aplicativos Linux que são exibidos no Windows em vez da linha de comando.

Também é importante notar que, com estas alterações, os serviços systemd NÃO manterão a sua instância de WSL ativa. Sua instância do WSL permanecerá ativa da mesma forma que antes desta atualização, sobre a qual você pode ler mais nesta postagem do blog Suporte a tarefas em segundo plano de 2017.