Sdílet prostřednictvím


Použití systemd ke správě linuxových služeb pomocí WSL

Subsystém Windows pro Linux (WSL) teď podporuje systemd, inicializační systém a správce služeb používaný mnoha oblíbenými distribucemi Linuxu, jako je Ubuntu, Debian a další. (Co je systemd?).

Výchozí nastavení inicializačního systému se nedávno změnilo ze systému SystemV, přičemž je teď výchozí pro aktuální verzi Ubuntu, která se nainstaluje pomocí příkazu wsl --install výchozí. Distribuce Linuxu jiné než aktuální verze Ubuntu mohou stále používat inicializaci WSL, podobně jako SystemV init. Pokud chcete přejít na systemd, přečtěte si téma Povolení systemd.

Co je systémem v Linuxu?

Podle systemd.io: "systemd je sada základních stavebních bloků pro linuxový systém. Poskytuje systém a správce služeb, který běží jako PID 1 a spouští zbytek systému.

Primárně inicializační systém a správce služeb systemd zahrnuje funkce, jako je spouštění démonů na vyžádání, údržba připojovacích a automatických připojovacích bodů, podpora snímků a sledování procesů pomocí skupin řízení Linuxu.

Většina hlavních distribucí Linuxu teď používá systemd, takže jeho povolením ve WSL se zážitek ještě více přibližuje používání Linuxu přímo na hardware. Další informace o tom, co systemd nabízí, najdete v oznámení videa s ukázkami systemd nebo příklady použití systemd níže.

Jak povolit systemd?

Systemd je nyní výchozí pro aktuální verzi Ubuntu, která se nainstaluje pomocí příkazu wsl --install výchozí.

Chcete-li povolit systemd pro další linuxové distribuce běžící na WSL 2 (změna výchozího nastavení z používání init System V), postupujte takto:

  1. Ujistěte se, že vaše verze WSL je 0.67.6 nebo novější:

    • Pro ověření spusťte wsl --version. Pokud se příkazem vyvolá chyba Invalid command line option: --version, musíte aktualizovat WSL.
    • pokud chcete aktualizovat, spusťte wsl --update nebo stáhněte nejnovější verzi z Microsoft Storu.
  2. Otevřete příkazový řádek pro vaši linuxovou distribuci a zadejte cd / pro přístup ke kořenovému adresáři a pak ls k výpisu souborů. Zobrazí se adresář s názvem "etc", který obsahuje konfigurační soubor WSL pro distribuci. Otevřete tento soubor, abyste mohli provést aktualizaci pomocí textového editoru Nano zadáním: nano /etc/wsl.conf.

  3. Do wsl.conf souboru, který jste teď otevřeli, přidejte tyto řádky a změňte inicializaci použitou na systemd:

    [boot]
    systemd=true
    

    Povolení systému ve WSL 2

  4. Ukončete textový editor Nano (Ctrl + X, stisknutím klávesy Y uložte změnu a potvrďte ji pomocí klávesy enter).

  5. Pak budete muset zavřít distribuci Linuxu. Pomocí příkazu wsl.exe --shutdown v PowerShellu můžete restartovat všechny instance WSL.

  6. Po restartování distribuce Linuxu bude systém spuštěný. Můžete ho ověřit pomocí příkazu systemctl status k zobrazení spuštěného stavu a příkazu systemctl list-unit-files --type=service, který zobrazí stav všech služeb přidružených k vaší distribuci Linuxu.

Pokud je vaše linuxová distribuce Debian/Ubuntu/Kali Rolling, měli byste mít nainstalovaný nejen systémový balíček, ale také se ujistit, že je nainstalovaný balíček systemd-sysv.

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

Přečtěte si více o konfiguraci pokročilého nastavení vWSL, včetně rozdílu mezi konfiguračními soubory wsl.conf (specifické pro distribuci) a .wslconfig (globální), a způsobu aktualizace nastavení automatického připojení jednotky atd.

Ukázkové video systému Systemd

Microsoft spolupracuje s Canonical, aby do WSL přinesl systémovou podporu. Podívejte se, jak Craig Loewen (PM pro WSL v Microsoftu) a Oliver Smith (PM pro Ubuntu na WSL v Canonicalu) oznámí podporu systemd a ukážou několik ukázek toho, co umožňuje.

Systémové příklady

Tady je několik příkladů linuxových aplikací, které závisí na systemd:

  • snap: softwarový balíček a systém nasazení vyvinutý společností Canonical pro operační systémy, které používají jádro Linux a init systém systemd. Balíčky se nazývají "snapy", nástroj příkazového řádku pro vytváření snapů se nazývá "Snapcraft", centrální úložiště, kde je možné snapy stáhnout nebo nainstalovat, se nazývá "Snap Store" a démon potřebný ke spuštění snapů (stáhne je z úložiště, připojí na místo, zajistí omezení a spustí aplikace z nich) se nazývá "snapd". Celý systém se někdy označuje jako "snappy". Zkuste spustit příkaz: snap install spotify.

  • microk8s: opensourcový Kubernetes s nízkými provozními nároky, jednoduchý pro produkční prostředí, který automatizuje nasazení, škálování a správu kontejnerizovaných aplikací. Postupujte podle pokynů k instalaci MicroK8s na WSL2, podívejte se na Úvodní kurz, nebo video na Kubernetes na Windows s MicroK8s a WSL 2.

  • systemctl: nástroj příkazového řádku, který slouží k řízení a kontrole systému a k interakci se službami v distribuci Linuxu. Zkuste příkaz: systemctl list-units --type=service zjistit, které služby jsou dostupné a jejich stav.

Několik souvisejících kurzů demonstrujících způsoby použití systemd:

Jak povolení systemd ovlivňuje architekturu WSL?

Povolení podpory pro systemd vyžadovalo změny architektury WSL. Vzhledem k tomu, že systemd vyžaduje PID 1, inicializační proces WSL spuštěný v linuxové distribuci se stane podřízeným procesem systemd. Vzhledem k tomu, že proces inicializačního procesu WSL zodpovídá za poskytování infrastruktury pro komunikaci mezi komponentami Linuxu a Windows, změna této hierarchie vyžadovala znovu promyslení některých předpokladů provedených procesem inicializačního procesu WSL. Bylo nutné provést další úpravy, aby se zajistilo čisté vypnutí (protože toto vypnutí je nyní řízeno systémem) a aby byla kompatibilita s WSLg, komponentou WSL, která spouští grafické uživatelská rozhraní Linuxu (GUI) nebo linuxové aplikace, které se zobrazují v oknech místo příkazového řádku.

Je také důležité si uvědomit, že při těchto změnách nebudou systémové služby udržovat vaši instanci WSL naživu. Vaše instance WSL zůstane naživu stejným způsobem jako předtím v této aktualizaci, o které si můžete přečíst v tomto blogovém příspěvku podpory úloh pozadí z roku 2017.