Microsoft mengungkapkan cara kerja subsistem windows 10 linux-nya

Video: cara mengaktifkan subsystem linux ubuntu di windows 10 (linux bash) 2024

Video: cara mengaktifkan subsystem linux ubuntu di windows 10 (linux bash) 2024
Anonim

Bash di Ubuntu pada Windows memungkinkan binari ELF64 Linux asli untuk berjalan di Windows melalui Windows Subsystem for Linux (WSL). Meskipun banyak orang dikejutkan oleh pengumuman Bash pada Ubuntu, perlu disebutkan bahwa ia membuka pintu baru untuk kompatibilitas antara sistem operasi yang berbeda. Microsoft mengambil langkah maju dan mengungkapkan cara kerjanya WSL sehingga kami dapat lebih memahami bagaimana kedua sistem berkomunikasi satu sama lain.

WSL dibuat oleh tim Microsoft Windows Kernel 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
  • Driver penyedia Pico (lxss.sys, lxcore.sys) yang berperan untuk meniru kernel Linux dengan menerjemahkan syscalls Linux
  • Pico memproses hosting mode pengguna yang tidak dimodifikasi Linux (misalnya / bin / bash).

Koneksi antara ketiga komponen dijelaskan sebagai berikut:

Ini adalah ruang antara mode pengguna binari Linux dan komponen kernel Windows di mana keajaiban terjadi. Dengan menempatkan binari Linux yang tidak dimodifikasi dalam proses Pico, kami memungkinkan panggilan sistem Linux 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 membuat kedua sistem bekerja bersama:

WSL menjalankan binari ELF64 Linux yang tidak dimodifikasi dengan memvirtualisasikan antarmuka kernel Linux di atas kernel Windows NT. Salah satu antarmuka kernel yang terpapar 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 langsung kompatibel. Sebagai contoh, kernel Linux mencakup hal-hal seperti garpu, buka, dan bunuh sementara kernel Windows NT memiliki NtCreateProcess yang sebanding, NtOpenFile, dan NtTerminateProcess.

Subsistem Windows untuk Linux termasuk driver mode kernel (lxss.sys dan lxcore.sys) yang bertanggung jawab untuk menangani permintaan panggilan sistem Linux berkoordinasi dengan kernel Windows NT. Driver tidak mengandung kode dari kernel Linux tetapi bukan implementasi ruang bersih dari antarmuka kernel yang kompatibel dengan Linux. Pada Linux asli, ketika syscall dibuat dari mode pengguna yang dapat dieksekusi, ia ditangani oleh kernel Linux. Pada 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 pengangkatan berat.

Mempertimbangkan minat Microsoft dalam platform open-source, banyak orang bertanya-tanya apakah raksasa teknologi itu harus mengakuisisi perusahaan-perusahaan besar yang berfokus pada Linux seperti Canonical, perusahaan di balik sistem operasi Ubuntu. Meskipun Microsoft dan Canonical bekerja sama dalam perangkat lunak sumber terbuka, tidak ada yang mengeluarkan komentar tentang kemungkinan ini.

Jika Anda tertarik dengan bagaimana interaksi Linux - Windows berkembang, buka Blog Microsoft. Tim berjanji bahwa akan ada lebih banyak posting blog tentang topik ini.

Microsoft mengungkapkan cara kerja subsistem windows 10 linux-nya