Konfigurasi pengaturan tingkat lanjut di WSL

File wsl.conf dan .wslconfig digunakan untuk mengonfigurasi opsi pengaturan tingkat lanjut, berdasarkan per distribusi (wsl.conf) dan secara global di semua distribusi WSL 2 (.wslconfig). Panduan ini akan mencakup setiap opsi pengaturan, kapan harus menggunakan setiap jenis file, tempat menyimpan file, file pengaturan sampel, dan tips.

Apa perbedaan antara wsl.conf dan .wslconfig?

Anda dapat mengonfigurasi pengaturan untuk distribusi Linux yang diinstal yang akan secara otomatis diterapkan setiap kali Anda meluncurkan WSL dengan dua cara, dengan menggunakan:

  • .wslconfig untuk mengonfigurasi pengaturan global di semua distribusi yang diinstal yang berjalan pada WSL 2.
  • wsl.conf untuk mengonfigurasi pengaturan lokal per distribusi untuk setiap distribusi Linux yang berjalan di WSL 1 atau WSL 2.

Kedua jenis file digunakan untuk mengonfigurasi pengaturan WSL, tetapi lokasi tempat file disimpan, cakupan konfigurasi, jenis opsi yang dapat dikonfigurasi, dan versi WSL yang menjalankan distribusi Anda semua dampak jenis file mana yang akan dipilih.

WSL 1 dan WSL 2 berjalan dengan arsitektur yang berbeda dan akan berdampak pada pengaturan konfigurasi. WSL 2 berjalan sebagai komputer virtual (VM) ringan, jadi menggunakan pengaturan virtualisasi yang memungkinkan Anda mengontrol jumlah memori atau prosesor yang digunakan (yang mungkin akrab jika Anda menggunakan Hyper-V atau VirtualBox). Periksa versi WSL mana yang Anda jalankan.

Aturan 8 detik untuk perubahan konfigurasi

Anda harus menunggu hingga subsistem yang menjalankan distribusi Linux Anda benar-benar berhenti berjalan dan memulai ulang agar pembaruan pengaturan konfigurasi muncul. Ini biasanya membutuhkan waktu sekitar 8 detik setelah menutup SEMUA instans shell distribusi.

Jika Anda meluncurkan distribusi (misalnya Ubuntu), ubah file konfigurasi, tutup distribusi, lalu luncurkan kembali, Anda mungkin berasumsi bahwa perubahan konfigurasi Anda telah segera berlaku. Ini saat ini tidak terjadi karena subsistem masih dapat berjalan. Anda harus menunggu subsistem berhenti sebelum diluncurkan kembali untuk memberikan cukup waktu agar perubahan Anda diambil. Anda dapat memeriksa untuk melihat apakah distribusi Linux (shell) Anda masih berjalan setelah menutupnya dengan menggunakan PowerShell dengan perintah: wsl --list --running. Jika tidak ada distribusi yang berjalan, Anda akan menerima respons: "Tidak ada distribusi yang berjalan." Anda sekarang dapat memulai ulang distribusi untuk melihat pembaruan konfigurasi Anda diterapkan.

Perintah wsl --shutdown ini adalah jalur cepat untuk memulai ulang distribusi WSL 2, tetapi akan mematikan semua distribusi yang berjalan, jadi gunakan dengan bijak. Anda juga dapat menggunakan wsl --terminate <distroName> untuk mengakhiri distribusi tertentu yang berjalan secara instan.

wsl.conf

Konfigurasikan pengaturan lokal dengan wsl.conf per-distribusi untuk setiap distribusi Linux yang berjalan di WSL 1 atau WSL 2.

  • Disimpan dalam /etc direktori distribusi sebagai file unix.
  • Digunakan untuk mengonfigurasi pengaturan berdasarkan per distribusi. Pengaturan yang dikonfigurasi dalam file ini hanya akan diterapkan ke distribusi Linux tertentu yang berisi direktori tempat file ini disimpan.
  • Dapat digunakan untuk distribusi yang dijalankan oleh versi, WSL 1 atau WSL 2.
  • Untuk masuk ke /etc direktori untuk distribusi yang diinstal, gunakan baris perintah distribusi dengan cd / untuk mengakses direktori akar, lalu untuk mencantumkan ls file atau explorer.exe . untuk melihat di Windows File Explorer. Jalur direktori akan terlihat seperti: /etc/wsl.conf.

Catatan

Menyesuaikan pengaturan per distribusi dengan file wsl.conf hanya tersedia di Windows Build 17093 dan yang lebih baru.

Pengaturan konfigurasi untuk wsl.conf

File wsl.conf mengonfigurasi pengaturan berdasarkan per distribusi. (Untuk konfigurasi global distribusi WSL 2 lihat .wslconfig).

File wsl.conf mendukung empat bagian: automount, , networkinterop, dan user. (Dimodelkan setelah konvensi file .ini, kunci dideklarasikan di bawah bagian, seperti file .gitconfig.) Lihat wsl.conf untuk informasi tentang tempat menyimpan file wsl.conf.

dukungan systemd

Banyak distribusi Linux menjalankan "systemd" secara default (termasuk Ubuntu) dan WSL baru-baru ini menambahkan dukungan untuk sistem/manajer layanan ini sehingga WSL bahkan lebih mirip dengan menggunakan distribusi Linux favorit Anda pada mesin bare metal. Anda akan memerlukan WSL versi 0.67.6+ untuk mengaktifkan systemd. Periksa versi WSL Anda dengan perintah wsl --version. Jika perlu memperbarui, Anda dapat mengambil WSL versi terbaru di Microsoft Store. Pelajari lebih lanjut di pengumuman blog.

Untuk mengaktifkan systemd, buka file Anda wsl.conf di editor teks menggunakan sudo untuk izin admin dan tambahkan baris ini ke /etc/wsl.conf:

[boot]
systemd=true

Anda kemudian perlu menutup distribusi WSL Anda menggunakan wsl.exe --shutdown dari PowerShell untuk memulai ulang instans WSL Anda. Setelah distribusi Anda dimulai ulang, systemd harus berjalan. Anda dapat mengonfirmasi menggunakan perintah : systemctl list-unit-files --type=service, yang akan menampilkan status layanan Anda.

Pengaturan pengotomatisan

label bagian wsl.conf: [automount]

kunci value Default catatan
diaktifkan Boolean benar true menyebabkan drive tetap (yaitu C:/ atau D:/) dipasang secara otomatis dengan DrvF di bawah /mnt. false berarti drive tidak akan dipasang secara otomatis, tetapi Anda masih dapat memasangnya secara manual atau melalui fstab.
mountFsTab Boolean benar true set yang akan diproses /etc/fstab pada awal WSL. /etc/fstab adalah file di mana Anda dapat mendeklarasikan sistem file lain, seperti berbagi SMB. Dengan demikian, Anda dapat memasang sistem file ini secara otomatis di WSL saat memulai.
akar string /mnt/ Mengatur direktori tempat drive tetap akan dipasang secara otomatis. Secara default ini diatur ke /mnt/, sehingga sistem file Windows C-drive Anda dipasang ke /mnt/c/. Jika Anda mengubah /mnt/ ke /windir/, Anda harus berharap untuk melihat drive C tetap Anda dipasang ke /windir/c.
opsi daftar nilai yang dipisahkan koma, seperti uid, gid, dll, lihat opsi automount di bawah ini string kosong Nilai opsi automount tercantum di bawah ini dan ditambahkan ke string opsi pemasangan DrvF default. Hanya opsi khusus DrvF yang dapat ditentukan.

Opsi automount diterapkan sebagai opsi pemasangan untuk semua drive yang dipasang secara otomatis. Untuk mengubah opsi untuk drive tertentu saja, gunakan file sebagai gantinya /etc/fstab . Opsi yang biasanya akan diurai biner pemasangan menjadi bendera tidak didukung. Jika Anda ingin secara eksplisit menentukan opsi tersebut, Anda harus menyertakan setiap drive yang ingin Anda lakukan di /etc/fstab.

Opsi automount

Mengatur opsi pemasangan yang berbeda untuk drive Windows (DrvF) dapat mengontrol bagaimana izin file dihitung untuk file Windows. Pilihan berikut tersedia:

Kunci Deskripsi Default
uid ID Pengguna yang digunakan untuk pemilik semua file ID Pengguna default distro WSL Anda (pada penginstalan pertama default ini ke 1000)
gid ID Grup yang digunakan untuk pemilik semua file ID grup default distro WSL Anda (pada penginstalan pertama default ini ke 1000)
umask Masker oktal izin untuk dikecualikan untuk semua file dan direktori 022
fmask Masker oktal izin untuk dikecualikan untuk semua file 000
dmask Masker oktal izin untuk dikecualikan untuk semua direktori 000
metadata Apakah metadata ditambahkan ke file Windows untuk mendukung izin sistem Linux dinonaktifkan
case Menentukan direktori yang diperlakukan sebagai peka huruf besar/kecil dan apakah direktori baru yang dibuat dengan WSL akan memiliki set bendera. Lihat sensitivitas kasus untuk penjelasan terperinci tentang opsi. Opsi termasuk off, dir, atau force. off

Secara default, WSL mengatur uid dan gid ke nilai pengguna default. Misalnya, di Ubuntu, pengguna default adalah uid=1000, gid=1000. Jika nilai ini digunakan untuk menentukan opsi gid atau uid yang berbeda, nilai pengguna default akan ditimpa. Jika tidak, nilai default akan selalu ditambahkan.

Masker mode pembuatan file pengguna (umask) menetapkan izin untuk file yang baru dibuat. Defaultnya adalah 022, hanya Anda yang dapat menulis data tetapi siapa pun dapat membaca data. Nilai dapat diubah untuk mencerminkan pengaturan izin yang berbeda. Misalnya, umask=077 mengubah izin menjadi sepenuhnya privat, tidak ada pengguna lain yang dapat membaca atau menulis data. Untuk menentukan lebih lanjut izin, fmask (file) dan dmask (direktori) juga dapat digunakan.

Catatan

Masker izin dimasukkan melalui operasi OR logis sebelum diterapkan ke file atau direktori.

Apa itu DrvFs?

DrvFs adalah plugin sistem file ke WSL yang dirancang untuk mendukung interop antara WSL dan sistem file Windows. DrvF memungkinkan WSL memasang drive dengan sistem file yang didukung di bawah /mnt, seperti /mnt/c, /mnt/d, dll. Untuk informasi selengkapnya tentang menentukan perilaku sensitivitas kasus default saat memasang drive atau direktori Windows atau Linux, lihat halaman sensitivitas kasus.

Pengaturan jaringan

label bagian wsl.conf: [network]

kunci value Default catatan
generateHosts Boolean true true mengatur WSL untuk menghasilkan /etc/hosts. File hosts berisi peta statis nama host alamat IP yang sesuai.
generateResolvConf Boolean true true mengatur WSL untuk menghasilkan /etc/resolv.conf. resolv.conf berisi daftar DNS yang mampu menyelesaikan nama host tertentu ke alamat IP-nya.
hostname string Nama host Windows Mengatur nama host yang akan digunakan untuk distribusi WSL.

Pengaturan interop

label bagian wsl.conf: [interop]

Opsi ini tersedia di Insider Build 17713 dan yang lebih baru.

kunci value Default catatan
diaktifkan Boolean true Mengatur kunci ini akan menentukan apakah WSL akan mendukung peluncuran proses Windows.
appendWindowsPath Boolean true Mengatur kunci ini akan menentukan apakah WSL akan menambahkan elemen jalur Windows ke variabel lingkungan $PATH.

Pengaturan pengguna

label bagian wsl.conf: [user]

Opsi ini tersedia di Build 18980 dan yang lebih baru.

kunci value Default catatan
Default string Nama pengguna awal yang dibuat saat pertama kali dijalankan Mengatur kunci ini menentukan pengguna mana yang akan dijalankan seperti saat pertama kali memulai sesi WSL.

Pengaturan boot

Pengaturan Boot hanya tersedia di Windows 11 dan Server 2022.

label bagian wsl.conf: [boot]

kunci value Default catatan
command string "" String perintah yang ingin Anda jalankan saat instans WSL dimulai. Perintah ini dijalankan sebagai pengguna root. misalnya: service docker start.

Contoh file wsl.conf

File wsl.conf sampel di bawah ini menunjukkan beberapa opsi konfigurasi yang tersedia. Dalam contoh ini, distribusinya adalah Ubuntu-20.04 dan jalur filenya adalah \\wsl.localhost\Ubuntu-20.04\etc\wsl.conf.

# Automatically mount Windows drive when the distribution is launched
[automount]

# Set to true will automount fixed drives (C:/ or D:/) with DrvFs under the root directory set above. Set to false means drives won't be mounted automatically, but need to be mounted manually or with fstab.
enabled = true

# Sets the directory where fixed drives will be automatically mounted. This example changes the mount location, so your C-drive would be /c, rather than the default /mnt/c. 
root = /

# DrvFs-specific options can be specified.  
options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off"

# Sets the `/etc/fstab` file to be processed when a WSL distribution is launched.
mountFsTab = true

# Network host settings that enable the DNS server used by WSL 2. This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1).
[network]
hostname = DemoHost
generateHosts = false
generateResolvConf = false

# Set whether WSL supports interop processes like launching Windows apps and adding path variables. Setting these to false will block the launch of Windows processes and block adding $PATH environment variables.
[interop]
enabled = false
appendWindowsPath = false

# Set the user when launching a distribution with WSL.
[user]
default = DemoUser

# Set a command to run when a new WSL instance launches. This example starts the Docker container service.
[boot]
command = service docker start

.wslconfig

Konfigurasikan pengaturan global dengan .wslconfig di semua distribusi yang diinstal yang berjalan di WSL.

  • File .wslconfig tidak ada secara default. Ini harus dibuat dan disimpan di direktori Anda %UserProfile% untuk menerapkan pengaturan konfigurasi ini.
  • Digunakan untuk mengonfigurasi pengaturan secara global di semua distribusi Linux yang diinstal yang berjalan sebagai versi WSL 2.
  • Hanya dapat digunakan untuk distribusi yang dijalankan oleh WSL 2. Distribusi yang berjalan sebagai WSL 1 tidak akan terpengaruh oleh konfigurasi ini karena tidak berjalan sebagai komputer virtual.
  • Untuk masuk ke direktori Anda %UserProfile% , di PowerShell, gunakan cd ~ untuk mengakses direktori beranda Anda (yang biasanya merupakan profil pengguna Anda, C:\Users\<UserName>) atau Anda dapat membuka Windows File Explorer dan memasukkan %UserProfile% di bilah alamat. Jalur direktori akan terlihat seperti: C:\Users\<UserName>\.wslconfig.

WSL akan mendeteksi keberadaan file-file ini, membaca konten, dan secara otomatis menerapkan pengaturan konfigurasi setiap kali Anda meluncurkan WSL. Jika file hilang atau salah bentuk (pemformatan markup yang tidak tepat), WSL akan terus diluncurkan seperti biasa tanpa pengaturan konfigurasi diterapkan.

Pengaturan konfigurasi untuk .wslconfig

File .wslconfig mengonfigurasi pengaturan secara global untuk semua distribusi Linux yang berjalan dengan WSL 2. (Untuk konfigurasi per distribusi, lihat wsl.conf).

Lihat .wslconfig untuk info tentang tempat menyimpan file .wslconfig.

Catatan

Mengonfigurasi pengaturan global dengan .wslconfig hanya tersedia untuk distribusi yang berjalan sebagai WSL 2 di Windows Build 19041 dan yang lebih baru. Perlu diingat bahwa Anda mungkin perlu menjalankan wsl --shutdown untuk mematikan WSL 2 VM lalu menghidupkan ulang instans WSL Anda agar perubahan ini berlaku.

File ini dapat berisi opsi berikut yang memengaruhi VM yang mendukung distribusi WSL 2 apa pun:

Pengaturan WSL utama

Label bagian .wslconfig: [wsl2]

kunci value Default catatan
kernel jalan Kotak masuk yang disediakan kernel bawaan Microsoft Jalur Windows absolut ke kernel Linux kustom.
memory size 50% dari total memori pada Windows Berapa banyak memori yang akan ditetapkan ke VM WSL 2.
Prosesor number Jumlah prosesor logis yang sama di Windows Berapa banyak prosesor logis yang akan ditetapkan ke VM WSL 2.
localhostForwarding Boolean true Boolean yang menentukan apakah port yang terikat ke wildcard atau localhost di VM WSL 2 harus dapat dihubungkan dari host melalui localhost:port.
kernelCommandLine string Kosong Argumen baris perintah kernel tambahan.
safeMode Boolean false Jalankan WSL dalam "mode Brankas" yang menonaktifkan banyak fitur dan dimaksudkan untuk digunakan untuk memulihkan distribusi yang berada dalam status buruk. Hanya tersedia untuk Windows 11 dan WSL versi 0.66.2+.
pertukaran size 25% ukuran memori pada Windows dibulatkan ke atas ke GB terdekat Berapa banyak ruang pertukaran untuk ditambahkan ke WSL 2 VM, 0 tanpa file pertukaran. Penyimpanan swap adalah RAM berbasis disk yang digunakan ketika permintaan memori melebihi batas pada perangkat keras.
swapFile jalan %USERPROFILE%\AppData\Local\Temp\swap.vhdx Jalur Windows absolut ke hard disk virtual swap.
pageReporting Boolean true Pengaturan default true memungkinkan Windows untuk mengklaim kembali memori yang tidak digunakan yang dialokasikan ke komputer virtual WSL 2.
guiApplications Boolean* true Boolean untuk mengaktifkan atau menonaktifkan dukungan untuk aplikasi GUI (WSLg) di WSL. Hanya tersedia untuk Windows 11.
debugConsole Boolean* false Boolean untuk mengaktifkan konsol dmesg output Window yang menunjukkan konten saat memulai instans distro WSL 2. Hanya tersedia untuk Windows 11.
nestedVirtualization Boolean* true Boolean untuk mengaktifkan atau menonaktifkan virtualisasi berlapis, memungkinkan VM berlapis lainnya berjalan di dalam WSL 2. Hanya tersedia untuk Windows 11.
vmIdleTimeout Nomor* 60000 Jumlah milidetik yang diam VM, sebelum dimatikan. Hanya tersedia untuk Windows 11.
dnsProxy bool benar Hanya berlaku untuk networkingMode = NAT. Boolean untuk memberi tahu WSL untuk mengonfigurasi Server DNS di Linux ke NAT pada host. Pengaturan ke false akan mencerminkan server DNS dari Windows ke Linux.
networkingMode** string NAT Jika nilainya, mirrored maka ini akan mengaktifkan mode jaringan cermin. String default atau tidak dikenal menghasilkan jaringan NAT.
Firewall** bool benar Mengatur ini ke true memungkinkan aturan Windows Firewall, serta aturan khusus untuk lalu lintas Hyper-V, untuk memfilter lalu lintas jaringan WSL.
dnsTunneling** bool salah Mengubah cara permintaan DNS diproksi dari WSL ke Windows
autoProxy* bool salah Memberlakukan WSL untuk menggunakan informasi proksi HTTP Windows

Entri dengan path nilai harus jalur Windows dengan garis miring terbalik yang lolos, misalnya: C:\\Temp\\myCustomKernel

Entri dengan size nilai harus berukuran diikuti oleh unit, misalnya, 8GB atau 512MB.

Entri dengan * setelah jenis nilai hanya tersedia di Windows 11.

Entri dengan ** setelah jenis nilai memerlukan Windows 11 versi 22H2 atau yang lebih tinggi.

Pengaturan eksperimental

Pengaturan ini adalah pratinjau keikutsertaan fitur eksperimental yang kami bertujuan untuk membuat default di masa mendatang.

Label bagian .wslconfig: [experimental]

Nama pengaturan Nilai Default Catatan
autoMemoryReclaim string dinonaktifkan Secara otomatis merilis memori cache setelah mendeteksi penggunaan CPU diam. Atur ke gradual untuk rilis lambat, dan dropcache untuk rilis instan memori cache.
sparseVhd bool salah Ketika diatur ke true, VHD yang baru dibuat akan diatur ke jarang secara otomatis.
useWindowsDnsCache** bool salah Hanya berlaku ketika wsl2.dnsTunneling diatur ke true. Ketika opsi ini diatur ke false, permintaan DNS yang terowongan dari Linux akan melewati nama yang di-cache dalam Windows untuk selalu menempatkan permintaan pada kawat.
bestEffortDnsParsing** bool salah Hanya berlaku ketika wsl2.dnsTunneling diatur ke true. Ketika diatur ke true, Windows akan mengekstrak pertanyaan dari permintaan DNS dan mencoba mengatasinya, mengabaikan rekaman yang tidak diketahui.
initialAutoProxyTimeout* string 1000 Hanya berlaku ketika wsl2.autoProxy diatur ke true. Mengonfigurasi berapa lama (dalam milidetik) WSL akan menunggu pengambilan informasi proksi HTTP saat memulai kontainer WSL. Jika pengaturan proksi diselesaikan setelah waktu ini, instans WSL harus dimulai ulang untuk menggunakan pengaturan proksi yang diambil.
ignoredPorts** string nihil Hanya berlaku ketika wsl2.networkingMode diatur ke mirrored. Menentukan port mana yang dapat diikat aplikasi Linux, bahkan jika port tersebut digunakan di Windows. Ini memungkinkan aplikasi untuk mendengarkan port untuk lalu lintas murni dalam Linux, sehingga aplikasi tersebut tidak diblokir bahkan ketika port tersebut digunakan untuk tujuan lain di Windows. Misalnya, WSL akan memungkinkan pengikatan ke port 53 di Linux untuk Docker Desktop, karena hanya mendengarkan permintaan dari dalam kontainer Linux. Harus diformat dalam daftar yang dipisahkan koma, misalnya: 3000,9000,9090
hostAddressLoopback** bool salah Hanya berlaku ketika wsl2.networkingMode diatur ke mirrored. Ketika diatur ke True, akan memungkinkan Kontainer untuk terhubung ke Host, atau Host untuk terhubung ke Kontainer, oleh alamat IP yang ditetapkan ke Host. Alamat 127.0.0.1 loopback selalu dapat digunakan, opsi ini memungkinkan semua alamat IP lokal yang ditetapkan juga untuk digunakan. Hanya alamat IPv4 yang ditetapkan ke host yang didukung.

Entri dengan * setelah jenis nilai hanya tersedia di Windows 11.

Entri dengan ** setelah jenis nilai memerlukan Windows versi 22H2 atau yang lebih tinggi.

Contoh file .wslconfig

File .wslconfig sampel di bawah ini menunjukkan beberapa opsi konfigurasi yang tersedia. Dalam contoh ini, jalur file adalah C:\Users\<UserName>\.wslconfig.

# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB 

# Sets the VM to use two virtual processors
processors=2

# Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
kernel=C:\\temp\\myCustomKernel

# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
kernelCommandLine = vsyscall=emulate

# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=8GB

# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
swapfile=C:\\temp\\wsl-swap.vhdx

# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=false

# Turn on default connection to bind WSL 2 localhost to Windows localhost. Setting is ignored when networkingMode=mirrored
localhostforwarding=true

# Disables nested virtualization
nestedVirtualization=false

# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
debugConsole=true

# Enable experimental features
[experimental]
sparseVhd=true

Sumber Daya Tambahan: