Pemecahan masalah Subsistem Windows untuk Linux
Kami telah membahas beberapa skenario pemecahan masalah umum yang terkait dengan WSL di bawah ini, tetapi pertimbangkan untuk mencari masalah yang diajukan dalam repositori produk WSL di GitHub juga.
Masalah repositori produk WSL memungkinkan Anda untuk:
- Cari masalah yang ada untuk melihat apakah ada masalah yang terkait dengan masalah yang Anda alami. Perhatikan bahwa di bilah pencarian, Anda dapat menghapus "is:open" untuk menyertakan masalah yang telah diselesaikan dalam pencarian Anda. Harap pertimbangkan untuk mengomentari atau memberikan jempol untuk masalah terbuka apa pun yang ingin Anda ungkapkan minat Anda untuk maju sebagai prioritas.
- Ajukan masalah baru. Jika Anda telah menemukan masalah dengan WSL dan tampaknya tidak ada masalah, Anda dapat memilih tombol Masalah baru hijau lalu pilih WSL - Laporan Bug. Anda harus menyertakan judul untuk masalah ini, nomor build Windows Anda (jalankan
cmd.exe /c ver
untuk melihat build Anda saat ini #), baik Anda menjalankan WSL 1 atau 2, versi Kernel Linux Anda saat ini # (jalankanwsl.exe --status
ataucat /proc/version
), versi # distribusi Anda (jalankanlsb_release -r
), versi perangkat lunak lain yang terlibat, langkah-langkah repro, perilaku yang diharapkan, perilaku aktual, dan log diagnostik jika tersedia dan sesuai. Untuk informasi selengkapnya, lihat berkontribusi pada WSL. - Ajukan permintaan fitur dengan memilih tombol Masalah baru berwarna hijau lalu pilih Permintaan fitur. Anda harus menjawab beberapa pertanyaan yang menjelaskan permintaan Anda.
Anda juga dapat:
- Ajukan masalah dokumentasi menggunakan repositori dokumen WSL. Untuk berkontribusi pada dokumen WSL, lihat panduan kontributor Microsoft Docs.
- Ajukan masalah Terminal Windows menggunakan repositori produk Terminal Windows jika masalah Anda terkait lebih banyak dengan Terminal Windows, Konsol Windows, atau antarmuka pengguna baris perintah.
Penginstalan gagal dengan kesalahan 0x80070003
- Subsistem Windows untuk Linux hanya berjalan pada drive sistem Anda (biasanya ini adalah drive Anda
C:
). Pastikan distribusi disimpan di drive sistem Anda: - Pada Windows 10 buka Pengaturan ->Sistem ->Penyimpanan ->Pengaturan Penyimpanan Lainnya: Ubah tempat konten baru disimpan
- Pada Windows 11 buka Pengaturan ->Sistem ->Penyimpanan ->Pengaturan penyimpanan tingkat lanjut ->Tempat konten baru disimpan
- Subsistem Windows untuk Linux hanya berjalan pada drive sistem Anda (biasanya ini adalah drive Anda
WslRegisterDistribution gagal dengan kesalahan 0x8007019e
- Komponen opsional Subsistem Windows untuk Linux tidak diaktifkan:
- Buka Panel Kontrol ->Program dan Fitur ->Aktifkan atau nonaktifkan Fitur Windows -> Periksa Subsistem Windows untuk Linux atau gunakan cmdlet PowerShell yang disebutkan di awal artikel ini.
Penginstalan gagal dengan kesalahan 0x80070003 atau kesalahan 0x80370102
- Pastikan bahwa virtualisasi diaktifkan di dalam BIOS komputer Anda. Instruksi tentang cara melakukan ini akan bervariasi dari komputer ke komputer, dan kemungkinan besar akan berada di bawah opsi terkait CPU.
- WSL2 mengharuskan CPU Anda mendukung fitur Second Level Address Translation (SLAT), yang diperkenalkan dalam prosesor Intel Nehalem (Intel Core 1st Generation) dan AMD Opteron. CPU lama (seperti Intel Core 2 Duo) tidak akan dapat menjalankan WSL2, bahkan jika Platform Komputer Virtual berhasil diinstal.
Kesalahan saat mencoba memutakhirkan:
Invalid command line option: wsl --set-version Ubuntu 2
- Pastikan Anda mengaktifkan Subsistem Windows untuk Linux, dan Anda menggunakan Windows Build versi 18362 atau yang lebih baru. Untuk mengaktifkan WSL, jalankan perintah ini dalam prompt PowerShell dengan hak istimewa admin:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
.
- Pastikan Anda mengaktifkan Subsistem Windows untuk Linux, dan Anda menggunakan Windows Build versi 18362 atau yang lebih baru. Untuk mengaktifkan WSL, jalankan perintah ini dalam prompt PowerShell dengan hak istimewa admin:
Operasi yang diminta tidak dapat diselesaikan karena keterbatasan sistem disk virtual. File hard disk virtual harus tidak dikompresi dan tidak terenkripsi dan tidak boleh jarang.
- Batal pilih "Kompres konten" (serta "Enkripsi konten" jika dicentang) dengan membuka folder profil untuk distribusi Linux Anda. Ini harus terletak di folder pada sistem file Windows Anda, seperti:
%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited...
- Di profil distro Linux ini, harus ada folder LocalState. Klik kanan folder ini untuk menampilkan menu opsi. Pilih Properti > Tingkat Lanjut lalu pastikan bahwa kotak centang "Kompres konten untuk menghemat ruang disk" dan "Enkripsi konten untuk mengamankan data" tidak dipilih (tidak dicentang). Jika Anda ditanya apakah akan menerapkan ini hanya ke folder saat ini atau ke semua subfolder dan file, pilih "hanya folder ini" karena Anda hanya menghapus bendera kompres. Setelah ini,
wsl --set-version
perintah harus berfungsi.
- Batal pilih "Kompres konten" (serta "Enkripsi konten" jika dicentang) dengan membuka folder profil untuk distribusi Linux Anda. Ini harus terletak di folder pada sistem file Windows Anda, seperti:
Catatan
Dalam kasus saya, folder LocalState untuk distribusi Ubuntu 18.04 saya terletak di C:\Users<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
Periksa utas GitHub Dokumen WSL #4103 di mana masalah ini sedang dilacak untuk informasi yang diperbarui.
Istilah 'wsl' tidak dikenali sebagai nama cmdlet, fungsi, file skrip, atau program yang dapat dioperasikan.
- Pastikan komponen opsional Subsistem Windows untuk Linux diinstal. Selain itu, jika Anda menggunakan perangkat ARM64 dan menjalankan perintah ini dari PowerShell, Anda akan menerima kesalahan ini. Sebagai gantinya, jalankan
wsl.exe
dari PowerShell Core, atau Prompt Perintah.
- Pastikan komponen opsional Subsistem Windows untuk Linux diinstal. Selain itu, jika Anda menggunakan perangkat ARM64 dan menjalankan perintah ini dari PowerShell, Anda akan menerima kesalahan ini. Sebagai gantinya, jalankan
Kesalahan: Subsistem Windows untuk Linux tidak memiliki distribusi yang terinstal.
- Jika Anda menerima kesalahan ini setelah menginstal distribusi WSL:
- Jalankan distribusi setidaknya sekali sebelum memanggilnya dari baris perintah.
- Periksa apakah Anda mungkin menjalankan akun pengguna terpisah. Menjalankan akun pengguna utama Anda dengan izin yang ditinggikan (dalam mode admin) seharusnya tidak mengakibatkan kesalahan ini, tetapi Anda harus memastikan bahwa Anda tidak secara tidak sengaja menjalankan akun Administrator bawaan yang disertakan dengan Windows. Ini adalah akun pengguna terpisah dan tidak akan menampilkan distribusi WSL yang diinstal berdasarkan desain. Untuk informasi selengkapnya, lihat Mengaktifkan dan Menonaktifkan Akun Administrator Bawaan.
- WSL executable hanya diinstal ke direktori sistem asli. Saat Anda menjalankan proses 32-bit pada Windows 64-bit (atau di ARM64, kombinasi non-asli apa pun), proses non-asli yang dihosting benar-benar melihat folder System32 yang berbeda. (Satu proses 32-bit melihat pada x64 Windows disimpan pada disk di \Windows\SysWOW64.) Anda dapat mengakses sistem "asli"32 dari proses yang dihosting dengan melihat di folder virtual:
\Windows\sysnative
. Ini tidak akan benar-benar ada di disk, pikiran Anda, tetapi pemecah jalur sistem file akan menemukannya.
Kesalahan: Pembaruan ini hanya berlaku untuk komputer dengan Subsistem Windows untuk Linux.
- Untuk menginstal paket MSI pembaruan kernel Linux, WSL diperlukan dan harus diaktifkan terlebih dahulu. Jika gagal, Anda akan melihat pesan:
This update only applies to machines with the Windows Subsystem for Linux
. - Ada tiga kemungkinan alasan Anda melihat pesan ini:
Anda masih dalam versi lama Windows yang tidak mendukung WSL 2. Lihat langkah #2 untuk persyaratan versi dan tautan untuk diperbarui.
WSL tidak diaktifkan. Anda harus kembali ke langkah #1 dan memastikan bahwa fitur WSL opsional diaktifkan di komputer Anda.
Setelah Anda mengaktifkan WSL, reboot diperlukan agar berlaku, reboot komputer Anda dan coba lagi.
- Untuk menginstal paket MSI pembaruan kernel Linux, WSL diperlukan dan harus diaktifkan terlebih dahulu. Jika gagal, Anda akan melihat pesan:
Kesalahan: WSL 2 memerlukan pembaruan pada komponen kernelnya. Untuk informasi, silakan kunjungi https://aka.ms/wsl2kernel .
- Jika paket kernel Linux hilang di folder %SystemRoot%\system32\lxss\tools, Anda akan mengalami kesalahan ini. Atasi dengan menginstal paket MSI pembaruan kernel Linux di langkah #4 dari instruksi penginstalan ini. Anda mungkin perlu menghapus instalan MSI dari 'Tambahkan atau Hapus Program', dan menginstalnya lagi.
Ini kemungkinan karena komputer Anda belum mengambil backport untuk WSL 2. Cara paling sederhana untuk mengatasinya adalah dengan masuk ke Pengaturan Windows dan mengklik 'Periksa Pembaruan' untuk menginstal pembaruan terbaru pada sistem Anda. Lihat instruksi lengkap tentang mengambil backport.
Jika Anda menekan 'Periksa Pembaruan' dan masih tidak menerima pembaruan, Anda dapat menginstal KB KB4566116 secara manual.
Ini mungkin terjadi ketika pengaturan 'Bahasa Tampilan' atau 'Lokal Sistem' bukan bahasa Inggris.
wsl --set-default-version 2
Error: 0x1bc
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
Kesalahan aktual untuk 0x1bc
adalah:
WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel
Untuk informasi lebih lanjut, silakan merujuk ke masalah 5749
Server file protokol 9p menyediakan layanan di sisi Linux untuk memungkinkan Windows mengakses sistem file Linux. Jika Anda tidak dapat mengakses WSL menggunakan \\wsl$
pada Windows, itu bisa jadi karena 9P tidak dimulai dengan benar.
Untuk memeriksa hal ini, Anda dapat memeriksa log mulai menggunakan: dmesg |grep 9p
, dan ini akan menunjukkan kesalahan apa pun. Output yang berhasil terlihat seperti berikut ini:
[ 0.363323] 9p: Installing v9fs 9p2000 file system support
[ 0.363336] FS-Cache: Netfs '9p' registered for caching
[ 0.398989] 9pnet: Installing 9P2000 support
Silakan lihat utas GitHub ini untuk diskusi lebih lanjut tentang masalah ini.
Jika bahasa tampilan Anda bukan bahasa Inggris, maka ada kemungkinan Anda melihat versi teks kesalahan yang terpotong.
C:\Users\me>wsl
WSL 2
Untuk mengatasi masalah ini, silakan kunjungi https://aka.ms/wsl2kernel
dan instal kernel secara manual dengan mengikuti petunjuk di halaman dokumen tersebut.
Pengguna dapat menjalankan executable Windows seperti notepad.exe langsung dari Linux. Terkadang, Anda dapat menekan "perintah tidak ditemukan" seperti di bawah ini:
$ notepad.exe
-bash: notepad.exe: command not found
Jika tidak ada jalur Win32 di $PATH Anda, interop tidak akan menemukan .exe.
Anda dapat memverifikasinya dengan menjalankannya echo $PATH
di Linux. Diharapkan Anda akan melihat jalur Win32 (misalnya, /mnt/c/Windows) dalam output.
Jika Anda tidak dapat melihat jalur Windows, kemungkinan besar PATH Anda ditimpa oleh shell Linux Anda.
Berikut adalah contoh bahwa /etc/profile di Debian berkontribusi pada masalah:
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
Cara yang benar pada Debian adalah dengan menghapus baris di atas. Anda juga dapat menambahkan $PATH selama penugasan seperti di bawah ini, tetapi ini menyebabkan beberapa masalah lain dengan WSL dan VSCode..
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:$PATH"
fi
Untuk informasi selengkapnya, lihat masalah 5296 dan masalah 5779.
"Kesalahan: 0x80370102 Komputer virtual tidak dapat dimulai karena fitur yang diperlukan tidak diinstal."
Harap aktifkan fitur Virtual Machine Platform Windows dan pastikan virtualisasi diaktifkan di BIOS.
Jika komputer Anda adalah VM, aktifkan virtualisasi berlapis secara manual. Luncurkan powershell dengan admin, dan jalankan perintah berikut, ganti
<VMName>
dengan nama komputer virtual pada sistem host Anda (Anda dapat menemukan nama di Hyper-V Manager Anda):Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Ikuti panduan dari produsen PC Anda tentang cara mengaktifkan virtualisasi. Secara umum, ini dapat melibatkan penggunaan BIOS sistem untuk memastikan bahwa fitur-fitur ini diaktifkan pada CPU Anda. Petunjuk untuk proses ini dapat bervariasi dari komputer ke komputer, silakan lihat artikel ini dari Komputer Bleeping misalnya.
Mulai ulang komputer Anda setelah mengaktifkan
Virtual Machine Platform
komponen opsional.Pastikan peluncuran hypervisor diaktifkan dalam konfigurasi boot Anda. Anda dapat memvalidasi ini dengan menjalankan (powershell yang ditingkatkan):
bcdedit /enum | findstr -i hypervisorlaunchtype
Jika Anda melihat
hypervisorlaunchtype Off
, maka hypervisor dinonaktifkan. Untuk mengaktifkannya berjalan di powershell yang ditingkatkan:bcdedit /set hypervisorlaunchtype Auto
Selain itu, jika Anda memiliki hypervisor pihak ke-3 yang terinstal (Seperti VMware atau VirtualBox) maka pastikan Anda memilikinya pada versi terbaru yang dapat mendukung HyperV (VMware 15.5.5+ dan VirtualBox 6+) atau dimatikan.
Jika Anda menerima kesalahan ini pada Azure Virtual Machine, periksa untuk memastikan bahwa Peluncuran Tepercaya dinonaktifkan. Virtualisasi Berlapis tidak didukung pada komputer virtual Azure.
Pelajari selengkapnya tentang cara Mengonfigurasi Virtualisasi Berlapis saat menjalankan Hyper-V di Komputer Virtual.
Lingkungan Bisnis atau Perusahaan mungkin memiliki pengaturan Windows Defender Firewall yang dikonfigurasi untuk memblokir lalu lintas jaringan yang tidak sah. Jika penggabungan aturan lokal diatur ke "Tidak" maka jaringan WSL tidak akan berfungsi secara default, dan administrator Anda perlu menambahkan aturan firewall untuk mengizinkannya.
Anda dapat mengonfirmasi pengaturan penggabungan aturan lokal dengan mengikuti langkah-langkah berikut:
- Buka "Windows Defender Firewall dengan keamanan tingkat lanjut" (ini berbeda dari "Windows Defender Firewall" di Panel Kontrol)
- Klik kanan pada tab "Firewall Pertahanan Windows dengan keamanan tingkat lanjut di Komputer Lokal"
- Pilih "Properti"
- Pilih tab "Profil Publik" pada Jendela baru yang terbuka
- Pilih "Sesuaikan" di bagian "Pengaturan"
- Periksa jendela "Sesuaikan Pengaturan untuk Profil Publik" yang terbuka untuk melihat apakah "Penggabungan Aturan" diatur ke "Tidak". Ini akan memblokir akses ke WSL.
Anda dapat menemukan instruksi tentang cara mengubah pengaturan Firewall ini di Mengonfigurasi firewall Hyper-V.
Jika setelah menyambungkan ke VPN di Windows, bash kehilangan konektivitas jaringan, coba solusi ini dari dalam bash. Solusi ini akan memungkinkan Anda untuk mengambil alih resolusi DNS secara manual melalui /etc/resolv.conf
.
- Catat server DNS VPN dari tindakan
ipconfig.exe /all
- Buat salinan resolv.conf yang ada
sudo cp /etc/resolv.conf /etc/resolv.conf.new
- Batalkan tautan resolv.conf saat ini
sudo unlink /etc/resolv.conf
sudo mv /etc/resolv.conf.new /etc/resolv.conf
- Edit
/etc/wsl.conf
dan tambahkan isi ini ke file. (Info lebih lanjut tentang pengaturan ini dapat ditemukan di Konfigurasi pengaturan tingkat lanjut)
[network]
generateResolvConf=false
- Buka
/etc/resolv.conf
dan
a. Menghapus baris pertama dari file yang memiliki komentar yang menjelaskan pembuatan otomatis
b. Tambahkan entri DNS dari (1) di atas sebagai entri pertama dalam daftar server DNS.
c. Tutup file.
Setelah Anda memutuskan sambungan VPN, Anda harus mengembalikan perubahan ke /etc/resolv.conf
. Untuk melakukan ini, lakukan:
cd /etc
sudo mv resolv.conf resolv.conf.new
sudo ln -s ../run/resolvconf/resolv.conf resolv.conf
VPN Cisco AnyConnect memodifikasi rute dengan cara yang mencegah NAT berfungsi. Ada solusi khusus untuk WSL 2: Lihat Panduan Administrator Klien Mobilitas Aman Cisco AnyConnect, Rilis 4.10 - Memecahkan Masalah AnyConnect.
Mode jaringan cermin saat ini adalah pengaturan eksperimental dalam Konfigurasi WSL. Arsitektur jaringan NAT tradisional WSL dapat diperbarui ke mode jaringan yang sama sekali baru yang disebut "Mode jaringan cermin". Ketika eksperimental networkingMode
diatur ke mirrored
, antarmuka jaringan yang Anda miliki di Windows dicerminkan ke Linux untuk meningkatkan kompatibilitas. Pelajari selengkapnya di blog Baris Perintah: Pembaruan WSL September 2023.
Beberapa VPN telah diuji dan dikonfirmasi tidak kompatibel dengan WSL, termasuk:
- "Bitdefender" versi 26.0.2.1
- "OpenVPN" versi 2.6.501
- "Mcafee Safe Connect" versi 2.16.1.124
Pencerminan proksi HTTP/S dapat dikonfigurasi menggunakan autoProxy
pengaturan di bagian eksperimental file Konfigurasi WSL. Saat menerapkan pengaturan ini, perhatikan pertimbangan ini:
- Proksi PAC: WSL akan mengonfigurasi pengaturan di Linux dengan Mengatur variabel lingkungan "WSL_PAC_URL". Linux tidak mendukung proksi PAC secara default.
- Interaksi dengan WSLENV: Variabel lingkungan yang ditentukan pengguna lebih diutamakan daripada yang ditentukan oleh fitur ini.
Saat diaktifkan, berikut ini berlaku untuk pengaturan proksi pada distribusi Linux Anda:
- Variabel lingkungan Linux,
HTTP_PROXY
, diatur ke satu atau beberapa proksi HTTP yang ditemukan diinstal dalam konfigurasi proksi HTTP Windows. - Variabel lingkungan Linux,
HTTPS_PROXY
, diatur ke satu atau beberapa proksi HTTPS yang ditemukan yang diinstal dalam konfigurasi proksi HTTP Windows. - Variabel lingkungan Linux,
NO_PROXY
, diatur untuk melewati proksi HTTP/S apa pun yang ditemukan di target konfigurasi Windows. - Setiap variabel lingkungan, kecuali
WSL_PAC_URL
, diatur ke huruf kecil dan huruf besar. Misalnya:HTTP_PROXY
danhttp_proxy
.
Ada masalah yang diketahui yang disebabkan oleh konfigurasi ZScaler, di mana ZScaler berulang kali mengaktifkan dan menonaktifkan konfigurasi proksi Windows, yang mengarah ke WSL berulang kali menunjukkan pemberitahuan "Perubahan proksi Http telah terdeteksi pada host".
Pelajari selengkapnya di blog Baris Perintah: Pembaruan WSL September 2023.
Ketika WSL tidak dapat tersambung ke internet, mungkin karena panggilan DNS ke host Windows diblokir. Ini karena paket jaringan untuk DNS yang dikirim oleh komputer virtual WSL ke host Windows diblokir oleh konfigurasi jaringan yang ada. Penerowongan DNS memperbaiki ini dengan menggunakan fitur virtualisasi untuk berkomunikasi dengan Windows secara langsung, memungkinkan nama DNS diselesaikan tanpa mengirim paket jaringan. Fitur ini harus meningkatkan kompatibilitas jaringan dan memungkinkan Anda untuk mendapatkan konektivitas internet yang lebih baik meskipun Anda memiliki VPN, penyiapan firewall tertentu, atau konfigurasi jaringan lainnya.
Penerowongan DNS dapat dikonfigurasi menggunakan dnsTunneling
pengaturan di bagian eksperimental file Konfigurasi WSL. Saat menerapkan pengaturan ini, perhatikan pertimbangan ini:
- Jika Anda menggunakan VPN dengan WSL, aktifkan penerowongan DNS. Banyak VPN menggunakan kebijakan NRPT, yang hanya diterapkan ke kueri DNS WSL saat penerowongan DNS diaktifkan.
- File
/etc/resolv.conf
dalam distribusi Linux Anda memiliki batasan maksimum 3 server DNS, sementara Windows dapat menggunakan lebih dari 3 server DNS. Menggunakan penerowongan DNS menghapus batasan ini - semua server DNS Windows sekarang dapat digunakan oleh Linux. - WSL akan menggunakan akhiran DNS Windows dalam urutan berikut (mirip dengan urutan yang digunakan oleh klien DNS Windows):
- Akhiran DNS global
- Akhiran DNS tambahan
- Akhiran DNS per antarmuka
- Jika enkripsi DNS (DoH, DoT) diaktifkan di Windows, enkripsi akan diterapkan ke kueri DNS dari WSL. Jika pengguna ingin mengaktifkan DoH, DoT di dalam Linux, mereka perlu menonaktifkan penerowongan DNS.
- Kueri DNS dari kontainer Docker yang dikelola oleh Docker Desktop akan melewati penerowongan DNS. Docker Desktop memiliki caranya sendiri (berbeda dari penerowongan DNS) menerapkan pengaturan dan kebijakan DNS host ke kueri DNS dari kontainer Docker.
- Agar penerowongan DNS berhasil diaktifkan, opsi generateResolvConf dalam file wsl.conf tidak boleh dinonaktifkan.
- Ketika penerowongan DNS diaktifkan, opsi generateHosts dalam file wsl.conf diabaikan (file host DNS Windows tidak disalin di file Linux /etc/hosts). Kebijakan dalam file host Windows akan diterapkan ke kueri DNS dari Linux, tanpa perlu file disalin di Linux.
Pelajari selengkapnya di blog Baris Perintah: Pembaruan WSL September 2023.
Masalah dengan mengarahkan lalu lintas masuk yang diterima oleh host Windows ke Komputer Virtual WSL
Saat menggunakan mode jaringan Mirrored (eksperimental networkingMode
diatur ke mirrored
), beberapa lalu lintas masuk yang diterima oleh host Windows tidak akan pernah diarahkan ke VM Linux. Lalu lintas ini adalah sebagai berikut:
- Port UDP 68 (DHCP)
- Port TCP 135 (resolusi titik akhir DCE)
- Port TCP 1900 (UPnP)
- Port TCP 2869 (SSDP)
- Port TCP 5004 (RTP)
- Port TCP 3702 (WSD)
- Port TCP 5357 (WSD)
- Port TCP 5358 (WSD)
WSL akan secara otomatis mengonfigurasi pengaturan jaringan Linux tertentu saat menggunakan mode jaringan cermin. Konfigurasi pengguna apa pun dari pengaturan ini saat menggunakan mode jaringan cermin tidak didukung. Berikut adalah daftar pengaturan yang akan dikonfigurasi WSL:
Nama Pengaturan | Nilai |
---|---|
https://sysctl-explorer.net/net/ipv4/accept_local/ | Diaktifkan (1) |
https://sysctl-explorer.net/net/ipv4/route_localnet/ | Diaktifkan (1) |
https://sysctl-explorer.net/net/ipv4/rp_filter/ | Dinonaktifkan (0) |
https://sysctl-explorer.net/net/ipv6/accept_ra/ | Dinonaktifkan (0) |
https://sysctl-explorer.net/net/ipv6/autoconf/ | Dinonaktifkan (0) |
https://sysctl-explorer.net/net/ipv6/use_tempaddr/ | Dinonaktifkan (0) |
addr_gen_mode | Dinonaktifkan (0) |
disable_ipv6 | Dinonaktifkan (0) |
https://sysctl-explorer.net/net/ipv4/arp_filter/ | Diaktifkan (1) |
Masalah kontainer Docker di WSL2 dengan mode jaringan Cermin diaktifkan saat berjalan di bawah namespace jaringan default
Ada masalah yang diketahui di mana kontainer Docker Desktop dengan port yang diterbitkan (docker run –publish/-p) akan gagal dibuat. Tim WSL bekerja sama dengan tim Docker Desktop untuk mengatasi masalah ini. Untuk mengatasi masalah ini, gunakan namespace jaringan host di kontainer Docker. Atur jenis jaringan melalui opsi "--network host" yang digunakan dalam perintah "docker run". Solusi alternatif adalah mencantumkan nomor port yang diterbitkan di ignoredPorts
pengaturan bagian eksperimental dalam file Konfigurasi WSL.
Ada masalah yang diketahui dengan kontainer Docker yang menjalankan layanan Pengelola Jaringan. Gejala termasuk kegagalan ketika mencoba membuat koneksi loopback ke host. Disarankan untuk menghentikan layanan Pengelola Jaringan agar jaringan WSL dikonfigurasi dengan benar.
sudo systemctl disable network-manager.service
Untuk mengatasi nama host ke alamat IP dalam jaringan lokal tanpa perlu server DNS konvensional, nama .local sering digunakan. Hal ini dicapai melalui protokol mDNS (Multicast DNS), yang bergantung pada lalu lintas multicast untuk berfungsi.
networkingMode diatur ke NAT:
Saat ini, fitur ini tidak didukung ketika penerowongan DNS diaktifkan. Untuk mengaktifkan resolusi nama .local, kami merekomendasikan solusi berikut:
- Nonaktifkan penerowongan DNS.
- Gunakan mode jaringan cermin.
networkingMode diatur ke Mirrored:
Catatan: Anda harus berada di WSL build 2.3.17 atau yang lebih tinggi untuk memiliki fungsionalitas di bawah ini.
Karena mode Mirrored mendukung lalu lintas multicast, protokol mDNS (Multicast DNS) dapat digunakan untuk mengatasi nama .local. Linux harus dikonfigurasi untuk mendukung mDNS, karena tidak melakukannya secara default. Salah satu cara untuk mengonfigurasinya adalah dengan menggunakan dua langkah berikut:
- Instal paket "libnss-mdns"
sudo apt-get install libnss-mdns
*Paket "libnss-mdns" adalah plugin untuk fungsionalitas GNU Name Service Switch (NSS) dari Pustaka C GNU (glibc) yang menyediakan resolusi nama host melalui Multicast DNS (mDNS). Paket ini secara efektif memungkinkan program Unix/Linux umum untuk menyelesaikan nama di domain mDNS ad-hoc .local.
- Konfigurasikan
/etc/nsswitch.conf
file untuk mengaktifkan pengaturan "mdns_minimal" di bagian "host". Contoh konten file:
cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat systemd
group: compat systemd
shadow: compat
gshadow: files
hosts: files mdns_minimal [NOTFOUND=return] dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Bergantung pada konfigurasi dalam file .wslconfig, WSL akan memiliki akhiran DNS wrt perilaku berikut:
Ketika networkingMode diatur ke NAT:
Kasus 1) Secara default tidak ada akhiran DNS yang dikonfigurasi di Linux
Kasus 2) Jika penerowongan DNS diaktifkan (dnsTunneling diatur ke true di .wslconfig) Semua akhiran DNS Windows dikonfigurasi di Linux, dalam pengaturan "pencarian" dari /etc/resolv.conf
Akhiran dikonfigurasi dalam /etc/resolv.conf dalam urutan berikut, mirip dengan urutan di mana klien DNS Windows mencoba akhiran saat menyelesaikan nama: akhiran DNS global terlebih dahulu, lalu akhiran DNS tambahan, lalu akhiran DNS per antarmuka.
Ketika ada perubahan dalam akhiran DNS Windows, perubahan tersebut akan secara otomatis tercermin di Linux
Kasus 3) Jika penerowongan DNS dinonaktifkan dan proksi DNS SharedAccess dinonaktifkan (dnsTunneling diatur ke false dan dnsProxy diatur ke false di .wslconfig) Akhiran DNS tunggal dikonfigurasi di Linux, dalam pengaturan "domain" dari /etc/resolv.conf
Ketika ada perubahan pada akhiran DNS Windows, perubahan tersebut tidak tercermin di Linux
Akhiran DNS tunggal yang dikonfigurasi di Linux dipilih dari akhiran DNS per antarmuka (akhiran global dan tambahan diabaikan)
jika Windows memiliki beberapa antarmuka, heuristik digunakan untuk memilih akhiran DNS tunggal yang akan dikonfigurasi di Linux. Misalnya jika ada antarmuka VPN di Windows, akhiran dipilih dari antarmuka tersebut. Jika tidak ada antarmuka VPN yang ada, akhiran dipilih dari antarmuka yang kemungkinan besar akan memberikan konektivitas Internet.
Ketika networkingMode diatur ke Mirrored:
Semua akhiran DNS Windows dikonfigurasi di Linux, dalam pengaturan "pencarian" /etc/resolv.conf
Akhiran dikonfigurasi dalam /etc/resolv.conf dalam urutan yang sama seperti dalam kasus 2) dari mode NAT
Ketika ada perubahan dalam akhiran DNS Windows, perubahan tersebut akan secara otomatis tercermin di Linux
Catatan: Akhiran DNS tambahan dapat dikonfigurasi di Windows menggunakan SetInterfaceDnsSettings - Aplikasi Win32 | Microsoft Learn, dengan bendera DNS_SETTING_SUPPLEMENTAL_SEARCH_LIST diatur dalam parameter Pengaturan
Konfigurasi DNS default saat WSL memulai kontainer dalam mode NAT adalah memiliki perangkat NAT pada Windows Host berfungsi sebagai 'server' DNS untuk kontainer WSL. Ketika kueri DNS dikirim dari kontainer WSL ke perangkat NAT tersebut di Windows Host, paket DNS diteruskan dari perangkat NAT ke layanan akses bersama di Host; respons dikirim ke arah terbalik kembali ke kontainer WSL. Proses penerusan paket ini ke akses bersama memerlukan aturan Firewall untuk memungkinkan paket DNS masuk tersebut, yang dibuat oleh layanan HNS ketika WSL awalnya meminta HNS untuk membuat jaringan virtual NAT untuk kontainer WSL-nya.
Karena NAT ini - desain akses bersama, ada beberapa konfigurasi yang diketahui yang dapat merusak resolusi nama dari WSL.
1. Perusahaan dapat mendorong kebijakan yang tidak mengizinkan aturan Firewall yang ditentukan secara lokal, hanya mengizinkan aturan yang ditentukan kebijakan Perusahaan.
Ketika ini diatur oleh Enterprise, aturan Firewall yang dibuat HNS diabaikan, karena ini adalah aturan yang ditentukan secara lokal. Agar konfigurasi ini berfungsi, Enterprise harus membuat aturan Firewall untuk mengizinkan port UDP 53 ke layanan akses bersama, atau WSL dapat diatur untuk menggunakan Penerowongan DNS. Seseorang dapat melihat apakah ini dikonfigurasi untuk tidak mengizinkan aturan Firewall yang ditentukan secara lokal dengan menjalankan yang berikut ini. Perhatikan bahwa ini akan menampilkan pengaturan untuk semua 3 profil: Domain, Privat, dan Publik. Jika diatur pada profil apa pun, maka paket akan diblokir jika WSL vNIC ditetapkan profil tersebut (defaultnya adalah Publik). Ini hanya cuplikan profil Firewall pertama yang dikembalikan di Powershell:
PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore
Name : Domain
Enabled : True
DefaultInboundAction : Block
DefaultOutboundAction : Allow
AllowInboundRules : True
AllowLocalFirewallRules : False
AllowLocalFirewallRules:False means the locally defined firewall rules, like that by HNS, will not be applied or used.
2. Dan Enterprise dapat mendorong kebijakan grup dan pengaturan kebijakan MDM yang memblokir semua aturan masuk.
Pengaturan ini mengambil alih aturan Firewall Izinkan Masuk apa pun. Pengaturan ini akan memblokir aturan Firewall UDP yang dibuat HNS, dan dengan demikian akan mencegah WSL menyelesaikan nama. Agar konfigurasi ini berfungsi, WSL harus diatur untuk menggunakan Penerowongan DNS. Pengaturan ini akan selalu memblokir proksi DNS NAT.
Dari Kebijakan Grup:
Konfigurasi Komputer \ Templat Administratif \ Jaringan \ Koneksi Jaringan \ Windows Defender Firewall \ Profil Domain | Profil Standar
"Windows Defender Firewall: Jangan izinkan pengecualian" - Diaktifkan
Dari Kebijakan MDM:
./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/Shielded
./Vendor/MSFT/Firewall/MdmStore/DomainProfile/Shielded
./Vendor/MSFT/Firewall/MdmStore/PublicProfile/Shielded
Seseorang dapat melihat apakah ini dikonfigurasi untuk tidak mengizinkan aturan Firewall masuk dengan menjalankan yang berikut ini (lihat peringatan di atas pada Profil Firewall). Ini hanya cuplikan profil Firewall pertama yang dikembalikan di Powershell:
PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore
Name : Domain
Enabled : True
DefaultInboundAction : Block
DefaultOutboundAction : Allow
AllowInboundRules : False
AllowInboundRules: False means that no inbound Firewall rules will be applied.
3. Pengguna melewati Keamanan Windows mengatur aplikasi dan memeriksa kontrol untuk "Memblokir semua koneksi masuk, termasuk yang ada dalam daftar aplikasi yang diizinkan."
Windows mendukung keikutsertaan pengguna untuk pengaturan yang sama yang dapat diterapkan oleh Enterprise yang dirujuk pada #2 di atas. Pengguna dapat membuka halaman pengaturan "Keamanan Windows", memilih opsi "Firewall & perlindungan jaringan", memilih Profil Firewall yang ingin mereka konfigurasi (Domain, Privat, atau Publik), dan di bagian "Koneksi masuk" periksa kontrol berlabel "Blokir semua koneksi masuk, termasuk yang ada dalam daftar aplikasi yang diizinkan."
Jika ini diatur untuk profil Publik (ini adalah profil default untuk WSL vNIC), aturan Firewall yang dibuat oleh HNS untuk memungkinkan paket UDP untuk akses bersama akan diblokir.
Ini harus tidak dicentang agar konfigurasi proksi DNS NAT berfungsi dari WSL, atau WSL dapat diatur untuk menggunakan Penerowongan DNS.
4. Aturan HNS Firewall untuk memungkinkan paket DNS untuk akses bersama dapat menjadi tidak valid, mereferensikan pengidentifikasi antarmuka WSL sebelumnya. Ini adalah kelemahan dalam HNS yang telah diperbaiki dengan rilis Windows 11 terbaru. Pada rilis sebelumnya, jika ini terjadi, itu tidak mudah ditemukan, tetapi memiliki pekerjaan sederhana:
Hentikan WSL
wsl.exe –shutdown
Hapus aturan HNS Firewall lama. Perintah Powershell ini harus berfungsi dalam banyak kasus:
Get-NetFirewallRule -Name "HNS*" | Get-NetFirewallPortFilter | where Protocol -eq UDP | where LocalPort -eq 53 | Remove-NetFirewallRule
Hapus semua titik akhir HNS. Catatan: jika HNS digunakan untuk mengelola kontainer lain, seperti MDAG atau Kotak Pasir Windows, itu juga harus dihentikan.
hnsdiag.exe delete all
Reboot atau mulai ulang layanan HNS
Restart-Service hns
Ketika WSL dimulai ulang, HNS akan membuat aturan Firewall baru, dengan benar menargetkan antarmuka WSL.
Jika Anda tidak memiliki akses jaringan, itu mungkin karena kesalahan konfigurasi. Silakan lihat apakah driver FSE berjalan: 'sc queryex FSE'. Jika itu tidak menunjukkan FSE berjalan, silakan periksa apakah nilai registri PortTrackerEnabledMode keluar di bawah kunci registri ini: kueri reg HKLM\System\CurrentControlSet\Services\Tcpip\Parameters. Jika FSE tidak berjalan atau diinstal, dan PortTrackerEnabledMode ada, hapus nilai registri tersebut dan boot ulang
Adaptor hantu, atau perangkat Phantom Plug and Play (PnP), lihat komponen perangkat keras yang muncul di sistem Anda tetapi tidak terhubung secara fisik. Perangkat "hantu" ini dapat menyebabkan kebingungan dan kekacauan dalam pengaturan sistem Anda. Jika Anda melihat adaptor hantu saat menjalankan WSL di Komputer Virtual (VM), ikuti langkah-langkah manual ini untuk menemukan dan menghapus perangkat Phantom PnP ini. Microsoft sedang mengerjakan solusi otomatis yang tidak akan memerlukan intervensi manual. Informasi lebih lanjut akan segera hadir.
- Buka Manajer Perangkat
- Tampilkan > Perlihatkan perangkat tersembunyi
- Buka adaptor Jaringan
- Klik kanan pada adaptor jaringan Ghosted dan pilih Hapus Instalan Perangkat
Ikuti instruksi untuk Mengumpulkan log WSL di repositori WSL di GitHub untuk mengumpulkan log terperinci dan mengajukan masalah di GitHub kami.
Ada dua komponen Subsistem Windows untuk Linux yang dapat memerlukan pembaruan.
Untuk memperbarui Subsistem Windows untuk Linux itu sendiri, gunakan perintah
wsl --update
di PowerShell atau CMD.Untuk memperbarui biner pengguna distribusi Linux tertentu, gunakan perintah:
apt-get update | apt-get upgrade
dalam distribusi Linux yang ingin Anda perbarui.
Beberapa paket menggunakan fitur yang belum kami terapkan. udev
, misalnya, belum didukung dan menyebabkan beberapa apt-get upgrade
kesalahan.
Untuk memperbaiki masalah yang terkait dengan udev
, ikuti langkah-langkah berikut:
Tulis yang berikut ini dan
/usr/sbin/policy-rc.d
simpan perubahan Anda.#!/bin/sh exit 101
Tambahkan izin eksekusi ke
/usr/sbin/policy-rc.d
:chmod +x /usr/sbin/policy-rc.d
Jalankan perintah berikut:
dpkg-divert --local --rename --add /sbin/initctl ln -s /bin/true /sbin/initctl
Ini ada hubungannya dengan fakta bahwa kami tidak mendukung konsol warisan. Untuk menonaktifkan konsol warisan:
- Buka cmd.exe
- Klik kanan bilah judul -> Properti -> Hapus centang Gunakan konsol warisan
- Klik OK
Fitur Subsistem Windows untuk Linux dapat dinonaktifkan selama pembaruan Windows. Jika ini terjadi, fitur Windows harus diaktifkan kembali. Instruksi untuk mengaktifkan Subsistem Windows untuk Linux dapat ditemukan di Panduan Penginstalan Manual.
Penginstalan WSL akan mencoba mengubah lokal Ubuntu secara otomatis agar sesuai dengan lokal penginstalan Windows Anda. Jika Anda tidak ingin perilaku ini, Anda dapat menjalankan perintah ini untuk mengubah lokal Ubuntu setelah penginstalan selesai. Anda harus menjalankan kembali bash.exe agar perubahan ini berlaku.
Contoh di bawah ini berubah menjadi lokal menjadi en-US
:
sudo update-locale LANG=en_US.UTF8
%windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux
Hapus folder.
Catatan: Jangan lakukan ini jika fitur opsional Anda sepenuhnya terinstal dan berfungsi.- Aktifkan fitur opsional WSL (jika belum)
- Reboot
- lxrun /uninstall /full
- Menginstal bash
Beberapa pengguna telah melaporkan masalah dengan aplikasi firewall tertentu yang memblokir akses internet di WSL. Firewall yang dilaporkan adalah:
- Kaspersky
- Rata-rata
- Avast
- Perlindungan Titik Akhir Symantec
Dalam beberapa kasus menonaktifkan firewall memungkinkan akses. Dalam beberapa kasus, hanya menginstal firewall untuk memblokir akses.
Jika Anda menggunakan Microsoft Defender Firewall, hapus centang "Memblokir semua koneksi masuk, termasuk yang ada dalam daftar aplikasi yang diizinkan." memungkinkan akses.
Untuk Windows Anniversary Update, versi 1607, hak istimewa administrator di Windows diperlukan untuk menjalankan ping di WSL. Untuk menjalankan ping, jalankan Bash di Ubuntu di Windows sebagai administrator, atau jalankan bash.exe dari perintah CMD/PowerShell dengan hak istimewa administrator.
Untuk versi Windows yang lebih baru, Build 14926+, hak istimewa administrator tidak lagi diperlukan.
Jika saat bekerja dengan bash, Anda menemukan bahwa bash digantung (atau di-deadlock) dan tidak menanggapi input, bantu kami mendiagnosis masalah dengan mengumpulkan dan melaporkan cadangan memori. Perhatikan bahwa langkah-langkah ini akan merusak sistem Anda. Jangan lakukan ini jika Anda tidak nyaman dengan itu atau simpan pekerjaan Anda sebelum melakukan ini.
Untuk mengumpulkan cadangan memori
Ubah jenis cadangan memori menjadi "dump memori lengkap". Saat mengubah jenis cadangan, catat jenis Anda saat ini.
Gunakan langkah-langkah untuk mengonfigurasi crash menggunakan kontrol keyboard.
Repro hang atau kebuntuan.
Crash sistem menggunakan urutan kunci dari (2).
Sistem akan crash dan mengumpulkan cadangan memori.
Setelah sistem dimulai ulang, laporkan memory.dmp ke secure@microsoft.com. Lokasi default file cadangan adalah %SystemRoot%\memory.dmp atau C:\Windows\memory.dmp jika C: adalah drive sistem. Dalam email, perhatikan bahwa cadangan adalah untuk tim WSL atau Bash di Windows.
Pulihkan jenis cadangan memori ke pengaturan asli.
Untuk menemukan arsitektur PC dan nomor build Windows Anda, buka
Pengaturan>Sistem>Tentang
Cari bidang Build OS dan Jenis Sistem.
Untuk menemukan nomor build Windows Server Anda, jalankan yang berikut ini di PowerShell:
systeminfo | Select-String "^OS Name","^OS Version"
Anda dapat mengonfirmasi bahwa Subsistem Windows untuk Linux diaktifkan dengan menjalankan yang berikut ini di jendela PowerShell yang ditingkatkan:
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Mencoba menyambungkan server SSH Anda gagal dengan kesalahan berikut: "Koneksi ditutup oleh port 127.0.0.1 22".
Pastikan Server OpenSSH Anda berjalan:
sudo service ssh status
dan Anda telah mengikuti tutorial ini: https://ubuntu.com/server/docs/service-openssh
Hentikan layanan sshd dan mulai sshd dalam mode debug:
sudo service ssh stop sudo /usr/sbin/sshd -d
Periksa log startup dan pastikan HostKeys tersedia dan Anda tidak melihat pesan log seperti:
debug1: sshd version OpenSSH_7.2, OpenSSL 1.0.2g 1 Mar 2016 debug1: key_load_private: incorrect passphrase supplied to decrypt private key debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_rsa_key debug1: key_load_private: No such file or directory debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_dsa_key debug1: key_load_private: No such file or directory debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_ecdsa_key debug1: key_load_private: No such file or directory debug1: key_load_public: No such file or directory Could not load host key: /etc/ssh/ssh_host_ed25519_key
Jika Anda melihat pesan tersebut dan kunci hilang di bawah /etc/ssh/
, Anda harus meregenerasi kunci atau hanya membersihkan&menginstal openssh-server:
sudo apt-get purge openssh-server
sudo apt-get install openssh-server
Kesalahan ini terkait dengan berada dalam status penginstalan yang buruk. Silakan selesaikan langkah-langkah berikut untuk mencoba dan memperbaiki masalah ini:
Jika Anda menjalankan perintah aktifkan fitur WSL dari PowerShell, coba gunakan GUI sebagai gantinya dengan membuka menu mulai, cari 'Aktifkan atau nonaktifkan fitur Windows' lalu dalam daftar pilih 'Subsistem Windows untuk Linux' yang akan menginstal komponen opsional.
Perbarui versi Windows Anda dengan membuka Pengaturan, Pembaruan, dan mengklik 'Periksa Pembaruan'
Jika keduanya gagal dan Anda perlu mengakses WSL, pertimbangkan untuk meningkatkan versi dengan menginstal ulang Windows menggunakan media penginstalan dan memilih 'Pertahankan Semuanya' untuk memastikan aplikasi dan file Anda dipertahankan. Anda dapat menemukan instruksi tentang cara melakukannya di halaman Instal ulang Windows 10.
Jika Anda melihat kesalahan ini:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/user/.ssh/private-key.pem' are too open.
Untuk memperbaikinya, tambahkan yang berikut ini ke /etc/wsl.conf
file:
[automount]
enabled = true
options = metadata,uid=1000,gid=1000,umask=0022
Harap dicatat bahwa menambahkan perintah ini akan mencakup metadata dan mengubah izin file pada file Windows yang terlihat dari WSL. Silakan lihat Izin Sistem File untuk informasi lebih lanjut.
Jika Anda menggunakan openssh-server di Windows dan mencoba mengakses WSL dari jarak jauh, Anda banyak melihat kesalahan ini:
The file cannot be accessed by the system.
Ini adalah masalah yang diketahui, saat menggunakan WSL versi Store. Anda dapat mengatasinya hari ini dengan menggunakan WSL 1, atau dengan menggunakan WSL versi dalam Windows. Lihat https://aka.ms/wslstoreinfo untuk informasi selengkapnya.
Beberapa distribusi yang tersedia di Microsoft Store belum sepenuhnya kompatibel untuk menjalankan perintah Windows di luar kotak. Jika Anda mendapatkan kesalahan -bash: powershell.exe: command not found
saat menjalankan powershell.exe /c start .
atau perintah Windows lainnya, Anda dapat mengatasinya dengan mengikuti langkah-langkah berikut:
- Dalam eksekusi
echo $PATH
distribusi WSL Anda .
Jika tidak termasuk:/mnt/c/Windows/system32
ada sesuatu yang mendefiniskan ulang variabel PATH standar. - Periksa pengaturan profil dengan
cat /etc/profile
.
Jika berisi penetapan variabel PATH, edit file untuk mengomentari blok penetapan PATH dengan # karakter. - Periksa apakah wsl.conf ada
cat /etc/wsl.conf
dan pastikan tidak berisiappendWindowsPath=false
, jika tidak, komentari. - Mulai ulang distribusi dengan mengetik
wsl -t
diikuti dengan nama distribusi atau jalankanwsl --shutdown
baik dalam cmd atau PowerShell.
Kami menyadari adanya masalah yang memengaruhi pengguna di mana mereka tidak dapat melakukan boot setelah menginstal WSL 2. Meskipun kami sepenuhnya mendiagnosis masalah tersebut, pengguna telah melaporkan bahwa mengubah ukuran buffer atau menginstal driver yang tepat dapat membantu mengatasi hal ini. Silakan lihat masalah GitHub ini untuk melihat pembaruan terbaru tentang masalah ini.
Berbagi Koneksi Internet (ICS) adalah komponen yang diperlukan dari WSL 2. Layanan ICS digunakan oleh Host Network Service (HNS) untuk membuat jaringan virtual dasar yang diandalkan WSL 2 untuk NAT, DNS, DHCP, dan berbagi koneksi host.
Menonaktifkan layanan ICS (SharedAccess) atau menonaktifkan ICS melalui kebijakan grup akan mencegah jaringan HNS WSL dibuat. Ini akan mengakibatkan kegagalan saat membuat gambar WSL versi 2 baru, dan kesalahan berikut saat mencoba mengonversi gambar versi 1 ke versi 2.
There are no more endpoints available from the endpoint mapper.
Sistem yang memerlukan WSL 2 harus meninggalkan layanan ICS (SharedAccess) dalam status mulai default, Manual (Mulai Pemicu), dan kebijakan apa pun yang menonaktifkan ICS harus ditimpa atau dihapus. Meskipun menonaktifkan layanan ICS akan merusak WSL 2, dan kami tidak menyarankan untuk menonaktifkan ICS, bagian ICS dapat dinonaktifkan menggunakan instruksi ini
Ada beberapa perbedaan yang perlu diperhatikan jika Anda menjalankan versi Windows dan WSL yang lebih lama, seperti Windows 10 Creators Update (Okt 2017, Build 16299) atau Anniversary Update (Agustus 2016, Build 14393). Kami menyarankan agar Anda memperbarui ke versi Windows terbaru, tetapi jika itu tidak memungkinkan, kami telah menguraikan beberapa perbedaan di bawah ini.
Perbedaan perintah interoperabilitas:
bash.exe
telah diganti denganwsl.exe
. Perintah Linux dapat dijalankan dari Prompt Perintah Windows atau dari PowerShell, tetapi untuk versi Windows awal, Anda mungkin perlu menggunakan perintah .bash
Misalnya:C:\temp> bash -c "ls -la"
. Perintah WSL yang diteruskan diteruskanbash -c
ke proses WSL tanpa modifikasi. Jalur file harus ditentukan dalam format WSL dan perawatan harus diambil untuk menghindari karakter yang relevan. Sebagai contoh:C:\temp> bash -c "ls -la /proc/cpuinfo"
atauC:\temp> bash -c "ls -la \"/mnt/c/Program Files\""
.- Untuk melihat perintah apa yang tersedia untuk distribusi tertentu, jalankan
[distro.exe] /?
. Misalnya, dengan Ubuntu:C:\> ubuntu.exe /?
. - Jalur Windows disertakan dalam WSL
$PATH
. - Saat memanggil alat Windows dari distribusi WSL di versi Windows 10 yang lebih lama, Anda harus menentukan jalur direktori. Misalnya, untuk memanggil aplikasi Windows Notepad dari baris perintah WSL Anda, masukkan:
/mnt/c/Windows/System32/notepad.exe
- Untuk mengubah pengguna default untuk
root
menggunakan perintah ini di PowerShell:C:\> lxrun /setdefaultuser root
lalu jalankan Bash.exe untuk masuk:C:\> bash.exe
. Atur ulang kata sandi Anda menggunakan perintah kata sandi distribusi:$ passwd username
lalu tutup baris perintah Linux:$ exit
. Dari prompt perintah Windows atau Powershell, reset pengguna default Anda kembali ke akun pengguna Linux normal Anda:C:\> lxrun.exe /setdefaultuser username
.
Jika Anda awalnya menginstal WSL pada versi Windows 10 sebelum pembaruan Pembuat (Okt 2017, Build 16299), kami sarankan Anda memigrasikan file, data, dll yang diperlukan dari distribusi Linux lama yang Anda instal, ke distribusi yang lebih baru yang diinstal melalui Microsoft Store. Untuk menghapus distribusi warisan dari komputer Anda, jalankan hal berikut dari Baris Perintah atau instans PowerShell: wsl --unregister Legacy
. Anda juga memiliki opsi untuk menghapus distribusi lama secara manual dengan menghapus %localappdata%\lxss\
folder (dan semua sub-kontennya) menggunakan Windows File Explorer atau dengan PowerShell: rm -Recurse $env:localappdata/lxss/
.
Umpan balik Windows Subsystem for Linux
Windows Subsystem for Linux adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: