Itu Bash di Ubuntu di Windows memungkinkan binari Linux ELF64 asli untuk berjalan di Windows melalui Windows Subsystem for Linux (WSL). Meskipun banyak orang terkejut dengan pengumuman Bash di Ubuntu, perlu disebutkan bahwa itu membuka pintu baru untuk kompatibilitas antara sistem operasi yang berbeda. Microsoft mengambil langkah maju dan mengungkapkan cara kerja WSL-nya sehingga kami dapat lebih memahami bagaimana kedua sistem berkomunikasi satu sama lain.
WSL dibuat oleh tim Kernel Microsoft Windows dan berisi komponen mode pengguna dan mode kernel. Lebih khusus lagi, sistem ini terdiri dari:
- layanan manajer sesi mode pengguna yang menangani siklus hidup instance Linux Linux
- Driver penyedia Pico (lxss.sys, lxcore.sys) yang berperan untuk meniru kernel Linux dengan menerjemahkan syscalls Linux
- Pico memproses hosting mode pengguna Linux yang tidak dimodifikasi (mis. /bin/bash).
Keterkaitan antara ketiga komponen tersebut dijelaskan sebagai berikut:
Ini adalah ruang antara biner mode pengguna Linux dan komponen kernel Windows di mana keajaiban terjadi. Dengan menempatkan binari Linux yang tidak dimodifikasi dalam proses Pico, kami mengaktifkan panggilan sistem Linux untuk diarahkan ke kernel Windows. Driver lxss.sys dan lxcore.sys menerjemahkan panggilan sistem Linux ke NT API dan mengemulasi kernel Linux.
Tantangan utama dalam proses ini adalah untuk membuat kedua sistem bekerja sama:
WSL mengeksekusi binari Linux ELF64 yang tidak dimodifikasi dengan memvirtualisasikan antarmuka kernel Linux di atas kernel Windows NT. Salah satu antarmuka kernel yang diekspos adalah panggilan sistem (syscalls). Syscall adalah layanan yang disediakan oleh kernel yang dapat dipanggil dari mode pengguna. Baik kernel Linux dan kernel Windows NT mengekspos beberapa ratus syscalls ke mode pengguna, tetapi mereka memiliki semantik yang berbeda dan umumnya tidak kompatibel secara langsung. Misalnya, kernel Linux menyertakan hal-hal seperti fork, open, dan kill sedangkan kernel Windows NT memiliki NtCreateProcess, NtOpenFile, dan NtTerminateProcess yang sebanding.
Subsistem Windows untuk Linux menyertakan driver mode kernel (lxss.sys dan lxcore.sys) yang bertanggung jawab untuk menangani permintaan panggilan sistem Linux dalam koordinasi dengan kernel Windows NT. Driver tidak berisi kode dari kernel Linux tetapi merupakan implementasi ruang bersih dari antarmuka kernel yang kompatibel dengan Linux. Di Linux asli, ketika syscall dibuat dari mode pengguna yang dapat dieksekusi, itu ditangani oleh kernel Linux. Di WSL, ketika syscall dibuat dari executable yang sama, kernel Windows NT meneruskan permintaan ke lxcore.sys. Jika memungkinkan, lxcore.sys menerjemahkan syscall Linux ke panggilan Windows NT yang setara yang pada gilirannya melakukan pekerjaan berat.
Mempertimbangkan minat Microsoft pada platform sumber terbuka, banyak orang bertanya-tanya apakah raksasa teknologi harus mengakuisisi perusahaan besar yang berfokus pada Linux seperti Canonical, perusahaan di balik sistem operasi Ubuntu. Meskipun Microsoft dan Canonical bekerja sama pada perangkat lunak sumber terbuka, tidak ada yang mengeluarkan komentar tentang kemungkinan ini.
Jika Anda tertarik dengan bagaimana interaksi Linux – Windows berkembang, buka Blog Microsoft Microsoft. Tim berjanji bahwa lebih banyak posting blog tentang topik ini akan menyusul.
CERITA TERKAIT YANG PERLU ANDA LIHAT:
- Pengguna Linux Melaporkan Masalah "Headphone Berhenti Bekerja di Windows 8.1"
- Microsoft dan Canonical membawa Bash ke Windows 10 di Build 2016
- Munich Mulai Mendistribusikan CD Ubuntu Gratis ke Pengguna Windows XP