Aplikasi Windows sekarang dapat membuat dan berinteraksi dengan proses Linux yang berjalan di dalam Subsistem Windows untuk Linux (WSL) dengan plugin WSL. Artikel ini memberikan gambaran umum tentang cara kerjanya, dan cara mulai menggunakannya.
Memahami fungsionalitas Plugin
Plugin WSL menyediakan fungsionalitas inti ini:
Memungkinkan aplikasi menentukan executable Windows yang dimulai ketika komputer virtual WSL dimulai
Windows yang dapat dieksekusi dapat membuat proses Linux di dalam WSL, dan dapat berkomunikasi langsung dengan mereka menggunakan soket virtual
Dengan menggunakan ini, aplikasi Windows dapat membangun di atas pengalaman WSL dan menyediakan fungsionalitas tambahan yang terkait dengan Subsistem Windows untuk Linux.
Menginstal Plugin
Sebagai pembuat plugin WSL, Anda dapat menginstal plugin Anda pada komputer dengan mengatur kunci registri untuk menunjuk ke file DLL plugin Anda.
Dan sebagai pengguna WSL, aplikasi apa pun yang Anda gunakan akan secara otomatis menginstal plugin WSL sebagai bagian dari proses penginstalan normal mereka.
Membuat Plugin Anda sendiri
Untuk memulai proyek plugin, Anda harus membangun dll Win32. Cara paling sederhana untuk menyiapkan ini adalah dengan mencoba proyek sampel plugin WSL kami. Anda dapat melakukan ini dengan mengkloning repositori sampel plugin WSL ke folder lokal dengan git clone dan membukanya di Visual Studio.
Anda kemudian dapat menekan tab "Build" dan membangun proyek Anda, yang akan menghasilkan DLL yang siap Anda gunakan, kemungkinan di bawah wsl-plugin-sample\x64\Debug\WSLPluginSample.dll.
Menguji Plugin Anda
Plugin WSL hanya akan berjalan jika ditandatangani secara digital. Untuk menguji ini, Anda harus mengaktifkan penandatanganan pengujian di komputer Anda.
Mengaktifkan penandatanganan pengujian dan membuat sertifikasi pengujian
Buka Jendela PowerShell yang ditingkatkan dan aktifkan penandatanganan pengujian dengan menjalankan perintah ini:
## If this command results in "The value is protected by Secure Boot policy and cannot be modified or deleted"
## Then reboot the PC, go into BIOS settings, and disable Secure Boot. BitLocker may also affect your ability to modify this setting.
Bcdedit.exe -set TESTSIGNING ON
Setelah penandatanganan pengujian diaktifkan (Reboot mungkin diperlukan), dalam prompt perintah Powershell yang ditingkatkan yang ada di direktori file WSLPluginSample.dll Anda yang dibuat di atas, kami akan membuat sertifikat pengujian WSL:
# Create the cert
$certname = "WSLPluginTestCert"
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 -Type CodeSigningCert
# Export it to a local path
Export-Certificate -Cert $cert -FilePath ".\$certname.cer"
# Sign the DLL file
Set-AuthenticodeSignature -FilePath "C:\dev\Path\To\Your\WSLPlugin.dll" -Certificate $cert
Terakhir impor sertifikat ke Otoritas Sertifikasi Akar Tepercaya:
Di jendela PowerShell yang ditingkatkan yang sama, jalankan perintah di bawah ini untuk menginstal plugin, dan pastikan untuk mengubah jalur ke DLL plugin ke jalur yang ada:
Untuk menggunakan plugin, mulai ulang layanan wsl melalui:
sc.exe stop wslservice
wsl.exe echo “test”
Plugin Anda sekarang harus dimuat. Lihat bagian Pemecahan Masalah dan informasi tambahan untuk informasi selengkapnya jika plugin gagal dimuat.
Dan kemudian setelah selesai, Anda dapat menjalankan perintah ini untuk menghapus plugin (Harap diingat Bahwa Anda perlu memulai ulang layanan WSL agar berlaku):
Wsl/Service/CreateInstance/CreateVm/Plugin/* -> DLL plugin mengembalikan kesalahan dalam WSLPLUGINAPI_ENTRYPOINTV1 atau OnVmStarted()
Wsl/Service/CreateInstance/Plugin/* -> DLL plugin mengembalikan kesalahan di OnDistributionStarted()
Ruang pengguna Plugin Linux
Proses Linux yang dibuat melalui ExecuteBinary() akan berjalan di namespace layanan akar WSL2 Virtual Machine. Namespace layanan ini tidak terkait dengan distribusi apa pun dan memiliki sistem file akar berbasis Mariner yang sangat minimal.
Sistem file tersebut adalah tmpf yang dapat ditulis, yang berarti bahwa semua perubahan yang dilakukan padanya akan dihilangkan ketika Komputer Virtual WSL2 dimatikan.
Anda dapat memeriksa konten namespace layanan akar dengan menjalankan wsl --debug-shell saat WSL sedang berjalan.
Pertimbangan tambahan
Semua kait plugin WSL sinkron, yang berarti bahwa WSL akan menunggu kait plugin selesai sebelum melanjutkan.
Kesalahan apa pun yang dikembalikan oleh plugin dianggap fatal oleh WSL (yang berarti bahwa distribusi pengguna tidak akan dimulai)
Kode plugin berjalan di ruang alamat yang sama dengan layanan WSL. Setiap crash dalam plugin akan menabrak seluruh layanan WSL, berpotensi menyebabkan kehilangan data
Berkolaborasi dengan kami di GitHub
Sumber untuk konten ini dapat ditemukan di GitHub, yang juga dapat Anda gunakan untuk membuat dan meninjau masalah dan menarik permintaan. Untuk informasi selengkapnya, lihat panduan kontributor kami.
Umpan balik Windows Subsystem for Linux
Windows Subsystem for Linux adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Dalam modul ini, Anda mempelajari cara menggunakan Subsistem Windows untuk Linux (WSL) dengan Visual Studio Code (VS Code). Kami menjelajahi proses penginstalan dan dasar-dasar penggunaan WSL. Selain itu, kami menginstal dan menggunakan ekstensi Visual Studio Code WSL. Terakhir, kami menunjukkan cara men-debug dan menjalankan kode Python di Visual Studio Code dalam lingkungan WSL kami.