Condividi tramite


Usare systemd per gestire i servizi Linux con WSL

Sottosistema Windows per Linux (WSL) supporta ora systemd, un sistema init e un gestore dei servizi usati da molte delle distribuzioni Linux più diffuse, ad esempio Ubuntu, Debian e altro ancora. (Che cos'è systemd?).

L'impostazione predefinita del sistema init è stata recentemente modificata da SystemV, con systemd ora l'impostazione predefinita per la versione corrente di Ubuntu che verrà installata usando il wsl --install comando predefinito. Le distribuzioni Linux diverse dalla versione corrente di Ubuntu possono comunque usare l'init WSL, simile a SystemV init. Per passare a systemd, vedere Come abilitare systemd.

Che cos'è systemd in Linux?

Secondo systemd.io: "systemd è una suite di blocchi predefiniti di base per un sistema Linux. Fornisce un sistema e un gestore di servizi che viene eseguito come PID 1 e avvia il resto del sistema."

Principalmente un sistema e un gestore dei servizi init, systemd include funzionalità come l'avvio su richiesta di daemon, la manutenzione dei punti di montaggio e di montaggio automatico, il supporto degli snapshot e i processi di rilevamento usando i gruppi di controllo Linux.

La maggior parte delle principali distribuzioni Linux ora viene eseguita con systemd, quindi l'abilitazione in WSL porta l'esperienza ancora più vicina all'uso di Linux bare metal. Vedere l'annuncio video con demo di sistema o gli esempi di uso di systemd di seguito per altre informazioni su cosa ha da offrire systemd.

Come abilitare systemd?

Systemd è ora l'impostazione predefinita per la versione corrente di Ubuntu che verrà installata usando il wsl --install comando predefinito.

Per abilitare systemd per qualsiasi altra distribuzione Linux in esecuzione in WSL 2 (modificando il valore predefinito dall'uso di systemv init):

  1. Assicurarsi che la versione di WSL sia 0.67.6 o successiva. (Per controllare, eseguire wsl --version. Per aggiornare, eseguire wsl --update o scaricare la versione più recente dal Microsoft Store.)

  2. Aprire una riga di comando per la distribuzione Linux e immettere cd / per accedere alla directory radice, quindi ls per elencare i file. Verrà visualizzata una directory denominata "etc" che contiene il file di configurazione WSL per la distribuzione. Aprire questo file in modo che sia possibile eseguire un aggiornamento con l'editor di testo Nano immettendo: nano /etc/wsl.conf.

  3. Aggiungere queste righe nel file wsl.conf aperto per modificare l'init usato per systemd:

    [boot]
    systemd=true
    
  4. Uscire dall'editor di testo Nano (CTRL+X, selezionare Y per salvare la modifica). Sarà quindi necessario chiudere la distribuzione di Linux. È possibile usare il comando wsl.exe --shutdown in PowerShell per riavviare tutte le istanze WSL.

Abilitare systemd in WSL 2

Dopo il riavvio della distribuzione Linux, systemd sarà in esecuzione. È possibile confermare usando il comando: systemctl list-unit-files --type=service, che mostrerà lo stato di tutti i servizi associati alla distribuzione di Linux.

Altre informazioni sulla configurazione delle impostazioni avanzate in WSL, inclusa la differenza tra i wsl.conf file di configurazione (specifici della distribuzione) e .wslconfig (globale), su come aggiornare le impostazioni di montaggio automatico e così via.

Video demo di sistema

Microsoft ha collaborato con Canonical per portare il supporto systemd a WSL. Vedere Craig Loewen (PM for WSL presso Microsoft) e Oliver Smith (PM for Ubuntu on WSL presso Canonical) che annunciano il supporto systemd e mostrano alcune demo di ciò che abilita.

Esempi di systemd

Di seguito sono riportati alcuni esempi di applicazioni Linux che dipendono da systemd:

  • snap: un sistema di creazione di pacchetti software e distribuzione sviluppato da Canonical per i sistemi operativi che usano il kernel Linux e il sistema systemd init. I pacchetti sono denominati "snap", lo strumento da riga di comando per la creazione di snap è denominato "Snapcraft", il repository centrale in cui è possibile scaricare/installare gli snap è denominato "Snap Store" e il daemon necessario per eseguire snap (download dallo Store, montare sul posto, limitare ed eseguire le app fuori) è denominato "snapd". L'intero sistema viene talvolta definito "snappy". Provare a eseguire il comando : snap install spotify.

  • microk8s: un Kubernetes di produzione open source, a basso consumo e minima che automatizza la distribuzione, il ridimensionamento e la gestione delle app in contenitori. Seguire le istruzioni per installare MicroK8s in WSL2, vedere l'esercitazione introduttiva o guardare il video su Kubernetes in Windows con MicroK8s e WSL 2.

  • systemctl: un'utilità della riga di comando usata per controllare e ispezionare il sistema e per interagire con i servizi nella distribuzione Linux. Provare il comando: systemctl list-units --type=service per vedere quali servizi sono disponibili e il relativo stato.

Alcune esercitazioni correlate illustrano i modi per usare systemd:

In che modo l'abilitazione del sistema influisce sull'architettura WSL?

Abilitazione del supporto per le modifiche necessarie di systemd all'architettura WSL. Poiché systemd richiede PID 1, il processo init WSL avviato all'interno della distribuzione Linux diventa un processo figlio del sistema. Poiché il processo init WSL è responsabile della fornitura dell'infrastruttura per la comunicazione tra i componenti Linux e Windows, la modifica di questa gerarchia richiedeva un ripensamento di alcuni dei presupposti effettuati con il processo init WSL. Sono state apportate modifiche aggiuntive per garantire un arresto pulito (in quanto l'arresto ora è controllato da systemd) e per avere la compatibilità con WSLg, il componente di WSL che esegue interfacce utente grafiche Linux (GUI) o le app Linux visualizzate in Windows anziché la riga di comando.

È anche importante notare che con queste modifiche, i servizi di sistema non manterranno attiva l'istanza WSL. L'istanza di WSL rimarrà attiva nello stesso modo in cui è stata eseguita in precedenza a questo aggiornamento, che è possibile leggere altre informazioni in questo post di blog supporto attività in background del 2017.