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 distribuzioni Linux più diffuse, ad esempio Ubuntu, Debian e altro ancora. (Che cos'è systemd?).

Il sistema init predefinito è stato modificato di recente da SystemV, con systemd ora come predefinito per la versione corrente di Ubuntu che verrà installata usando il comando predefinito wsl --install. 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 init e un gestore di servizi, systemd include funzionalità come l'avvio su richiesta di demoni, la manutenzione dei punti di montaggio e di montaggio automatico, il supporto degli snapshot e il monitoraggio dei processi utilizzando i gruppi di controllo di Linux.

La maggior parte delle principali distribuzioni Linux ora utilizza systemd, quindi abilitarlo in WSL rende l'esperienza ancora più simile all'uso di Linux bare-metal. Vedere l'annuncio video di con demo di sistema o esempi di uso di systemd di seguito per altre informazioni su cosa offre systemd.

Come abilitare systemd?

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

Per abilitare systemd per qualsiasi altra distribuzione Linux in esecuzione in WSL 2 (modificando il valore predefinito da usando systemv init):

  1. Assicurarsi che la versione di WSL sia 0.67.6 o successiva:

  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 ora aperto per modificare l'init usato per systemd:

    [boot]
    systemd=true
    

    Abilitare systemd in WSL 2

  4. Uscire dall'editor di testo Nano (CTRL+X, digitare Y per salvare la modifica e confermare con il tasto enter).

  5. Sarà quindi necessario chiudere la distribuzione linux. È possibile usare il comando wsl.exe --shutdown in PowerShell per riavviare tutte le istanze WSL.

  6. Dopo aver riavviato la distribuzione linux, systemd sarà in esecuzione. È possibile verificarlo usando il comando systemctl status per visualizzare il in esecuzione stato e il comando systemctl list-unit-files --type=service, che mostrerà lo stato di tutti i servizi associati alla distribuzione Linux.

Se la distribuzione linux è Debian/Ubuntu/Kali Rolling, non è necessario aver installato solo il pacchetto systemd, ma anche assicurarsi che il pacchetto systemd-sysv sia installato.

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

Scopri di più sulla configurazione delle impostazioni avanzate in WSL, inclusa la differenza tra i file di configurazione wsl.conf (specifici della distribuzione) e .wslconfig (globali), come aggiornare le impostazioni di automontaggio 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 at Microsoft) e Oliver Smith (PM for Ubuntu on WSL at Canonical) annunciare il supporto systemd e mostrare alcune demo di ciò che abilita.

Esempi di systemd

Di seguito sono riportati alcuni esempi di applicazioni Linux che dipendono dal sistema:

  • 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 open source, a bassa manutenzione, per ambienti di produzione minimali, che automatizza la distribuzione, il ridimensionamento e la gestione delle applicazioni containerizzate. SEGUI LE ISTRUZIONI per Installare MicroK8s su WSL2, consulta il tutorial Introduzione, oppure guarda il video su Kubernetes su Windows con MicroK8s e WSL 2.

  • systemctl: un'utilità della riga di comando usata per controllare ed esaminare 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?

Abilitare il supporto per systemd ha richiesto modifiche all'architettura di 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 è controllato da systemd now) e per avere la compatibilità con WSLg, il componente di WSL che esegue interfacce utente grafiche Linux (GUIs) 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 del supporto attività in background di 2017.