Microsoft rivela come funziona il suo sottosistema Linux di Windows 10

Video: 🐧 Come installare Linux su Windows 10: Guida a Sottosistema Windows per Linux WSL2 2024

Video: 🐧 Come installare Linux su Windows 10: Guida a Sottosistema Windows per Linux WSL2 2024
Anonim

Bash su Ubuntu su Windows consente l'esecuzione dei binari ELF64 nativi su Windows tramite il sottosistema Windows per Linux (WSL). Sebbene molte persone siano rimaste scioccate dall'annuncio di Bash su Ubuntu, vale la pena ricordare che apre nuove porte per la compatibilità tra diversi sistemi operativi. Microsoft fa un altro passo in avanti e rivela come funziona il suo WSL in modo che possiamo capire meglio come i due sistemi comunicano tra loro.

WSL è stato creato dal team del kernel di Microsoft Windows e contiene componenti sia in modalità utente che in modalità kernel. Più specificamente, il sistema è composto da:

  • un servizio di gestione sessioni in modalità utente che gestisce il ciclo di vita dell'istanza Linux
  • Driver del provider Pico (lxss.sys, lxcore.sys) il cui ruolo è emulare un kernel Linux traducendo syscalls Linux
  • Pico elabora la modalità utente Linux non modificata (ad es. / Bin / bash).

La connessione tra i tre componenti è descritta come segue:

È lo spazio tra i binari Linux in modalità utente e i componenti del kernel di Windows in cui avviene la magia. Inserendo binari Linux non modificati nei processi Pico, consentiamo di indirizzare le chiamate di sistema Linux nel kernel di Windows. I driver lxss.sys e lxcore.sys traducono le chiamate di sistema Linux in API NT ed emulano il kernel Linux.

La sfida principale nel processo è far lavorare insieme i due sistemi:

WSL esegue binari ELF64 Linux non modificati virtualizzando un'interfaccia del kernel Linux sopra il kernel di Windows NT. Una delle interfacce del kernel che espone sono le chiamate di sistema (syscalls). Una syscall è un servizio fornito dal kernel che può essere chiamato dalla modalità utente. Sia il kernel Linux che il kernel Windows NT espongono diverse centinaia di syscall alla modalità utente, ma hanno una semantica diversa e generalmente non sono direttamente compatibili. Ad esempio, il kernel di Linux include cose come fork, open e kill mentre il kernel di Windows NT ha i comparabili NtCreateProcess, NtOpenFile e NtTerminateProcess.

Il sottosistema Windows per Linux include driver in modalità kernel (lxss.sys e lxcore.sys) che sono responsabili della gestione delle richieste di chiamata del sistema Linux in coordinamento con il kernel di Windows NT. I driver non contengono codice dal kernel Linux ma sono invece un'implementazione in clean room di interfacce kernel compatibili con Linux. Su Linux nativo, quando un syscall viene creato da un eseguibile in modalità utente, viene gestito dal kernel Linux. Su WSL, quando viene creata una syscall dallo stesso eseguibile, il kernel di Windows NT inoltra la richiesta a lxcore.sys. Laddove possibile, lxcore.sys traduce il syscall di Linux nell'equivalente chiamata di Windows NT che a sua volta fa il lavoro pesante.

Tenendo conto dell'interesse di Microsoft per le piattaforme open source, molte persone si chiedevano se il colosso della tecnologia dovesse acquisire le maggiori società focalizzate su Linux come Canonical, la società dietro il sistema operativo Ubuntu. Sebbene Microsoft e Canonical abbiano collaborato al software open source, nessuno dei due ha rilasciato commenti su questa possibilità.

Se sei interessato a come si evolve l'interazione Linux - Windows, vai al Blog di Microsoft. Il team ha promesso che seguiranno altri post di blog su questo argomento.

Microsoft rivela come funziona il suo sottosistema Linux di Windows 10