Baca dalam bahasa Inggris

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

Masalah repositori produk WSL memungkinkan Anda untuk:

  • Cari masalah yang ada untuk melihat apakah ada masalah yang terkait dengan masalah yang Anda alami. Perhatikan bahwa di bilah pencarian, Anda dapat menghapus "is:open" untuk menyertakan masalah yang telah diselesaikan dalam pencarian Anda. Harap pertimbangkan untuk mengomentari atau memberikan jempol untuk masalah terbuka apa pun yang ingin Anda ungkapkan minat Anda untuk maju sebagai prioritas.
  • Ajukan masalah baru. Jika Anda telah menemukan masalah dengan WSL dan tampaknya tidak ada masalah, Anda dapat memilih tombol Masalah baru hijau lalu pilih WSL - Laporan Bug. Anda harus menyertakan judul untuk masalah ini, nomor build Windows Anda (jalankan cmd.exe /c ver untuk melihat build Anda saat ini #), baik Anda menjalankan WSL 1 atau 2, versi Kernel Linux Anda saat ini # (jalankan wsl.exe --status atau cat /proc/version), versi # distribusi Anda (jalankan lsb_release -r), versi perangkat lunak lain yang terlibat, langkah-langkah repro, perilaku yang diharapkan, perilaku aktual, dan log diagnostik jika tersedia dan sesuai. Untuk informasi selengkapnya, lihat berkontribusi pada WSL.
  • Ajukan permintaan fitur dengan memilih tombol Masalah baru berwarna hijau lalu pilih Permintaan fitur. Anda harus menjawab beberapa pertanyaan yang menjelaskan permintaan Anda.

Anda juga dapat:

  • Ajukan masalah dokumentasi menggunakan repositori dokumen WSL. Untuk berkontribusi pada dokumen WSL, lihat panduan kontributor Microsoft Docs.
  • Ajukan masalah Terminal Windows menggunakan repositori produk Terminal Windows jika masalah Anda terkait lebih banyak dengan Terminal Windows, Konsol Windows, atau antarmuka pengguna baris perintah.

Masalah instalasi

  • Penginstalan gagal dengan kesalahan 0x80070003

    • Subsistem Windows untuk Linux hanya berjalan pada drive sistem Anda (biasanya ini adalah drive AndaC:). Pastikan distribusi disimpan di drive sistem Anda:
    • Pada Windows 10 buka Pengaturan ->Sistem ->Penyimpanan ->Pengaturan Penyimpanan Lainnya: Ubah tempat konten baru disimpanGambar pengaturan sistem untuk menginstal aplikasi di drive C: (Windows 10)
    • Pada Windows 11 buka Pengaturan ->Sistem ->Penyimpanan ->Pengaturan penyimpanan tingkat lanjut ->Tempat konten baru disimpanGambar pengaturan sistem untuk menginstal aplikasi di drive C: (Windows 11)
  • WslRegisterDistribution gagal dengan kesalahan 0x8007019e

    • Komponen opsional Subsistem Windows untuk Linux tidak diaktifkan:
    • Buka Panel Kontrol ->Program dan Fitur ->Aktifkan atau nonaktifkan Fitur Windows -> Periksa Subsistem Windows untuk Linux atau gunakan cmdlet PowerShell yang disebutkan di awal artikel ini.
  • Penginstalan gagal dengan kesalahan 0x80070003 atau kesalahan 0x80370102

    • Pastikan bahwa virtualisasi diaktifkan di dalam BIOS komputer Anda. Instruksi tentang cara melakukan ini akan bervariasi dari komputer ke komputer, dan kemungkinan besar akan berada di bawah opsi terkait CPU.
    • WSL2 mengharuskan CPU Anda mendukung fitur Second Level Address Translation (SLAT), yang diperkenalkan dalam prosesor Intel Nehalem (Intel Core 1st Generation) dan AMD Opteron. CPU lama (seperti Intel Core 2 Duo) tidak akan dapat menjalankan WSL2, bahkan jika Platform Komputer Virtual berhasil diinstal.
  • Kesalahan saat mencoba memutakhirkan: Invalid command line option: wsl --set-version Ubuntu 2

    • Pastikan Anda mengaktifkan Subsistem Windows untuk Linux, dan Anda menggunakan Windows Build versi 18362 atau yang lebih baru. Untuk mengaktifkan WSL, jalankan perintah ini dalam prompt PowerShell dengan hak istimewa admin: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux.
  • Operasi yang diminta tidak dapat diselesaikan karena keterbatasan sistem disk virtual. File hard disk virtual harus tidak dikompresi dan tidak terenkripsi dan tidak boleh jarang.

    • Batal pilih "Kompres konten" (serta "Enkripsi konten" jika dicentang) dengan membuka folder profil untuk distribusi Linux Anda. Ini harus terletak di folder pada sistem file Windows Anda, seperti: %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited...
    • Di profil distro Linux ini, harus ada folder LocalState. Klik kanan folder ini untuk menampilkan menu opsi. Pilih Properti > Tingkat Lanjut lalu pastikan bahwa kotak centang "Kompres konten untuk menghemat ruang disk" dan "Enkripsi konten untuk mengamankan data" tidak dipilih (tidak dicentang). Jika Anda ditanya apakah akan menerapkan ini hanya ke folder saat ini atau ke semua subfolder dan file, pilih "hanya folder ini" karena Anda hanya menghapus bendera kompres. Setelah ini, wsl --set-version perintah harus berfungsi.

Cuplikan layar pengaturan properti distro WSL

Catatan

Dalam kasus saya, folder LocalState untuk distribusi Ubuntu 18.04 saya terletak di C:\Users<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc

Periksa utas GitHub Dokumen WSL #4103 di mana masalah ini sedang dilacak untuk informasi yang diperbarui.

  • Istilah 'wsl' tidak dikenali sebagai nama cmdlet, fungsi, file skrip, atau program yang dapat dioperasikan.

  • Kesalahan: Subsistem Windows untuk Linux tidak memiliki distribusi yang terinstal.

    • 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 \Windows\SysWOW64.) Anda dapat mengakses sistem "asli"32 dari proses yang dihosting dengan melihat di folder virtual: \Windows\sysnative. Ini tidak akan benar-benar ada di disk, pikiran Anda, tetapi pemecah jalur sistem file akan menemukannya.
  • Kesalahan: Pembaruan ini hanya berlaku untuk komputer dengan Subsistem Windows untuk Linux.

    • Untuk menginstal paket MSI pembaruan kernel Linux, WSL diperlukan dan harus diaktifkan terlebih dahulu. Jika gagal, Anda akan melihat pesan: This update only applies to machines with the Windows Subsystem for Linux.
    • Ada tiga kemungkinan alasan Anda melihat pesan ini:
    1. Anda masih dalam versi lama Windows yang tidak mendukung WSL 2. Lihat langkah #2 untuk persyaratan versi dan tautan untuk diperbarui.

    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 https://aka.ms/wsl2kernel .

    • Jika paket kernel Linux hilang di folder %SystemRoot%\system32\lxss\tools, Anda akan mengalami kesalahan ini. Atasi dengan menginstal paket MSI pembaruan kernel Linux di langkah #4 dari instruksi penginstalan ini. Anda mungkin perlu menghapus instalan MSI dari 'Tambahkan atau Hapus Program', dan menginstalnya lagi.

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 tentang mengambil backport.

Jika Anda menekan 'Periksa Pembaruan' dan masih tidak menerima pembaruan, Anda dapat menginstal KB KB4566116 secara manual.

Kesalahan: 0x1bc kapan wsl --set-default-version 2

Ini mungkin terjadi ketika pengaturan 'Bahasa Tampilan' atau 'Lokal Sistem' bukan bahasa Inggris.

wsl --set-default-version 2
Error: 0x1bc
For information on key differences with WSL 2 please visit https://aka.ms/wsl2

Kesalahan aktual untuk 0x1bc adalah:

WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel

Untuk informasi lebih lanjut, silakan merujuk ke masalah 5749

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, itu bisa jadi karena 9P tidak dimulai dengan benar.

Untuk memeriksa hal ini, Anda dapat memeriksa log mulai menggunakan: dmesg |grep 9p, dan ini akan menunjukkan kesalahan apa pun. Output yang berhasil terlihat seperti berikut ini:

[    0.363323] 9p: Installing v9fs 9p2000 file system support
[    0.363336] FS-Cache: Netfs '9p' registered for caching
[    0.398989] 9pnet: Installing 9P2000 support

Silakan lihat utas GitHub ini untuk diskusi lebih lanjut tentang masalah ini.

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.

C:\Users\me>wsl
WSL 2

Untuk mengatasi masalah ini, silakan kunjungi https://aka.ms/wsl2kernel dan instal kernel secara manual dengan mengikuti petunjuk di halaman dokumen tersebut.

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 menjalankannya echo $PATH di Linux. Diharapkan Anda akan melihat jalur Win32 (misalnya, /mnt/c/Windows) dalam output. Jika Anda tidak dapat melihat jalur Windows, kemungkinan besar PATH Anda ditimpa oleh shell Linux Anda.

Berikut adalah contoh bahwa /etc/profile di Debian berkontribusi pada masalah:

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi

Cara yang benar pada Debian adalah dengan menghapus baris di atas. Anda juga dapat menambahkan $PATH selama penugasan seperti di bawah ini, tetapi ini menyebabkan beberapa masalah lain dengan WSL dan VSCode..

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:$PATH"
fi

Untuk informasi selengkapnya, lihat masalah 5296 dan masalah 5779.

"Kesalahan: 0x80370102 Komputer virtual tidak dapat dimulai karena fitur yang diperlukan tidak diinstal."

Harap aktifkan fitur Virtual Machine Platform Windows dan pastikan virtualisasi diaktifkan di BIOS.

  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 Hyper-V Manager 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. Petunjuk untuk proses ini dapat bervariasi dari komputer ke komputer, silakan lihat artikel ini dari Komputer Bleeping misalnya.

  4. Mulai ulang komputer Anda setelah mengaktifkan Virtual Machine Platform komponen opsional.

  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 pada Azure Virtual Machine, periksa untuk memastikan bahwa Peluncuran Tepercaya dinonaktifkan. Virtualisasi Berlapis tidak didukung pada komputer virtual Azure.

Pelajari selengkapnya tentang cara Mengonfigurasi Virtualisasi Berlapis saat menjalankan Hyper-V di Komputer Virtual.

WSL tidak memiliki koneksi jaringan pada mesin kerja saya atau di lingkungan Enterprise

Lingkungan Bisnis atau Perusahaan mungkin memiliki pengaturan Windows Defender Firewall yang dikonfigurasi untuk memblokir lalu lintas jaringan yang tidak sah. Jika penggabungan aturan lokal diatur ke "Tidak" maka jaringan WSL tidak akan berfungsi secara default, dan administrator Anda perlu menambahkan aturan firewall untuk mengizinkannya.

Anda dapat mengonfirmasi pengaturan penggabungan aturan lokal dengan mengikuti langkah-langkah berikut:

Cuplikan layar setelan 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. Periksa jendela "Sesuaikan Pengaturan untuk Profil Publik" yang terbuka untuk melihat apakah "Penggabungan Aturan" diatur ke "Tidak". Ini akan memblokir akses ke WSL.

Anda dapat menemukan instruksi tentang cara mengubah pengaturan Firewall ini di Mengonfigurasi firewall Hyper-V.

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 untuk mengambil alih resolusi DNS secara manual melalui /etc/resolv.conf.

  1. Catat server DNS VPN dari tindakan ipconfig.exe /all
  2. Buat salinan resolv.conf yang ada sudo cp /etc/resolv.conf /etc/resolv.conf.new
  3. Batalkan tautan resolv.conf saat ini sudo unlink /etc/resolv.conf
  4. sudo mv /etc/resolv.conf.new /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
  1. Buka /etc/resolv.conf dan
    a. Menghapus baris pertama dari file yang memiliki komentar yang menjelaskan pembuatan otomatis
    b. Tambahkan entri DNS dari (1) di atas sebagai entri pertama dalam daftar server DNS.
    c. Tutup file.

Setelah Anda memutuskan sambungan VPN, Anda harus mengembalikan perubahan ke /etc/resolv.conf. Untuk melakukan ini, lakukan:

  1. cd /etc
  2. sudo mv resolv.conf resolv.conf.new
  3. sudo ln -s ../run/resolvconf/resolv.conf resolv.conf

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 Mobilitas Aman Cisco AnyConnect, Rilis 4.10 - Memecahkan Masalah AnyConnect.

Masalah konektivitas WSL dengan VPN saat mode jaringan Cermin aktif

Mode jaringan cermin saat ini adalah pengaturan eksperimental dalam Konfigurasi WSL. Arsitektur jaringan NAT tradisional WSL dapat diperbarui ke mode jaringan yang sama sekali baru yang disebut "Mode jaringan cermin". Ketika eksperimental networkingMode diatur ke mirrored, antarmuka jaringan yang Anda miliki di Windows dicerminkan ke Linux untuk meningkatkan kompatibilitas. Pelajari selengkapnya di blog Baris Perintah: Pembaruan WSL September 2023.

Beberapa VPN telah diuji dan dikonfirmasi tidak kompatibel dengan WSL, termasuk:

  • "Bitdefender" versi 26.0.2.1
  • "OpenVPN" versi 2.6.501
  • "Mcafee Safe Connect" versi 2.16.1.124

Pertimbangan saat menggunakan autoProxy untuk Pencerminan HttpProxy di WSL

Pencerminan proksi HTTP/S dapat dikonfigurasi menggunakan autoProxy pengaturan di bagian eksperimental file Konfigurasi WSL. Saat menerapkan pengaturan ini, perhatikan pertimbangan ini:

  • Proksi PAC: WSL akan mengonfigurasi pengaturan di Linux dengan Mengatur variabel lingkungan "WSL_PAC_URL". Linux tidak mendukung proksi PAC secara default.
  • Interaksi dengan WSLENV: Variabel lingkungan yang ditentukan pengguna lebih diutamakan daripada yang ditentukan oleh fitur ini.

Saat diaktifkan, berikut ini berlaku untuk pengaturan proksi pada distribusi Linux Anda:

  • Variabel lingkungan Linux, HTTP_PROXY, diatur ke satu atau beberapa proksi HTTP yang ditemukan diinstal dalam konfigurasi proksi HTTP Windows.
  • Variabel lingkungan Linux, HTTPS_PROXY, diatur ke satu atau beberapa proksi HTTPS yang ditemukan yang diinstal dalam konfigurasi proksi HTTP Windows.
  • Variabel lingkungan Linux, NO_PROXY, diatur untuk melewati proksi HTTP/S apa pun yang ditemukan di target konfigurasi Windows.
  • Setiap variabel lingkungan, kecuali WSL_PAC_URL, diatur ke huruf kecil dan huruf besar. Misalnya: HTTP_PROXY 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 diselesaikan tanpa mengirim paket jaringan. Fitur ini harus meningkatkan kompatibilitas jaringan dan memungkinkan Anda untuk mendapatkan konektivitas internet yang lebih baik meskipun Anda memiliki VPN, penyiapan firewall tertentu, atau konfigurasi jaringan lainnya.

Penerowongan DNS dapat dikonfigurasi menggunakan dnsTunneling pengaturan di bagian eksperimental file Konfigurasi WSL. Saat menerapkan pengaturan ini, perhatikan pertimbangan ini:

  • Jika Anda menggunakan VPN dengan WSL, aktifkan penerowongan DNS. Banyak VPN menggunakan kebijakan NRPT, yang hanya diterapkan ke kueri DNS WSL saat penerowongan DNS diaktifkan.
  • File /etc/resolv.conf dalam distribusi Linux Anda memiliki batasan maksimum 3 server DNS, sementara Windows dapat menggunakan lebih dari 3 server DNS. Menggunakan penerowongan DNS menghapus batasan ini - semua server DNS Windows sekarang dapat digunakan oleh Linux.
  • WSL akan menggunakan akhiran DNS Windows dalam urutan berikut (mirip dengan urutan yang digunakan oleh klien DNS Windows):
    1. Akhiran DNS global
    2. Akhiran 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 melewati penerowongan DNS. Docker Desktop memiliki caranya sendiri (berbeda dari penerowongan DNS) menerapkan pengaturan dan kebijakan DNS host ke kueri DNS dari kontainer Docker.
  • Agar penerowongan DNS berhasil diaktifkan, opsi generateResolvConf dalam file wsl.conf tidak boleh dinonaktifkan.
  • Ketika penerowongan DNS diaktifkan, opsi generateHosts dalam file wsl.conf diabaikan (file host DNS Windows tidak disalin di file Linux /etc/hosts). Kebijakan dalam file host Windows akan diterapkan ke kueri DNS dari Linux, tanpa perlu file disalin di Linux.

Pelajari selengkapnya di blog Baris Perintah: Pembaruan WSL September 2023.

Masalah dengan mengarahkan lalu lintas masuk yang diterima oleh host Windows ke Komputer Virtual WSL

Saat menggunakan mode jaringan Mirrored (eksperimental networkingMode diatur ke mirrored), beberapa lalu lintas masuk yang diterima oleh host Windows tidak akan pernah diarahkan ke VM Linux. Lalu lintas ini adalah sebagai berikut:

  • Port UDP 68 (DHCP)
  • Port TCP 135 (resolusi titik akhir DCE)
  • Port TCP 1900 (UPnP)
  • Port TCP 2869 (SSDP)
  • Port TCP 5004 (RTP)
  • Port TCP 3702 (WSD)
  • Port TCP 5357 (WSD)
  • Port TCP 5358 (WSD)

WSL akan secara otomatis mengonfigurasi pengaturan jaringan Linux tertentu saat menggunakan mode jaringan cermin. Konfigurasi pengguna apa pun dari pengaturan ini saat menggunakan mode jaringan cermin tidak didukung. Berikut adalah daftar pengaturan yang akan dikonfigurasi WSL:

Masalah kontainer Docker di WSL2 dengan mode jaringan Cermin diaktifkan saat berjalan di bawah namespace jaringan default

Ada masalah yang diketahui di mana kontainer Docker Desktop dengan port yang diterbitkan (docker run –publish/-p) akan gagal dibuat. Tim WSL bekerja sama dengan tim Docker Desktop untuk mengatasi masalah ini. Untuk mengatasi masalah ini, gunakan namespace jaringan host di kontainer Docker. Atur jenis jaringan melalui opsi "--network host" yang digunakan dalam perintah "docker run". Solusi alternatif adalah mencantumkan nomor port yang diterbitkan di ignoredPorts pengaturan bagian eksperimental dalam file Konfigurasi WSL.

Masalah kontainer Docker saat Pengelola Jaringannya 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 diatur ke NAT:

Saat ini, fitur ini tidak didukung ketika penerowongan DNS diaktifkan. Untuk mengaktifkan resolusi nama .local, kami merekomendasikan solusi berikut:

  • Nonaktifkan penerowongan DNS.
  • Gunakan mode jaringan cermin.

networkingMode diatur ke Mirrored:

Catatan: Anda harus berada di WSL build 2.3.17 atau yang lebih tinggi untuk memiliki fungsionalitas di bawah ini.

Karena mode Mirrored mendukung lalu lintas multicast, protokol mDNS (Multicast DNS) dapat digunakan untuk mengatasi nama .local. Linux harus dikonfigurasi untuk mendukung mDNS, karena tidak melakukannya secara default. Salah satu cara untuk mengonfigurasinya adalah dengan menggunakan dua langkah berikut:

  1. Instal paket "libnss-mdns"
sudo apt-get install libnss-mdns

*Paket "libnss-mdns" adalah plugin untuk fungsionalitas GNU Name Service Switch (NSS) dari Pustaka C GNU (glibc) yang menyediakan resolusi nama host melalui Multicast DNS (mDNS). Paket ini secara efektif memungkinkan program Unix/Linux umum untuk menyelesaikan nama di domain mDNS ad-hoc .local.

  1. Konfigurasikan /etc/nsswitch.conf file untuk mengaktifkan pengaturan "mdns_minimal" di bagian "host". Contoh konten file:
cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat systemd
group:          compat systemd
shadow:         compat
gshadow:        files

hosts:          files mdns_minimal [NOTFOUND=return] dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Akhiran DNS di WSL

Bergantung pada konfigurasi dalam file .wslconfig, WSL akan memiliki akhiran DNS wrt perilaku berikut:

Ketika networkingMode diatur ke NAT:

Kasus 1) Secara default tidak ada akhiran DNS yang dikonfigurasi di Linux

Kasus 2) Jika penerowongan DNS diaktifkan (dnsTunneling diatur ke true di .wslconfig) Semua akhiran DNS Windows dikonfigurasi di Linux, dalam pengaturan "pencarian" dari /etc/resolv.conf

Akhiran dikonfigurasi dalam /etc/resolv.conf dalam urutan berikut, mirip dengan urutan di mana klien DNS Windows mencoba akhiran saat menyelesaikan nama: akhiran DNS global terlebih dahulu, lalu akhiran DNS tambahan, lalu akhiran DNS per antarmuka.

Ketika ada perubahan dalam akhiran DNS Windows, perubahan tersebut akan secara otomatis tercermin di Linux

Kasus 3) Jika penerowongan DNS dinonaktifkan dan proksi DNS SharedAccess dinonaktifkan (dnsTunneling diatur ke false dan dnsProxy diatur ke false di .wslconfig) Akhiran DNS tunggal dikonfigurasi di Linux, dalam pengaturan "domain" dari /etc/resolv.conf

Ketika ada perubahan pada akhiran DNS Windows, perubahan tersebut tidak tercermin di Linux

Akhiran DNS tunggal yang dikonfigurasi di Linux dipilih dari akhiran DNS per antarmuka (akhiran global dan tambahan diabaikan)

jika Windows memiliki beberapa antarmuka, heuristik digunakan untuk memilih akhiran DNS tunggal yang akan dikonfigurasi di Linux. Misalnya jika ada antarmuka VPN di Windows, akhiran dipilih dari antarmuka tersebut. Jika tidak ada antarmuka VPN yang ada, akhiran dipilih dari antarmuka yang kemungkinan besar akan memberikan konektivitas Internet.

Ketika networkingMode diatur ke Mirrored:

Semua akhiran DNS Windows dikonfigurasi di Linux, dalam pengaturan "pencarian" /etc/resolv.conf

Akhiran dikonfigurasi dalam /etc/resolv.conf dalam urutan yang sama seperti dalam kasus 2) dari mode NAT

Ketika ada perubahan dalam akhiran DNS Windows, perubahan tersebut akan secara otomatis tercermin di Linux

Catatan: Akhiran DNS tambahan dapat dikonfigurasi di Windows menggunakan SetInterfaceDnsSettings - Aplikasi Win32 | Microsoft Learn, dengan bendera DNS_SETTING_SUPPLEMENTAL_SEARCH_LIST diatur dalam parameter Pengaturan

Pemecahan masalah DNS di WSL

Konfigurasi DNS default saat WSL memulai kontainer dalam mode NAT adalah memiliki perangkat NAT pada Windows Host berfungsi sebagai 'server' DNS untuk kontainer WSL. Ketika kueri DNS dikirim dari kontainer WSL ke perangkat NAT tersebut di Windows Host, paket DNS diteruskan dari perangkat NAT ke layanan akses bersama di Host; respons dikirim ke arah terbalik kembali ke kontainer WSL. Proses penerusan paket ini ke akses bersama memerlukan aturan Firewall untuk memungkinkan paket DNS masuk tersebut, yang dibuat oleh layanan HNS ketika WSL awalnya meminta HNS untuk membuat jaringan virtual NAT untuk kontainer WSL-nya.

Karena NAT ini - desain akses bersama, ada beberapa konfigurasi yang diketahui yang dapat merusak resolusi nama dari WSL.

1. Perusahaan dapat mendorong kebijakan yang tidak mengizinkan aturan Firewall yang ditentukan secara lokal, hanya mengizinkan aturan yang ditentukan kebijakan Perusahaan.

Ketika ini diatur oleh Enterprise, aturan Firewall yang dibuat HNS diabaikan, karena ini adalah aturan yang ditentukan secara lokal. Agar konfigurasi ini berfungsi, Enterprise harus membuat aturan Firewall untuk mengizinkan port UDP 53 ke layanan akses bersama, atau WSL dapat diatur untuk menggunakan Penerowongan DNS. Seseorang dapat melihat apakah ini dikonfigurasi untuk tidak mengizinkan aturan Firewall yang ditentukan secara lokal dengan menjalankan yang berikut ini. Perhatikan bahwa ini akan menampilkan pengaturan untuk semua 3 profil: Domain, Privat, dan Publik. Jika diatur pada profil apa pun, maka paket akan diblokir jika WSL vNIC ditetapkan profil tersebut (defaultnya adalah Publik). Ini hanya cuplikan profil Firewall pertama yang dikembalikan di Powershell:

PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore
Name                            : Domain
Enabled                         : True
DefaultInboundAction            : Block
DefaultOutboundAction           : Allow
AllowInboundRules               : True
AllowLocalFirewallRules         : False

AllowLocalFirewallRules:False means the locally defined firewall rules, like that by HNS, will not be applied or used.

2. Dan Enterprise dapat mendorong kebijakan grup dan pengaturan kebijakan MDM yang memblokir semua aturan masuk.

Pengaturan ini mengambil alih aturan Firewall Izinkan Masuk apa pun. Pengaturan ini akan memblokir aturan Firewall UDP yang dibuat HNS, dan dengan demikian akan mencegah WSL menyelesaikan nama. Agar konfigurasi ini berfungsi, WSL harus diatur untuk menggunakan Penerowongan DNS. Pengaturan ini akan selalu memblokir proksi DNS NAT.

Dari Kebijakan Grup:

Konfigurasi Komputer \ Templat Administratif \ Jaringan \ Koneksi Jaringan \ Windows Defender Firewall \ Profil Domain | Profil Standar

"Windows Defender Firewall: Jangan izinkan pengecualian" - Diaktifkan

Dari Kebijakan MDM:

./Vendor/MSFT/Firewall/MdmStore/PrivateProfile/Shielded

./Vendor/MSFT/Firewall/MdmStore/DomainProfile/Shielded

./Vendor/MSFT/Firewall/MdmStore/PublicProfile/Shielded

Seseorang dapat melihat apakah ini dikonfigurasi untuk tidak mengizinkan aturan Firewall masuk dengan menjalankan yang berikut ini (lihat peringatan di atas pada Profil Firewall). Ini hanya cuplikan profil Firewall pertama yang dikembalikan di Powershell:


PS C:\> Get-NetFirewallProfile -PolicyStore ActiveStore
Name                            : Domain
Enabled                         : True
DefaultInboundAction            : Block
DefaultOutboundAction           : Allow
AllowInboundRules               : False

AllowInboundRules: False means that no inbound Firewall rules will be applied.

3. Pengguna melewati Keamanan Windows mengatur aplikasi dan memeriksa kontrol untuk "Memblokir semua koneksi masuk, termasuk yang ada dalam daftar aplikasi yang diizinkan."

Windows mendukung keikutsertaan pengguna untuk pengaturan yang sama yang dapat diterapkan oleh Enterprise yang dirujuk pada #2 di atas. Pengguna dapat membuka halaman pengaturan "Keamanan Windows", memilih opsi "Firewall & perlindungan jaringan", memilih Profil Firewall yang ingin mereka konfigurasi (Domain, Privat, atau Publik), dan di bagian "Koneksi masuk" periksa kontrol berlabel "Blokir semua koneksi masuk, termasuk yang ada dalam daftar aplikasi yang diizinkan."

Jika ini diatur untuk profil Publik (ini adalah profil default untuk WSL vNIC), aturan Firewall yang dibuat oleh HNS untuk memungkinkan paket UDP untuk akses bersama akan diblokir.

Ini harus tidak dicentang agar konfigurasi proksi DNS NAT berfungsi dari WSL, atau WSL dapat diatur untuk menggunakan Penerowongan DNS.

4. Aturan HNS Firewall untuk memungkinkan paket DNS untuk akses bersama dapat menjadi tidak valid, mereferensikan pengidentifikasi antarmuka WSL sebelumnya. Ini adalah kelemahan dalam HNS yang telah diperbaiki dengan rilis Windows 11 terbaru. Pada rilis sebelumnya, jika ini terjadi, itu tidak mudah ditemukan, tetapi memiliki pekerjaan sederhana:

  • Hentikan WSL

    wsl.exe –shutdown

  • Hapus aturan HNS Firewall lama. Perintah Powershell ini harus berfungsi dalam banyak kasus:

    Get-NetFirewallRule -Name "HNS*" | Get-NetFirewallPortFilter | where Protocol -eq UDP | where LocalPort -eq 53 | Remove-NetFirewallRule

  • Hapus semua titik akhir HNS. Catatan: jika HNS digunakan untuk mengelola kontainer lain, seperti MDAG atau Kotak Pasir Windows, itu juga harus dihentikan.

    hnsdiag.exe delete all

  • Reboot atau mulai ulang layanan HNS

    Restart-Service hns

  • Ketika WSL dimulai ulang, HNS akan membuat aturan Firewall baru, dengan benar menargetkan antarmuka WSL.

Pemecahan Masalah Akses Jaringan di Windows

Jika Anda tidak memiliki akses jaringan, itu mungkin karena kesalahan konfigurasi. Silakan lihat apakah driver FSE berjalan: 'sc queryex FSE'. Jika itu tidak menunjukkan FSE berjalan, silakan periksa apakah nilai registri PortTrackerEnabledMode keluar di bawah kunci registri ini: kueri reg HKLM\System\CurrentControlSet\Services\Tcpip\Parameters. Jika FSE tidak berjalan atau diinstal, dan PortTrackerEnabledMode ada, hapus nilai registri tersebut dan boot ulang

Cara manual untuk menghapus adaptor phantom

Adaptor hantu, atau perangkat Phantom Plug and Play (PnP), lihat komponen perangkat keras yang muncul di sistem Anda tetapi tidak terhubung secara fisik. Perangkat "hantu" ini dapat menyebabkan kebingungan dan kekacauan dalam pengaturan sistem Anda. Jika Anda melihat adaptor hantu saat menjalankan WSL di Komputer Virtual (VM), ikuti langkah-langkah manual ini untuk menemukan dan menghapus perangkat Phantom PnP ini. Microsoft sedang mengerjakan solusi otomatis yang tidak akan memerlukan intervensi manual. Informasi lebih lanjut akan segera hadir.

  1. Buka Manajer Perangkat
  2. Tampilkan > Perlihatkan perangkat tersembunyi

Cuplikan layar Manajer Perangkat memperlihatkan menu perangkat tersembunyi

  1. Buka adaptor Jaringan

Cuplikan layar daftar adaptor Jaringan

  1. Klik kanan pada adaptor jaringan Ghosted dan pilih Hapus Instalan Perangkat

Cuplikan layar mengeklik kanan pnp phantom dari daftar jaringan dan memilih hapus instalan 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 mengajukan masalah di 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 wsl --update di PowerShell atau CMD.

  2. Untuk memperbarui biner pengguna distribusi Linux tertentu, gunakan perintah: apt-get update | apt-get upgrade dalam distribusi Linux yang ingin Anda perbarui.

Kesalahan peningkatan Apt-get

Beberapa paket menggunakan fitur yang belum kami terapkan. udev, misalnya, belum didukung dan menyebabkan beberapa apt-get upgrade kesalahan.

Untuk memperbaiki masalah yang terkait dengan udev, ikuti langkah-langkah berikut:

  1. Tulis yang berikut ini dan /usr/sbin/policy-rc.d 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 warisan
  3. Klik OK

"Kesalahan: 0x80040154" setelah pembaruan Windows

Fitur Subsistem Windows untuk Linux dapat dinonaktifkan selama pembaruan Windows. Jika ini terjadi, fitur Windows harus diaktifkan kembali. Instruksi untuk mengaktifkan Subsistem Windows untuk Linux dapat ditemukan di Panduan Penginstalan Manual.

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 menjalankan kembali bash.exe agar perubahan ini berlaku.

Contoh di bawah ini berubah menjadi lokal menjadi en-US:

sudo update-locale LANG=en_US.UTF8

Masalah penginstalan setelah pemulihan sistem Windows

  1. %windir%\System32\Tasks\Microsoft\Windows\Windows Subsystem for Linux Hapus folder.
    Catatan: Jangan lakukan ini jika fitur opsional Anda sepenuhnya terinstal dan berfungsi.
  2. Aktifkan fitur opsional WSL (jika belum)
  3. Reboot
  4. lxrun /uninstall /full
  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. Rata-rata
  3. Avast
  4. Perlindungan Titik Akhir Symantec

Dalam beberapa kasus menonaktifkan firewall memungkinkan akses. Dalam beberapa kasus, hanya menginstal firewall untuk memblokir akses.

Jika Anda menggunakan Microsoft Defender Firewall, hapus centang "Memblokir semua koneksi masuk, termasuk yang ada dalam daftar aplikasi yang diizinkan." memungkinkan akses.

Kesalahan Izin Ditolak saat menggunakan ping

Untuk Windows Anniversary Update, versi 1607, hak istimewa administrator di Windows diperlukan untuk menjalankan ping di WSL. Untuk menjalankan ping, jalankan Bash di Ubuntu di Windows sebagai administrator, atau jalankan bash.exe dari perintah CMD/PowerShell dengan hak istimewa administrator.

Untuk versi Windows yang lebih baru, Build 14926+, hak istimewa administrator tidak lagi diperlukan.

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 cadangan, catat jenis Anda saat ini.

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

  3. Repro hang atau kebuntuan.

  4. Crash sistem menggunakan urutan kunci dari (2).

  5. Sistem akan crash dan mengumpulkan cadangan memori.

  6. Setelah sistem dimulai ulang, laporkan memory.dmp ke secure@microsoft.com. Lokasi default file cadangan adalah %SystemRoot%\memory.dmp atau C:\Windows\memory.dmp jika C: adalah drive sistem. Dalam email, perhatikan bahwa cadangan adalah untuk tim WSL atau Bash di Windows.

  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 Build OS dan Jenis Sistem.
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 yang berikut ini di jendela PowerShell yang ditingkatkan:

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Masalah koneksi OpenSSH-Server

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 di bawah /etc/ssh/, Anda harus meregenerasi kunci atau hanya membersihkan&menginstal openssh-server:

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

"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 /etc/wsl.conf file:

[automount]
enabled = true
options = metadata,uid=1000,gid=1000,umask=0022

Harap dicatat bahwa menambahkan perintah ini akan mencakup metadata dan mengubah izin file pada file Windows yang terlihat dari WSL. Silakan lihat Izin Sistem File untuk informasi lebih lanjut.

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:

The file cannot be accessed by the system.

Ini adalah masalah yang diketahui, saat menggunakan WSL versi Store. Anda dapat mengatasinya hari ini dengan menggunakan WSL 1, atau dengan menggunakan WSL versi dalam Windows. Lihat https://aka.ms/wslstoreinfo untuk informasi selengkapnya.

Menjalankan perintah Windows gagal di dalam distribusi

Beberapa distribusi yang tersedia di Microsoft Store belum sepenuhnya kompatibel untuk menjalankan perintah Windows di luar kotak. Jika Anda mendapatkan kesalahan -bash: powershell.exe: command not found saat menjalankan powershell.exe /c start . atau perintah Windows lainnya, Anda dapat mengatasinya dengan mengikuti langkah-langkah berikut:

  1. Dalam eksekusi echo $PATHdistribusi WSL Anda .
    Jika tidak termasuk: /mnt/c/Windows/system32 ada sesuatu yang mendefiniskan 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 tidak, komentari.
  4. Mulai ulang distribusi dengan mengetik wsl -t diikuti dengan nama distribusi atau jalankan wsl --shutdown baik dalam cmd atau 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.

There are no more endpoints available from the endpoint mapper.

Sistem yang memerlukan WSL 2 harus meninggalkan layanan ICS (SharedAccess) dalam status mulai default, Manual (Mulai Pemicu), dan kebijakan apa pun yang menonaktifkan ICS harus ditimpa atau dihapus. Meskipun menonaktifkan layanan ICS akan merusak WSL 2, dan kami tidak menyarankan untuk menonaktifkan ICS, bagian ICS dapat dinonaktifkan menggunakan instruksi ini

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 menyarankan agar Anda memperbarui ke versi Windows terbaru, tetapi jika itu tidak memungkinkan, kami telah menguraikan beberapa perbedaan di bawah ini.

Perbedaan perintah interoperabilitas:

  • bash.exe telah diganti dengan wsl.exe. Perintah Linux dapat dijalankan dari Prompt Perintah Windows atau dari PowerShell, tetapi untuk versi Windows awal, Anda mungkin perlu menggunakan perintah .bash Misalnya: C:\temp> bash -c "ls -la". Perintah WSL yang diteruskan diteruskan bash -c ke proses WSL tanpa modifikasi. Jalur file harus ditentukan dalam format WSL dan perawatan harus diambil untuk menghindari karakter yang relevan. Sebagai contoh: C:\temp> bash -c "ls -la /proc/cpuinfo" 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 untuk root menggunakan perintah ini di PowerShell: C:\> lxrun /setdefaultuser root lalu jalankan Bash.exe untuk masuk: C:\> bash.exe. Atur ulang kata sandi Anda menggunakan perintah kata sandi distribusi: $ passwd username lalu tutup baris perintah Linux: $ exit. Dari prompt perintah Windows atau Powershell, reset pengguna default Anda kembali ke akun pengguna Linux normal Anda: C:\> lxrun.exe /setdefaultuser username.

Menghapus versi warisan 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 %localappdata%\lxss\ folder (dan semua sub-kontennya) menggunakan Windows File Explorer atau dengan PowerShell: rm -Recurse $env:localappdata/lxss/.