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.
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.
Mengajukan masalah, laporan bug, permintaan fitur
Fitur 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 "state: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 hijau "New issue" lalu memilih "WSL - Bug Report".
Anda perlu memberikan informasi berikut:
- Judul masalah
- Versi Windows: Jalankan
cmd.exe /c veruntuk mendapatkan build Windows tempat Anda berada. - Versi WSL: Jika Anda menjalankan Subsistem Windows untuk Linux dari Microsoft Store, jalankan
wsl.exe -v. - Apakah Anda menggunakan WSL 1 atau WSL 2: Beri tahu kami apakah masalahnya ada di WSL 2 dan/atau WSL 1. Anda dapat mengetahuinya dengan menjalankan
wsl.exe -l -v. - Versi Kernel: Beri tahu kami versi kernel Linux apa yang Anda gunakan, atau jika Anda menggunakan kernel kustom. Anda dapat menjalankan
wsl.exe --statusjika perintah tersebut tersedia untuk Anda, atau dengan menjalankancat /proc/versiondistro Anda. - Versi Distro: Harap beri tahu kami distro apa yang Anda gunakan (jika berlaku). Anda bisa mendapatkan informasi tambahan tentang versi jika memungkinkan, misalnya di Debian / Ubuntu,
run lsb_release -r. - Perangkat Lunak Lain: Jika Anda melaporkan bug yang melibatkan interaksi WSL dengan aplikasi lain, beri tahu kami. Aplikasi apa? Versi apa?
- Langkah-langkah Repro: Harap cantumkan langkah-langkah untuk mereprodusi bug Anda.
- Perilaku yang Diharapkan: Apa yang Anda harapkan untuk dilihat? Sertakan contoh atau tautan dokumentasi yang relevan.
- Perilaku Aktual: Apa yang terjadi sebagai gantinya?
- Log Diagnostik: Harap berikan diagnostik tambahan jika diperlukan. Lihat panduan untuk informasi tentang cara mengumpulkan log Feedback Hub, log jaringan, dan lainnya.
Untuk informasi selengkapnya, lihat berkontribusi pada WSL.
Ajukan permintaan fitur dengan memilih tombol hijau "New issue" lalu pilih "Feature request".
Anda harus menjawab beberapa pertanyaan yang menjelaskan permintaan Anda.
Anda juga dapat:
- Mengajukan masalah dokumentasi menggunakan repositori dokumen WSL . Untuk berkontribusi pada dokumen WSL, lihat panduan kontributor Microsoft Docs .
- Mengajukan masalah Terminal Windows menggunakan repositori produk Windows Terminal jika masalah Anda terkait lebih banyak dengan Terminal Windows, Konsol Windows, atau antarmuka pengguna baris perintah.
Masalah penginstalan
Penginstalan gagal dengan kesalahan 0x80070003
- Subsistem Windows untuk Linux hanya berjalan pada drive sistem Anda (biasanya ini adalah drive
C:Anda). Pastikan distribusi disimpan di drive sistem Anda: - Di Windows 10, buka Pengaturan ->Sistem ->Penyimpanan ->Pengaturan Penyimpanan Lainnya: Ubah lokasi penyimpanan untuk konten baru

- 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
WslRegisterDistribution gagal dengan kesalahan 0x8007019e
- Subsistem Windows untuk komponen opsional 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 pada langkah 1.
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, opsi baris perintah tidak valid:
wsl --set-version Ubuntu 2Pastikan 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
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:
%LocalAppData%\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, perintah
wsl --set-versionharus berfungsi.
Nota
Dalam kasus saya, folder LocalState untuk distribusi Ubuntu 18.04 saya terletak di
C:\Users\<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscCek alur GitHub Dokumen WSL #4103 untuk mengikuti pelacakan masalah ini dan mendapatkan informasi terbaru.
- 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:
Istilah 'wsl' tidak dikenali sebagai nama cmdlet, fungsi, file skrip, atau program yang dapat dioperasikan.
- Pastikan bahwa Subsistem Windows untuk Komponen Opsional Linux diinstal. Selain itu, jika Anda menggunakan perangkat ARM64 dan menjalankan perintah ini dari PowerShell, Anda akan menerima kesalahan ini. Sebagai gantinya, jalankan
wsl.exedari PowerShell Core, atau Command Prompt.
- Pastikan bahwa Subsistem Windows untuk Komponen Opsional 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 diinstal.
- 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 %SystemRoot%\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, perlu Anda ketahui, tetapi penyelesai 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: Pembaruan ini hanya berlaku untuk komputer dengan Subsistem Windows untuk Linux.
- Ada tiga kemungkinan alasan Anda melihat pesan ini:
Anda masih dalam versi lama Windows yang tidak mendukung WSL 2. Lihat Langkah 2 - Periksa persyaratan untuk menjalankan WSL 2.
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.
Kesalahan: WSL 2 memerlukan pembaruan pada komponen kernelnya. Untuk informasi, silakan kunjungi langkah 4
- Jika paket kernel Linux hilang di
%SystemRoot%\system32\lxss\toolsfolder, 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.
- Jika paket kernel Linux hilang di
Masalah umum
Saya menggunakan Windows 10 versi 1903 dan saya masih tidak melihat opsi untuk WSL 2
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 untuk melakukan backport.
Jika Anda menekan "Periksa Pembaruan" dan masih tidak menerima pembaruan, Anda dapat menginstal KB KB4566116 secara manual.
Kesalahan: 0x1bc saat wsl --set-default-version 2
Ini mungkin terjadi ketika pengaturan 'Bahasa Tampilan' atau 'Lokal Sistem' bukan bahasa Inggris.
PS C:\> wsl.exe --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 memerlukan pembaruan untuk komponen kernelnya. Untuk informasi, silakan kunjungi https://aka.ms/wsl2kernel
Untuk informasi lebih lanjut, silakan merujuk ke masalah #5749
Tidak dapat mengakses file WSL dari Windows
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, 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 kepada Anda 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 masalah #5307 untuk diskusi lebih lanjut tentang masalah ini.
Tidak dapat memulai distribusi WSL 2 dan hanya melihat 'WSL 2' dalam output
Jika bahasa tampilan Anda bukan bahasa Inggris, maka ada kemungkinan Anda melihat versi teks kesalahan yang terpotong.
PS C:\> wsl.exe
WSL 2
Untuk mengatasi masalah ini, Silakan lihat langkah 4 dan instal kernel secara manual dengan mengikuti petunjuk di halaman dokumen tersebut.
command not found saat menjalankan Windows .exe di Linux
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 menjalankan echo $PATH di Linux. Diharapkan Anda akan melihat jalur Win32 (misalnya, /mnt/c/Windows) dalam output.
Jika Anda tidak dapat melihat jalur Windows apa pun, kemungkinan besar variabel PATH Anda ditimpa oleh shell Linux Anda.
Berikut adalah contoh bahwa /etc/profile pada 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.
Periksa persyaratan sistem Hyper-V
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 manajer Hyper-V Anda):Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $trueIkuti 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. Instruksi untuk proses ini dapat bervariasi dari komputer ke komputer, silakan lihat Mengaktifkan virtualisasi di Windows.
Mulai ulang komputer Anda setelah mengaktifkan komponen opsionalPlatform Komputer Virtual.
Pastikan peluncuran hypervisor diaktifkan dalam konfigurasi boot Anda. Anda dapat memvalidasi ini dengan menjalankan powershell yang ditingkatkan:
bcdedit /enum | findstr -i hypervisorlaunchtypeJika Anda melihat
hypervisorlaunchtype Off, maka hypervisor dinonaktifkan. Untuk mengaktifkannya berjalan di powershell yang ditingkatkan:bcdedit /set hypervisorlaunchtype AutoSelain 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 di Azure Virtual Machine, periksa untuk memastikan bahwa Peluncuran Tepercaya dinonaktifkan. Virtualisasi Tertanam tidak didukung pada mesin virtual Azure dengan Peluncuran Tepercaya.
Pelajari selengkapnya tentang cara Mengonfigurasi Virtualisasi Berlapis saat menjalankan Hyper-V di Komputer Virtual.
WSL tidak memiliki koneksi jaringan pada mesin kerja saya atau di lingkungan Enterprise
Lingkungan Bisnis atau Perusahaan mungkin memiliki pengaturan Firewall Pertahanan Windows 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"
- Pada jendela "Sesuaikan Pengaturan untuk Profil Publik" yang terbuka, periksa apakah "Penggabungan Aturan" disetel ke "Tidak". Ini akan memblokir akses ke WSL.
Anda dapat menemukan instruksi tentang cara mengubah pengaturan Firewall ini di Mengonfigurasi firewall Hyper-V.
WSL tidak memiliki koneksi jaringan saat menonaktifkan IPv6
Jika IPv6 dinonaktifkan menggunakan nilai HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters (REG_DWORD) DisabledComponentsregistri, konektivitas jaringan WSL dapat gagal.
Lihat Panduan untuk mengonfigurasi IPv6 di Windows untuk pengguna tingkat lanjut.
Jika IPv6 harus dinonaktifkan pada sistem host, sebaiknya gunakan Powershell untuk melakukannya dengan langsung menghapus pengikatan protokol IPv6. Misalnya: Disable-NetAdapterBinding -Name "<MyAdapter>" -ComponentID ms_tcpip[6].
WSL tidak memiliki konektivitas jaringan setelah tersambung ke VPN
Jika setelah menyambungkan ke VPN di Windows, bash kehilangan konektivitas jaringan, coba solusi ini dari dalam bash. Solusi ini akan memungkinkan Anda mengambil alih resolusi DNS secara manual melalui /etc/resolv.conf.
Catat server DNS VPN dari melakukan:
ipconfig.exe /allBuat salinan dari yang ada
resolv.conf:sudo cp /etc/resolv.conf /etc/resolv.conf.bakBatalkan tautan saat ini
resolv.conf:sudo unlink /etc/resolv.confJalankan:
sudo mv /etc/resolv.conf.bak /etc/resolv.confEdit
/etc/wsl.confdan tambahkan isi ini ke file. (Info lebih lanjut tentang pengaturan ini dapat ditemukan di Konfigurasi pengaturan tingkat lanjut)[network] generateResolvConf=falseBuka
/etc/resolv.confdan- Hapus baris pertama dari file yang memiliki komentar yang menjelaskan pembuatan otomatis.
- Tambahkan entri DNS dari (1) di atas sebagai entri pertama dalam daftar server DNS.
- Tutup file.
Setelah Anda memutuskan sambungan VPN, Anda harus mengembalikan perubahan ke /etc/resolv.conf. Untuk melakukan ini, lakukan:
sudo mv /etc/resolv.conf /etc/resolv.conf.bak
sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
Masalah Klien Akses Aman Global dengan WSL
Klien Akses Aman Global (/entra/global-secure-access/how-to-install-windows-client) dapat memengaruhi konektivitas WSL karena memiliki fitur untuk mengembalikan alamat sementara saat menyelesaikan nama. Kemudian alamat ditukar ke alamat aktual ketika koneksi jaringan dibuat. Ini dapat merusak WSL karena lalu lintas WSL diteruskan di bawah sebagian besar penghubung klien GSA.
Sebaiknya nonaktifkan Penerowongan DNS (dnsTunneling=false) atau menonaktifkan Mode Cermin (networkingMode=nat).
Masalah VPN Cisco Anyconnect dengan WSL dalam mode NAT
VPN Cisco AnyConnect memodifikasi rute dengan cara yang mencegah NAT berfungsi. Ada solusi khusus untuk WSL 2: Lihat Panduan Administrator Klien Cisco AnyConnect Secure Mobility , Rilis 4.10 - Memecahkan Masalah AnyConnect.
Masalah konektivitas WSL dengan VPN saat mode jaringan Cermin aktif
Mode jaringan terpantul saat ini merupakan 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 networkingMode eksperimental dikonfigurasi menjadi mirrored, antarmuka jaringan yang Anda miliki di Windows diduplikasi 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
Pertimbangan saat menggunakan autoProxy untuk Mirror HttpProxy di WSL
Pencerminan proksi HTTP/S dapat dikonfigurasi menggunakan pengaturan autoProxy di bagian eksperimental file Konfigurasi WSL. Saat menerapkan pengaturan ini, perhatikan pertimbangan ini:
-
Proksi PAC: WSL akan mengonfigurasi pengaturan di Linux dengan Mengatur
WSL_PAC_URLvariabel lingkungan. 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, ditetapkan ke satu atau beberapa proksi HTTP yang ditemukan terinstal dalam konfigurasi proksi HTTP Windows. - Variabel lingkungan Linux,
HTTPS_PROXY, diatur ke satu atau beberapa proksi HTTPS yang ditemukan terinstal dalam konfigurasi proksi HTTPS 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_PROXYdanhttp_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.
Pertimbangan jaringan dengan penerowongan DNS
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 dapat diselesaikan tanpa perlu 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 pengaturan dnsTunneling 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.confdalam 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
- Sufiks 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 mengabaikan 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,
generateHostsopsi dalam file wsl.conf diabaikan (file host DNS Windows tidak disalin dalam 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 (yang eksperimental networkingMode diatur ke mirrored). Beberapa lalu lintas masuk yang diterima oleh host Windows tidak akan diarahkan ke VM Linux. Lalu lintas ini adalah sebagai berikut:
- Port UDP 68 (DHCP)
- Port TCP 135 (penyelesaian 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) |
| mode_generasi_alamat | Dinonaktifkan (0) |
| nonaktifkan_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 yang --network host digunakan dalam docker run perintah. Solusi alternatif adalah mencantumkan nomor port yang diterbitkan di pengaturan ignoredPorts bagian eksperimental di file Konfigurasi WSL.
Masalah kontainer Docker saat Manajer Jaringan-nya berjalan
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
Mengatasi nama .local di WSL
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 atur 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 mirroring.
networkingMode atur 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:
Pasang paket
libnss-mdnssudo apt-get install libnss-mdns*Paket
libnss-mdnsadalah 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.conffile untuk mengaktifkanmdns_minimalpengaturan di bagianhosts. 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
Sufiks DNS untuk WSL
Bergantung pada konfigurasi dalam file .wslconfig, WSL akan berperilaku seperti berikut sehubungan dengan akhiran DNS.
Kapan 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 dalam .wslconfig) Semua akhiran DNS Windows dikonfigurasi di Linux, dalam search pengaturan /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 dan dnsProxy diatur ke false dalam .wslconfig). Akhiran DNS tunggal dikonfigurasi di Linux, dalam pengaturan "domain" /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 setiap antarmuka, sedangkan 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.
Kapan networkingMode diatur ke Mirrored:
Semua akhiran DNS Windows dikonfigurasi di Linux, dalam search pengaturan /etc/resolv.conf
Urutan sufiks dikonfigurasi dalam /etc/resolv.conf dalam urutan yang sama dengan kasus 2) dari mode NAT
Ketika ada perubahan dalam akhiran DNS Windows, perubahan tersebut akan secara otomatis tercermin di Linux
Nota
akhiran DNS tambahan dapat dikonfigurasi di Windows menggunakan.
Fungsi SetInterfaceDnsSettings (netioapi.h), dengan bendera DNS_SETTING_SUPPLEMENTAL_SEARCH_LIST diatur dalam Settings parameter .
Pemecahan masalah DNS di WSL
Konfigurasi DNS default ketika 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 desain akses bersama menggunakan NAT ini, ada beberapa konfigurasi yang diketahui dapat mengganggu resolusi nama dari WSL.
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
Public). 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: Falseberarti aturan firewall yang ditentukan secara lokal, seperti itu oleh HNS, tidak akan diterapkan atau digunakan.Dan Enterprise dapat menurunkan pengaturan Kebijakan Grup dan kebijakan MDM yang memblokir semua aturan masuk.
Pengaturan ini mengambil alih aturan Firewall Allow-Inbound 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/Terlindungi
./Vendor/MSFT/Firewall/MdmStore/PublicProfile/Shielded
Orang dapat melihat apakah ini dikonfigurasi untuk tidak mengizinkan aturan masuk Firewall dengan menjalankan perintah berikut ini (lihat peringatan sebelumnya tentang 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: Falseberarti bahwa tidak ada aturan Firewall masuk yang akan diterapkan.Pengguna melewati aplikasi pengaturan Keamanan Windows dan memeriksa kontrol untuk "Memblokir semua koneksi masuk, termasuk yang ada dalam daftar aplikasi yang diizinkan".
Windows mendukung opsi pengguna untuk ikut serta dalam pengaturan yang sama yang dapat diterapkan oleh Perusahaan 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.
Centang ini harus dihapus agar konfigurasi proksi DNS NAT berfungsi dari WSL. atau WSL dapat diatur untuk menggunakan Tunneling DNS.
Aturan HNS Firewall untuk memungkinkan paket DNS untuk akses bersama dapat menjadi tidak valid, merujuk pada 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 solusi sederhana:
Hentikan WSL
wsl.exe –shutdownHapus 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-NetFirewallRuleHapus semua titik akhir HNS. Catatan: jika HNS digunakan untuk mengelola kontainer lain, seperti MDAG atau Windows Sandbox, itu juga harus dihentikan.
hnsdiag.exe delete allReboot atau mulai ulang layanan HNS
Restart-Service hnsKetika WSL dimulai ulang, HNS akan membuat aturan Firewall baru, secara tepat menargetkan antarmuka WSL.
Pemecahan Masalah Akses Jaringan di Windows
Jika Anda tidak memiliki akses jaringan, itu mungkin karena kesalahan konfigurasi. Silakan lihat apakah driver FSE sedang berjalan:
Get-Service FSE
Jika itu tidak menunjukkan FSE berjalan, silakan periksa apakah PortTrackerEnabledMode nilai registri keluar di bawah kunci registri ini:
Get-ItemProperty HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters
Jika FSE tidak berjalan atau diinstal, dan PortTrackerEnabledMode ada, hapus nilai registri tersebut dan boot ulang
Cara manual untuk menghapus adaptor phantom
Adaptor Hantu, atau perangkat Hantu Plug and Play (PnP), mengacu pada 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
Lihat > Tampilkan perangkat tersembunyi
Buka adaptor jaringan
Klik kanan pada adaptor jaringan "Ghosted" dan pilih Copot Perangkat
Memulai WSL atau menginstal distribusi mengembalikan kode kesalahan
Ikuti instruksi untuk Mengumpulkan log WSL di repositori WSL di GitHub untuk mengumpulkan log terperinci dan melaporkan masalah di repositori GitHub kami.
Memperbarui WSL
Ada dua komponen Subsistem Windows untuk Linux yang dapat memerlukan pembaruan.
Untuk memperbarui Subsistem Windows untuk Linux itu sendiri, gunakan perintah berikut.
wsl.exe --updateUntuk memperbarui biner pengguna distribusi Linux tertentu, gunakan perintah berikut di distribusi Linux yang ingin Anda perbarui.
apt-get update | apt-get upgrade
Kesalahan pemutakhiran Apt-get
Beberapa paket menggunakan fitur yang belum kami terapkan.
udev, misalnya, belum didukung dan menyebabkan beberapa kesalahan apt-get upgrade.
Untuk memperbaiki masalah yang terkait dengan udev, ikuti langkah-langkah berikut:
Tulis yang berikut ini untuk
/usr/sbin/policy-rc.ddan simpan perubahan Anda.#!/bin/sh exit 101Tambahkan izin eksekusi ke
/usr/sbin/policy-rc.d:chmod +x /usr/sbin/policy-rc.dJalankan perintah berikut:
dpkg-divert --local --rename --add /sbin/initctl ln -s /bin/true /sbin/initctl
"Kesalahan: 0x80040306" pada penginstalan
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 lama
- Klik OK
"Kesalahan: 0x80040154" setelah pembaruan Windows
Subsistem Windows untuk fitur 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 .
Mengubah bahasa tampilan
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 memulai ulang bash.exe agar perubahan ini berlaku.
Contoh di bawah ini berubah menjadi lokal ke en-US:
sudo update-locale LANG=en_US.UTF8
Masalah penginstalan setelah pemulihan sistem Windows
Hapus folder
%SystemRoot%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux.Peringatan
Jangan lakukan ini jika fitur opsional Anda sepenuhnya terinstal dan berfungsi.
Aktifkan fitur opsional WSL (jika belum)
Mulai Ulang
lxrun /uninstall /full (Gunakan perintah ini untuk menghapus instalasi sepenuhnya)
Menginstal bash
Tidak ada akses internet di WSL
Beberapa pengguna telah melaporkan masalah dengan aplikasi firewall tertentu yang memblokir akses internet di WSL. Firewall yang dilaporkan adalah:
- Kaspersky
- AVG
- Avast
- Perlindungan Titik Akhir Symantec
Dalam beberapa kasus menonaktifkan firewall memungkinkan akses. Dalam beberapa kasus, hanya dengan menginstal firewall tampaknya dapat memblokir akses.
Jika Anda menggunakan Microsoft Defender Firewall, hapus centang "Memblokir semua koneksi masuk, termasuk yang ada dalam daftar aplikasi yang diizinkan." memungkinkan akses.
Kesalahan Izin Ditolak saat menggunakan ping
Untuk Windows Anniversary Update, versi 1607, hak istimewa administrator di Windows diperlukan untuk berjalan ping di WSL. Untuk menjalankan ping, jalankan Bash di Ubuntu di Windows sebagai administrator, atau jalankan bash.exe dari perintah PowerShell dengan hak istimewa administrator.
Untuk versi Windows yang lebih baru, Build 14926+, hak istimewa administrator tidak lagi diperlukan.
Bash digantung
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 dump, catat jenis dump Anda saat ini.
Gunakan langkah-langkah untuk mengonfigurasi crash menggunakan kontrol keyboard.
Reproduksi kondisi hang atau deadlock.
Gagalkan sistem dengan menggunakan urutan kunci dari (2).
Sistem akan crash dan mengumpulkan cadangan memori.
Setelah sistem di-boot ulang, laporkan
memory.dmpke secure@microsoft.com. Lokasi default file cadangan adalah%SystemRoot%\memory.dmpatauC:\Windows\memory.dmpjikaC:adalah drive sistem. Dalam email, perhatikan bahwa pembuangan data adalah untuk tim WSL atau Bash pada Windows.Pulihkan jenis cadangan memori ke pengaturan asli.
Periksa nomor build Anda
Untuk menemukan arsitektur PC dan nomor build Windows Anda, buka Pengaturan>Sistem>Tentang
Cari bidang OS Build dan System Type.
Untuk menemukan nomor build Windows Server Anda, jalankan yang berikut ini di PowerShell:
systeminfo | Select-String "^OS Name","^OS Version"
Mengonfirmasi bahwa WSL diaktifkan
Anda dapat mengonfirmasi bahwa Subsistem Windows untuk Linux diaktifkan dengan menjalankan hal berikut di jendela PowerShell yang ditingkatkan:
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
OpenSSH-Server masalah koneksi
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 statusdan 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 -dPeriksa 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 dari bawah /etc/ssh/, Anda harus meregenerasi kunci atau cukup melenyapkan&install openssh-server.
sudo apt-get purge openssh-server
sudo apt-get install openssh-server
"Rakitan yang dirujuk tidak dapat ditemukan." saat mengaktifkan fitur opsional WSL
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.
Memperbaiki kesalahan izin (terkait SSH)
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 file /etc/wsl.conf:
[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.
Gagal menggunakan WSL dari jarak jauh dengan menggunakan OpenSSH di Windows
Jika Anda menggunakan openssh-server di Windows dan mencoba mengakses WSL dari jarak jauh, Anda banyak melihat kesalahan ini: File tidak dapat diakses oleh sistem.
Ini adalah masalah yang sudah diketahui , saat menggunakan WSL versi Store. Anda dapat mengatasinya hari ini dengan menggunakan WSL 1, atau dengan menggunakan WSL versi dalam Windows. Lihat WSL di Microsoft Store untuk informasi selengkapnya.
Menjalankan perintah Windows gagal di dalam distribusi
Beberapa distribusi yang tersedia di Microsoft Store belum sepenuhnya kompatibel untuk menjalankan perintah Windows secara langsung. Jika Anda mendapatkan kesalahan "-bash: powershell.exe: perintah tidak ditemukan" berjalan powershell.exe /c start . atau perintah Windows lainnya, Anda dapat mengatasinya dengan mengikuti langkah-langkah berikut:
- Dalam distribusi WSL Anda, jalankan
echo $PATH. Jika tidak termasuk:/mnt/c/Windows/system32sesuatu sedang menentukan 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.confdan pastikan tidak berisiappendWindowsPath=false, jika berisi, komentari. - Mulai ulang distribusi dengan mengetik
wsl -t <Distro>diikuti dengan nama distribusi atau jalankanwsl --shutdownbaik di PowerShell.
Tidak dapat melakukan boot setelah menginstal WSL 2
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.
Kesalahan WSL 2 saat ICS dinonaktifkan
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: Tidak ada lagi titik akhir yang tersedia dari pemeta titik akhir.
Sistem yang memerlukan WSL 2 harus membiarkan layanan ICS (SharedAccess) dalam status mulai bawaan, Manual (Pemicu Mulai), dan kebijakan apa pun yang mematikan 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
Menggunakan versi Windows dan WSL yang lebih lama
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 sarankan Anda memperbarui ke versi Windows terbaru, tetapi jika itu tidak memungkinkan, kami telah menguraikan beberapa perbedaan di bawah ini.
Perbedaan perintah interoperabilitas:
-
bash.exetelah diganti denganwsl.exe. Perintah Linux dapat dijalankan dari PowerShell, tetapi untuk versi Windows awal, Anda mungkin perlu menggunakan perintah .bashMisalnya:C:\temp> bash -c "ls -la". Perintah WSL yang diteruskan kebash -cditeruskan ke proses WSL tanpa modifikasi. Jalur file harus ditentukan dalam format WSL dan harus hati-hati untuk menghindari karakter yang harus di-escape. Misalnya: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 menjadi
rootgunakan perintah ini di PowerShell:C:\> lxrun /setdefaultuser rootlalu jalankan Bash.exe untuk masuk:C:\> bash.exe. Atur ulang kata sandi Anda menggunakan perintah kata sandi distribusi:$ passwd usernamelalu tutup baris perintah Linux:$ exit. Dari Command Prompt di Windows atau Powershell, reset pengguna default Anda kembali ke akun pengguna Linux Anda yang normal:C:\> lxrun.exe /setdefaultuser username.
Menghapus versi lama WSL
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 folder %LocalAppData%\lxss\ (dan semua sub-kontennya) menggunakan Windows File Explorer atau dengan PowerShell: Remove-Item -Recurse $env:localappdata/lxss/.
Kode kesalahan 0x8000FFFF kegagalan tak terduga
Kode kesalahan ini biasanya berarti telah terjadi kegagalan yang tidak terduga, atau "bencana", selama operasi sistem saat mencoba menginstal atau menggunakan distrubution Linux (seperti Ubuntu) dengan WSL. Ada banyak alasan yang dapat menyebabkan kegagalan ini. Mulailah dengan memeriksa hal berikut:
- Apakah ini masalah izin? Pastikan bahwa Anda telah masuk sebagai pengguna yang sesuai di terminal Anda dan memiliki hak Admin yang diperlukan saat menginstal distribusi Linux dengan WSL. (Klik kanan ikon bilah tugas Terminal atau Baris Perintah Anda untuk memilih "Jalankan sebagai Administrator.")
- Apakah Anda memperbarui WSL ke versi terbaru? Gunakan perintah :
wsl --updateuntuk memperbarui ke versi terbaru. Anda mungkin juga ingin memperbarui ke windows versi terbaru. - Pastikan Anda menggunakan perintah
wsl --installdengan benar dan menentukan distribusi Linux yang ingin Anda pasang. - Coba matikan dan mulai ulang WSL, menggunakan perintah:
wsl --shutdown. - Jika Anda menggunakan Windows Server, pastikan versi Anda sudah diperbarui dan ikuti Panduan Penginstalan Windows Server.
- Jika Anda menduga ini mungkin terkait dengan file sistem yang hilang atau rusak, dari prompt perintah yang ditingkatkan (Jalankan sebagai Admin), Anda dapat memindai dan memperbaiki file sistem dan/atau memperbaiki gambar sistem operasi Windows. Untuk memindai dan memperbaiki file sistem Windows yang rusak atau hilang, gunakan perintah:
SFC /SCANNOW. Untuk memperbaiki gambar Windows itu sendiri, gunakan perintah:DISM /Online /Cleanup-Image /RestoreHealth. - Lihat masalah repositori produk WSL terkait 9420.
Windows Subsystem for Linux