Bagikan melalui


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.

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 ver untuk 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 --status jika perintah tersebut tersedia untuk Anda, atau dengan menjalankan cat /proc/version distro 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 baruGambar pengaturan sistem untuk menginstal aplikasi di C: drive (Windows 10)
    • Pada Windows 11, buka Pengaturan ->Sistem ->Penyimpanan ->Pengaturan Penyimpanan Tingkat Lanjut ->Tempat Konten Baru DisimpanGambar pengaturan sistem untuk menginstal aplikasi di C: drive (Windows 11)
  • 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 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
      
  • 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-version harus berfungsi.

    Cuplikan layar pengaturan properti distro WSL

    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_79rhkp1fndgsc

    Cek alur GitHub Dokumen WSL #4103 untuk mengikuti pelacakan masalah ini dan mendapatkan informasi terbaru.

  • 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.exe dari PowerShell Core, atau Command Prompt.
  • Kesalahan: Subsistem Windows untuk Linux tidak memiliki distribusi yang diinstal.

    • Jika Anda menerima kesalahan ini setelah menginstal distribusi WSL:
    1. Jalankan distribusi setidaknya sekali sebelum memanggilnya dari baris perintah.
    2. 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.
    3. 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:
    1. Anda masih dalam versi lama Windows yang tidak mendukung WSL 2. Lihat Langkah 2 - Periksa persyaratan untuk menjalankan WSL 2.

    2. WSL tidak diaktifkan. Anda harus kembali ke langkah 1 dan memastikan bahwa fitur WSL opsional diaktifkan di komputer Anda.

    3. 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\tools folder, 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.

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.

  1. Periksa persyaratan sistem Hyper-V

  2. 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 $true
    
  3. 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. Instruksi untuk proses ini dapat bervariasi dari komputer ke komputer, silakan lihat Mengaktifkan virtualisasi di Windows.

  4. Mulai ulang komputer Anda setelah mengaktifkan komponen opsionalPlatform Komputer Virtual.

  5. 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
    
  6. 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.

  7. 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:

screenshot pengaturan Windows Firewall

  1. Buka "Windows Defender Firewall dengan keamanan tingkat lanjut" (ini berbeda dari "Windows Defender Firewall" di Panel Kontrol)
  2. Klik kanan pada tab "Firewall Pertahanan Windows dengan keamanan tingkat lanjut di Komputer Lokal"
  3. Pilih "Properti"
  4. Pilih tab "Profil Publik" pada Jendela baru yang terbuka
  5. Pilih "Sesuaikan" di bagian "Pengaturan"
  6. 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.

  1. Catat server DNS VPN dari melakukan:

    ipconfig.exe /all
    
  2. Buat salinan dari yang ada resolv.conf:

    sudo cp /etc/resolv.conf /etc/resolv.conf.bak
    
  3. Batalkan tautan saat ini resolv.conf:

    sudo unlink /etc/resolv.conf
    
  4. Jalankan:

    sudo mv /etc/resolv.conf.bak /etc/resolv.conf
    
  5. 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
    
  6. Buka /etc/resolv.conf dan

    1. Hapus baris pertama dari file yang memiliki komentar yang menjelaskan pembuatan otomatis.
    2. Tambahkan entri DNS dari (1) di atas sebagai entri pertama dalam daftar server DNS.
    3. 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_URL variabel 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_PROXY dan http_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.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):
    1. Akhiran DNS global
    2. Sufiks DNS Tambahan
    3. Akhiran DNS per-antarmuka
    4. 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, generateHosts opsi 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:

  1. Pasang 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.

  2. Konfigurasikan /etc/nsswitch.conf file untuk mengaktifkan mdns_minimal pengaturan di bagian hosts . 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.

  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 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: False berarti aturan firewall yang ditentukan secara lokal, seperti itu oleh HNS, tidak akan diterapkan atau digunakan.

  2. 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: False berarti bahwa tidak ada aturan Firewall masuk yang akan diterapkan.

  3. 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.

  4. 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 –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 Windows Sandbox, 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, 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.

  1. Buka Manajer Perangkat

  2. Lihat > Tampilkan perangkat tersembunyi

    Cuplikan layar Manajer Perangkat memperlihatkan menu perangkat tersembunyi

  3. Buka adaptor jaringan

    Cuplikan layar daftar adaptor Jaringan

  4. Klik kanan pada adaptor jaringan "Ghosted" dan pilih Copot Perangkat

    Cuplikan layar mengeklik kanan perangkat pnp phantom dari daftar jaringan dan memilih uninstal 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.

  1. Untuk memperbarui Subsistem Windows untuk Linux itu sendiri, gunakan perintah berikut.

    wsl.exe --update
    
  2. Untuk 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:

  1. Tulis yang berikut ini untuk /usr/sbin/policy-rc.d dan simpan perubahan Anda.

    #!/bin/sh
    exit 101
    
  2. Tambahkan izin eksekusi ke /usr/sbin/policy-rc.d:

    chmod +x /usr/sbin/policy-rc.d
    
  3. Jalankan 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:

  1. Buka cmd.exe
  2. Klik kanan bilah judul - Properti> -> Hapus centang Gunakan konsol lama
  3. 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

  1. Hapus folder %SystemRoot%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux.

    Peringatan

    Jangan lakukan ini jika fitur opsional Anda sepenuhnya terinstal dan berfungsi.

  2. Aktifkan fitur opsional WSL (jika belum)

  3. Mulai Ulang

  4. lxrun /uninstall /full (Gunakan perintah ini untuk menghapus instalasi sepenuhnya)

  5. 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:

  1. Kaspersky
  2. AVG
  3. Avast
  4. 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:

  1. Ubah jenis cadangan memori menjadi "dump memori lengkap". Saat mengubah jenis dump, catat jenis dump Anda saat ini.

  2. Gunakan langkah-langkah untuk mengonfigurasi crash menggunakan kontrol keyboard.

  3. Reproduksi kondisi hang atau deadlock.

  4. Gagalkan sistem dengan menggunakan urutan kunci dari (2).

  5. Sistem akan crash dan mengumpulkan cadangan memori.

  6. Setelah sistem di-boot 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 pembuangan data adalah untuk tim WSL atau Bash pada Windows.

  7. 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. Cuplikan layar bidang Build dan Jenis Sistem

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".

  1. Pastikan Server OpenSSH Anda berjalan:

    sudo service ssh status
    

    dan Anda telah mengikuti tutorial ini: https://ubuntu.com/server/docs/service-openssh

  2. Hentikan layanan sshd dan mulai sshd dalam mode debug:

    sudo service ssh stop
    sudo /usr/sbin/sshd -d
    
  3. 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 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.

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:

  1. Dalam distribusi WSL Anda, jalankan echo $PATH. Jika tidak termasuk: /mnt/c/Windows/system32 sesuatu sedang menentukan ulang variabel PATH standar.
  2. Periksa pengaturan profil dengan cat /etc/profile. Jika berisi penetapan variabel PATH, edit file untuk mengomentari blok penetapan PATH dengan karakter #.
  3. Periksa apakah wsl.conf ada cat /etc/wsl.conf dan pastikan tidak berisi appendWindowsPath=false, jika berisi, komentari.
  4. Mulai ulang distribusi dengan mengetik wsl -t <Distro> diikuti dengan nama distribusi atau jalankan wsl --shutdown baik 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.exe telah diganti dengan wsl.exe. Perintah Linux dapat dijalankan dari PowerShell, tetapi untuk versi Windows awal, Anda mungkin perlu menggunakan perintah .bash Misalnya: C:\temp> bash -c "ls -la". Perintah WSL yang diteruskan ke bash -c diteruskan 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" atau C:\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 root gunakan 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 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 --update untuk memperbarui ke versi terbaru. Anda mungkin juga ingin memperbarui ke windows versi terbaru.
  • Pastikan Anda menggunakan perintah wsl --install dengan 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.