Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Panduan ini akan menelusuri langkah-langkah untuk membuat dan mendistribusikan distribusi WSL, yang merupakan .wsl
file.
Distribusi WSL memiliki dua bagian:
- Sistem file akar (didistribusikan sebagai file tar)
- Entri daftar manifes (yang berisi metadata distribusi)
Panduan ini hanya berlaku untuk rilis WSL 2.4.4 dan yang lebih tinggi.
Catatan
Lihat repositori ini untuk instruksi pengemasan distribusi berbasis appx sebelumnya.
Apa itu file tar sistem file akar WSL?
Distribusi WSL didefinisikan oleh file tar dengan .wsl
ekstensi file di Windows.
File TAR (singkatan dari Arsip Pita) adalah jenis file arsip yang digunakan untuk menyimpan beberapa file bersama-sama dalam satu file untuk distribusi atau pencadangan yang lebih mudah. File TAR berisi sistem file akar distribusi Linux (semua file distribusi), serta file konfigurasi WSL. File konfigurasi WSL memberi tahu sistem operasi WIndows cara menginstal dan meluncurkan distribusi.
Setelah Anda memiliki sistem Linux yang ingin Anda buat menjadi distribusi WSL, ikuti langkah-langkah di bawah ini untuk memulai.
Membuat file konfigurasi WSL
Ada dua file konfigurasi yang harus disertakan dalam distribusi:
-
/etc/wsl-distribution.conf
: File yang dibuat oleh penjaga distribusi yang bertanggung jawab untuk mengontrol bagaimana distribusi Linux harus dikonfigurasi saat pertama kali diluncurkan dengan WSL. -
/etc/wsl.conf
: File yang berisi pengaturan sistem global yang khusus untuk pengguna dan mengontrol bagaimana distribusi diluncurkan. Pelajari selengkapnya tentang file konfigurasi WSL..
Menambahkan file konfigurasi distribusi WSL
File konfigurasi distribusi, /etc/wsl-distribution.conf
, menentukan bagaimana distribusi Linux harus dikonfigurasi saat pertama kali diluncurkan oleh pengguna. File ini dapat digunakan untuk membuat akun pengguna secara interaktif, menunjukkan perjanjian lisensi, dll.
Berikut adalah file sampel /etc/wsl-distribution.conf
:
# /etc/wsl-distribution.conf
[oobe]
command = /etc/oobe.sh
defaultUid = 1000
defaultName = my-distro
[shortcut]
enabled = true
icon = /usr/lib/wsl/my-icon.ico
[windowsterminal]
enabled = true
ProfileTemplate = /usr/lib/wsl/terminal-profile.json
Opsi konfigurasi file distribusi WSL:
kunci | nilai | Default | catatan |
---|---|---|---|
oobe.command |
benang | <none> |
OOBE adalah singkatan dari pengalaman langsung setelah membuka kemasan. Perintah ini berjalan pertama kali pengguna membuka shell interaktif dalam distribusi. Jika perintah tersebut mengembalikan bukan nol, perintah tersebut dianggap tidak berhasil, dan pengguna tidak akan dapat membuka shell. |
oobe.defaultUid |
bilangan bulat | <none> |
UID bawaan yang digunakan sebagai awal oleh distribusi. Ini berguna ketika skrip oobe.command membuat pengguna baru. |
oobe.defaultName |
benang | <none> |
Nama default tempat distribusi didaftarkan. Nama default ini dapat diganti dengan perintah : wsl.exe --install <distro> --name <name> |
shortcut.icon |
benang | Ikon WSL bawaan | Ikon pada pintasan menu Start untuk distribusi. Harus dalam format .ico dengan ukuran maksimum 10MB |
shortcut.enabled |
Boolean | benar | Apakah pintasan menu Start harus dibuat saat distribusi diinstal. |
windowsterminal.profileTemplate |
benang | <none> |
Templat JSON untuk menghasilkan profil Terminal Windows untuk distribusi ini. |
windowsterminal.enabled |
Boolean | benar | Apakah profil terminal harus dibuat saat distribusi diinstal. Jika profileTemplate tidak diatur, profil default akan dihasilkan. |
windowsterminal.profileTemplate |
benang | Jalur ke file templat terminal | Templat JSON untuk menghasilkan profil Terminal Windows untuk distribusi ini. |
Anda perlu membuat pengalaman penggunaan pertama (OOBE) untuk distribusi. Di bawah ini adalah contoh skrip bash yang dapat Anda gunakan. Skrip ini mengasumsikan bahwa oobe.defaultUid
diatur ke 1000
:
#!/bin/bash
set -ue
DEFAULT_GROUPS='adm,cdrom,sudo,dip,plugdev'
DEFAULT_UID='1000'
echo 'Please create a default UNIX user account. The username does not need to match your Windows username.'
echo 'For more information visit: https://aka.ms/wslusers'
if getent passwd "$DEFAULT_UID" > /dev/null ; then
echo 'User account already exists, skipping creation'
exit 0
fi
while true; do
# Prompt from the username
read -p 'Enter new UNIX username: ' username
# Create the user
if /usr/sbin/adduser --uid "$DEFAULT_UID" --quiet --gecos '' "$username"; then
if /usr/sbin/usermod "$username" -aG "$DEFAULT_GROUPS"; then
break
else
/usr/sbin/deluser "$username"
fi
fi
done
Membuat profil Terminal Windows
WSL secara otomatis menghasilkan profil Terminal Windows saat distribusi diinstal. Pemelihara distribusi dapat menyesuaikan profil yang dihasilkan dengan mengatur windowsterminal.profileTemplate
dalam file konfigurasi WSL, /etc/wsl-distribution.conf
.
File JSON mengikuti format JSON profil terminal. Berikut adalah contoh profil:
{
"profiles": [
{
"antialiasingMode": "aliased",
"fontWeight": "bold",
"colorScheme": "Postmodern Tango Light"
}
],
"schemes": [
{
"name": "Postmodern Tango Light",
"black": "#0C0C0C",
"red": "#C50F1F",
"green": "#13A10E",
"yellow": "#C19C00",
"blue": "#0037DA",
"purple": "#881798",
"cyan": "#3A96DD",
"white": "#CCCCCC",
"brightBlack": "#767676",
"brightRed": "#E74856",
"brightGreen": "#16C60C",
"brightYellow": "#F9F1A5",
"brightBlue": "#3B78FF",
"brightPurple": "#B4009E",
"brightCyan": "#61D6D6",
"brightWhite": "#F2F2F2"
}
]
}
File ini tidak perlu menentukan profil name
, atau commandLine
. Mereka secara otomatis ditambahkan oleh WSL saat membuat profil terminal.
Tambahkan konfigurasi WSL untuk pengaturan lokal pada setiap distribusi
Dalam konteks sistem berkas root distribusi, kami menyarankan Anda mengonfigurasi pengaturan systemd, termasuk apakah systemd dimulai secara default, dalam /etc/wsl.conf
pengaturan lokal sesuai dengan distribusi masing-masing. Lihat contoh di bawah ini.
# /etc/wsl.conf
[boot]
systemd=true|false
Penulis distribusi menentukan apakah systemd diaktifkan secara default dengan mengatur boot.systemd
nilai ke true
(diaktifkan) atau false
(tidak diaktifkan).
Lihat rekomendasi Systemd jika Anda memilih untuk mengaktifkan systemd secara default.
Lihat Konfigurasi pengaturan tingkat lanjut di WSL untuk semua pengaturan yang didukung di /etc/wsl.conf
.
Membuat file tar
Setelah file distribusi dan konfigurasi telah ditempatkan, sistem file akar dapat dikompres ke dalam file tar.
Cara yang direkomendasikan untuk membuat file tar:
$ cd /path/to/rootfs
$ tar --numeric-owner --absolute-names -c * | gzip --best > ../install.tar.gz
Akar tar harus menjadi akar sistem file (bukan direktori yang berisi sistem file akar).
Format kompresi yang direkomendasikan adalah gzip. Format kompresi lainnya berisiko mengganggu kompatibilitas dengan versi WSL yang lebih lama.
Lihat rekomendasi file Konfigurasi untuk daftar file yang seharusnya dan tidak boleh disertakan dalam konfigurasi.
Untuk mendapatkan file tar dari distribusi Linux yang ada, temukan panduan tentang cara mengekspor kontainer docker di Mengimpor distribusi Linux apa pun untuk digunakan dengan WSL.
Setelah arsip file tar siap, lihat Uji distribusi secara lokal untuk mencobanya secara lokal.
Membuat ekstensi file .wsl
Langkah terakhir, setelah Anda membuat file tar untuk mewakili distribusi Linux kustom Anda, adalah mengubah ekstensi file .tar
ke ekstensi file .wsl
dengan mengganti nama. Mengganti nama ekstensi file ini akan menandainya sebagai distribusi WSL. Setelah tar diganti namanya dari .tar
menjadi .wsl
, file akan diinstal dengan benar di Windows ketika dibuka (diklik ganda) di File Explorer. Entri oobe.defaultName
diperlukan dalam file /etc/wsl-distribution.conf
agar pengalaman klik ganda ini berfungsi dengan baik.
Sebarkan distribusi WSL Anda
Pengguna WSL dapat melihat distribusi yang tersedia dengan menjalankan wsl --list --online
dan dapat menginstalnya langsung dengan wsl --install <distroName>
(mengganti <distroName>
dengan nama aktual distribusi Linux. Proses ini dikendalikan oleh file manifes distribusi. Anda dapat menambahkan file manifes ini ke distribusi Linux pelanggan Anda agar disertakan dalam wsl --install
opsi perintah.
Tar distribusi Linux kustom yang telah Anda buat dan ganti namanya dengan ekstensi file .wsl
dapat didistribusikan sesuka Anda. Setelah diunduh, pengguna dapat menginstalnya langsung dari baris perintah dengan wsl --install --from-file <fileLocation>
(mengganti <fileLocation>
dengan lokasi file yang sebenarnya). Atau, .wsl
file untuk distribusi WSL kustom Anda dapat dibuka dengan mengklik dua kali.
Rincian manifes distribusi
Manifest distribusi berisi metadata tentang distribusi yang dapat diinstal melalui .
Distribusi Linux yang berbasis tar tercantum di bawah ModernDistribution
, dengan format di bawah ini:
"ModernDistributions": {
"<flavor>": [
{
"Name": "<version name>",
"FriendlyName": "<friendly name>",
"Default": true | false,
"Amd64Url": {
"Url": "<tar url>",
"Sha256": "<tar sha265 hash>"
},
"Arm64Url": {
"Url": "<tar url>",
"Sha256": "<tar sha265 hash>"
}
}
}
Setiap flavor
entri berisi daftar distribusi yang dapat diinstal. Distribusi dapat diinstal melalui nama varian (dalam hal ini, entri default akan diinstal) atau melalui nama versi.
Lihat bagaimana perintah wsl --install
bekerja dengan manifes di bawah ini:
{
"ModernDistributions": {
"my-distro": [
{
"Name": "my-distro-v3",
"Default": true,
"FriendlyName": "My distribution version 3 (latest)"
[...]
},
{
"Name": "my-distro-v2",
"Default": false,
"FriendlyName": "My distribution version 2"
[...]
}
}
}
Contoh perintah penginstalan:
$ wsl --install my-distro # Installs 'my-distro-v3' since it's the default for 'my-distro' flavor
$ wsl --install my-distro-v3 # Installs 'my-distro-v3' explicitly
$ wsl --install my-distro-v2 # Installs 'my-distro-v2' explicitly
Menambah distribusi Anda ke wsl --install
untuk semua pengguna WSL
Untuk membuat distribusi WSL Anda tersedia untuk semua pengguna, buka permintaan pull pada repositori WSL GitHub yang memodifikasi file DistributionInfo.json untuk menyertakan informasi distribusi Anda.
Permintaan pull ini akan ditinjau oleh tim WSL.
Menambahkan saluran distribusi Anda ke wsl --install
untuk perusahaan atau grup bisnis Anda
Anda juga dapat membuat distribusi Anda tersedia di wsl --install
hanya untuk grup tertentu dengan mengedit kunci registri pada perangkat Windows yang dipilih.
Manifes distribusi WSL dapat ditimpa dengan membuat nilai registri di HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
.
-
DistributionListUrl
: Mengambil alih URL manifes distribusi -
DistributionListUrlAppend
: Tambahkan distribusi dari URL manifes tersebut ke daftar distribusi yang dapat diinstal
Kedua nilai registri adalah string (REG_SZ) dan diharapkan dalam format URL.
Dimulai dengan rilis WSL 2.4.4, protokol file://
didukung untuk membuat pengujian lokal lebih mudah. Format yang diharapkan adalah: file:///C:/path/to/file
.
Menguji distribusi secara lokal
Untuk menguji distribusi tar, Anda dapat menggunakan contoh skrip Powershell berikut untuk mengganti manifes distribusi dengan distribusi baru. Pertama simpan skrip di bawah ini sebagai override-manifest.ps1
:
#Requires -RunAsAdministrator
[cmdletbinding(PositionalBinding = $false)]
param (
[Parameter(Mandatory = $true)][string]$TarPath,
[string]$Flavor = "test-distro",
[string]$Version = "test-distro-v1",
[string]$FriendlyName = "Test distribution version 1")
Set-StrictMode -Version latest
$TarPath = Resolve-Path $TarPath
$hash = (Get-Filehash $TarPath -Algorithm SHA256).Hash
$manifest= @{
ModernDistributions=@{
"$Flavor" = @(
@{
"Name" = "$Version"
Default = $true
FriendlyName = "$FriendlyName"
Amd64Url = @{
Url = "file://$TarPath"
Sha256 = "0x$hash"
}
})
}
}
$manifestFile = "$PSScriptRoot/manifest.json"
$manifest | ConvertTo-Json -Depth 5 | Out-File -encoding ascii $manifestFile
Set-ItemProperty -Path "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss" -Name DistributionListUrl -Value "file://$manifestFile" -Type String -Force
Kemudian konfigurasikan manifes lokal dengan menjalankan perintah berikut di Powershell yang ditingkatkan:
.\override-manifest.ps1 -TarPath /path/to/tar
Setelah selesai, Anda akan melihat output berikut dari wsl.exe --list --online
:
$ wsl --list --online
The following is a list of valid distributions that can be installed.
Install using 'wsl.exe --install <Distro>'.
NAME FRIENDLY NAME
test-distro-v1 Test distribution version 1
Anda kemudian dapat menjalankan wsl.exe --install test-distro-v1
untuk mencoba penginstalan distribusi baru.
Setelah selesai, Anda dapat menghapus HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\DistributionListUrl
untuk kembali ke manifes resmi.
Rekomendasi distribusi Linux kustom WSL
Rekomendasi file konfigurasi
- Pastikan distribusi kustom Anda menyertakan file konfigurasi
/etc/wsl.conf
dan/etc/wsl-distribution.conf
. Kedua file harus dimiliki olehroot:root
dan izinnya harus0644
. - Jika pengaturan
oobe.command
digunakan untuk membuat pengguna baru,uid
danoobe.defaultUid
harus diatur ke1000
. - Pastikan Anda mengatur
oobe.defaultName
danshortcut.icon
dalam file konfigurasi distribusi:/etc/wsl-distribution.conf
- Jangan sertakan
/etc/resolv.conf
file dalam sistem file akar. - Sertakan pengguna root di
/etc/passwd
. Nilaiuid
untuk pengguna root ini harus0
. - Seharusnya tidak ada hash kata sandi di
/etc/shadow
. - Arsip tidak boleh berisi kernel atau initramfs.
Rekomendasi systemd
Jika systemd diaktifkan, unit yang dapat menyebabkan masalah dengan WSL harus dinonaktifkan atau ditutupi. Unit di bawah ini diketahui menyebabkan masalah dalam distribusi WSL (berlaku untuk unit sistem dan pengguna):
- systemd-resolved.service
- systemd-networkd.service
- NetworkManager.service
- systemd-tmpfiles-setup.service
- systemd-tmpfiles-clean.service
- systemd-tmpfiles-clean.timer
- systemd-tmpfiles-setup-dev-early.service
- systemd-tmpfiles-setup-dev.service
- tmp.mount
Windows Subsystem for Linux