Menggunakan systemd untuk mengelola layanan Linux dengan WSL

Subsistem Windows untuk Linux (WSL) sekarang mendukung systemd, sistem init dan manajer layanan yang digunakan oleh banyak distribusi Linux populer seperti Ubuntu, Debian, dan banyak lagi. (Apa itu systemd?).

Default sistem init baru-baru ini telah berubah dari SystemV, dengan systemd sekarang default untuk versi Ubuntu saat ini yang akan diinstal menggunakan wsl --install perintah default. Distribusi Linux selain versi Ubuntu saat ini mungkin masih menggunakan init WSL, mirip dengan SystemV init. Untuk mengubah ke systemd, lihat Cara mengaktifkan systemd.

Apa itu systemd di Linux?

Menurut systemd.io: "systemd adalah serangkaian blok penyusun dasar untuk sistem Linux. Ini menyediakan sistem dan manajer layanan yang berjalan sebagai PID 1 dan memulai sisa sistem."

Terutama sistem init dan manajer layanan, systemd mencakup fitur seperti memulai daemon sesuai permintaan, pemeliharaan titik pemasangan dan automount, dukungan rekam jepret, dan pelacakan proses menggunakan grup kontrol Linux.

Sebagian besar distribusi Linux utama sekarang menjalankan systemd, jadi mengaktifkannya di WSL membawa pengalaman lebih dekat untuk menggunakan Linux bare-metal. Lihat pengumuman video dengan demo systemd atau contoh penggunaan systemd di bawah ini untuk mempelajari selengkapnya tentang apa yang ditawarkan systemd.

Bagaimana cara mengaktifkan systemd?

Systemd sekarang menjadi default untuk versi Ubuntu saat ini yang akan diinstal menggunakan wsl --install perintah default.

Untuk mengaktifkan systemd untuk distribusi Linux lain yang berjalan di WSL 2 (mengubah default dari menggunakan systemv init):

  1. Pastikan versi WSL Anda adalah 0.67.6 atau yang lebih baru. (Untuk memeriksa, jalankan wsl --version. Untuk memperbarui, jalankan wsl --update atau unduh versi terbaru dari Microsoft Store.)

  2. Buka baris perintah untuk distribusi Linux Anda dan masukkan cd / untuk mengakses direktori akar, lalu ls untuk mencantumkan file. Anda akan melihat direktori bernama "etc" yang berisi file konfigurasi WSL untuk distribusi. Buka file ini sehingga Anda dapat membuat pembaruan dengan editor teks Nano dengan memasukkan: nano /etc/wsl.conf.

  3. Tambahkan baris ini dalam wsl.conf file yang sekarang telah Anda buka untuk mengubah init yang digunakan untuk systemd:

    [boot]
    systemd=true
    
  4. Keluar dari editor teks Nano (Ctrl + X, pilih Y untuk menyimpan perubahan Anda). Anda kemudian perlu menutup distribusi Linux. Anda dapat menggunakan perintah wsl.exe --shutdown di PowerShell untuk memulai ulang semua instans WSL.

Enable systemd on WSL 2

Setelah distribusi Linux Anda dimulai ulang, systemd akan berjalan. Anda dapat mengonfirmasi menggunakan perintah : systemctl list-unit-files --type=service, yang akan menunjukkan status layanan apa pun yang terkait dengan distribusi Linux Anda.

Pelajari selengkapnya tentang Konfigurasi pengaturan tingkat lanjut di WSL, termasuk perbedaan antara wsl.conf file konfigurasi (khusus distribusi) dan .wslconfig (global), cara memperbarui pengaturan automount, dll.

Video demo systemd

Microsoft bermitra dengan Canonical untuk menghadirkan dukungan systemd ke WSL. Lihat Craig Loewen (PM untuk WSL di Microsoft) dan Oliver Smith (PM untuk Ubuntu di WSL di Canonical) mengumumkan dukungan sistem dan menunjukkan beberapa demo tentang apa yang diaktifkannya.

Contoh systemd

Beberapa contoh aplikasi Linux yang bergantung pada systemd adalah:

  • snap: sistem pengemasan dan penyebaran perangkat lunak yang dikembangkan oleh Canonical untuk sistem operasi yang menggunakan kernel Linux dan sistem init systemd. Paket disebut "snaps", alat baris perintah untuk pembuatan snap disebut "Snapcraft", repositori pusat tempat snap dapat diunduh/diinstal disebut "Snap Store", dan daemon yang diperlukan untuk menjalankan snap (unduh dari toko, pasang ke tempat, confine, dan menjalankan aplikasi dari mereka) disebut "snapd". Seluruh sistem terkadang disebut sebagai "snappy." Coba jalankan perintah: snap install spotify atau snap install postman.

  • microk8s: Kubernetes sumber terbuka, low-ops, produksi minimal yang mengotomatiskan penyebaran, penskalaan, dan manajemen aplikasi kontainer. Ikuti petunjuk untuk Menginstal MicroK8s di WSL2, lihat Tutorial Memulai, atau tonton video di Kubernetes di Windows dengan MicroK8s dan WSL 2.

  • systemctl: utilitas baris perintah yang digunakan untuk mengontrol dan memeriksa systemd dan untuk membantu Anda berinteraksi dengan layanan pada distribusi Linux Anda. Coba perintah: systemctl list-units --type=service untuk melihat layanan mana yang tersedia dan statusnya.

Beberapa tutorial terkait menunjukkan cara untuk menggunakan systemd:

Bagaimana mengaktifkan systemd memengaruhi arsitektur WSL?

Mengaktifkan dukungan untuk perubahan sistem yang diperlukan pada arsitektur WSL. Karena systemd memerlukan PID 1, proses init WSL yang dimulai dalam distribusi Linux menjadi proses turunan dari systemd. Karena proses init WSL bertanggung jawab untuk menyediakan infrastruktur untuk komunikasi antara komponen Linux dan Windows, mengubah hierarki ini diperlukan memikirkan kembali beberapa asumsi yang dibuat dengan proses init WSL. Modifikasi tambahan harus dilakukan untuk memastikan pematian yang bersih (karena pematian tersebut dikontrol oleh systemd sekarang) dan memiliki kompatibilitas dengan WSLg, komponen WSL yang menjalankan Antarmuka Pengguna Grafis (GUI) Linux, atau aplikasi Linux yang ditampilkan di jendela daripada baris perintah.

Penting juga untuk dicatat bahwa dengan perubahan ini, layanan systemd TIDAK akan menjaga instans WSL Anda tetap hidup. Instans WSL Anda akan tetap hidup dengan cara yang sama seperti yang dilakukan sebelumnya pada pembaruan ini, yang dapat Anda baca lebih lanjut di posting blog Dukungan Tugas Latar Belakang ini dari 2017.