Microsoft ha recentemente annunciato che presto spediranno un kernel Linux integrato direttamente in Windows 10. Ciò consentirà agli sviluppatori di sfruttare la piattaforma Windows 10 quando si sviluppano applicazioni per Linux. In effetti, questo è il prossimo passo nell'evoluzione del sottosistema di Windows per Linux (WSL). Rivediamo la versione WSL 1 prima di entrare nella gritty-gritty dell'intergazione del kernel di Linux e cosa significa.
Se vuoi iniziare con WSL (V1) ecco una guida per questo.
WSL versione1
Il sottosistema di Windows per Linux dovrebbe davvero essere chiamato sottosistema Linux per Windows. Offre un driver (un sottosistema) per il sistema operativo Windows, che traduce le chiamate di sistema Linux in chiamate di sistema di Windows 10 native che il kernel NT comprende.
Questo crea un'illusione un po 'credibile per i binari di Linux che sono, in effetti, correndo sopra un kernel Linux! Funziona abbastanza bene che non solo puoi eseguire semplici binari a 64 bit compilati per Linux, ma è possibile eseguire un intero utente (a.K.Una distribuzione Linux come Debian o Ubuntu) in cima a WSL V1. Quindi, quando installi Ubuntu da Microsoft Store, prenderà semplicemente i binari utente ubuntu che si spediscono per l'ambiente WSL V1 di Microsoft.
Tuttavia, WSL V1 è ancora tutt'altro che perfetto. Alcune semantiche che un sistema Linux si aspetterebbe sono totalmente inaccettabili su Windows. Ad esempio, non è possibile modificare il nome del file di un file aperto su Windows, ma puoi farlo su Linux.
Altri esempi evidenti includono le scarse prestazioni del filesystem di WSL V1 e la sua incapacità di eseguire Docker.
WSL V2 Il kernel Linux
Questa nuova versione di WSL risolve tutti questi problemi includendo il kernel Linux in esecuzione nell'hypervisor. Durante il loro annuncio e le demo, Craig Loewen e il suo collega di Microsoft hanno sottolineato che, andando avanti, Microsoft investirà enormemente nella tecnologia di virtualizzazione.
L'uso di un kernel Linux risolve tutti i problemi semantici che non possono essere risolti usando solo un livello di traduzione delle chiamate di sistema. Questo kernel Linux sarà molto leggero e sarà mantenuto da Microsoft con tutte le modifiche al kernel Linux Made open source. Nella loro demo, hanno mostrato come puoi semplicemente migrare le app WSL V1 esistenti per eseguire non modificati in un ambiente WSL V2. Le prestazioni del file system sono migliorate di 3-4 volte e l'intero sistema sembra molto più reattivo.
Come funziona?
Quindi, fondamentalmente, abbiamo una VM Linux con molte app Userland, E.G, Opensuse o Debian o Ubuntu Userland. Ottieni più di una distribuzione sulla macchina Windows, con una singola VM Linux, quindi è pulito. Ma implica anche che ogni volta che apri il tuo terminale WSL Ubuntu, stai avviando una VM completa! Ci vorrà un po ', giusto?
In realtà, no. Il kernel Linux è in realtà abbastanza piccolo e abbastanza leggero che Microsoft è stato in grado di ottenere tempi di avvio folli con esso (~ 1 secondi). Hanno raggiunto questo problema rimuovendo tutto il codice bootloader e poiché è una VM, caricano direttamente il kernel Linux nello spazio degli indirizzi nella memoria e impostano alcuni stati della VM che il kernel si aspetta. Questo è lo stesso meccanismo che alimenta un'altra nuova funzione Windows 10 che è Windows Sandbox.
Ha un'impronta di memoria molto piccola, si carica in un secondo e il formato del filesystem EXT4 nativo gli consente di offrire un'esperienza utente molto fluida. La VM funziona solo quando ne hai bisogno.
Inoltre, non è completamente isolato come una VM tradizionale. Puoi interagire facilmente con il resto del sistema Windows, inclusi i file nelle voci di Windows utilizzando WSL V2. Non è una VM isolata ma una parte integrata di Windows 10. Come raggiunge questo?
Lunga vita al piano 9
Con WSL V1, accedere a file e directory sui tuoi ospiti di Windows era banale. Il tuo Userland Linux è solo un'app su Windows, quindi può leggere e scrivere file originariamente appartenenti al sistema operativo nativo abbastanza facilmente.
Con WSL V2, hai una VM in esecuzione con il suo harddisk virtuale (formattato con Ext4, ovviamente) e se vogliamo un'esperienza simile come quella di WSL V1, abbiamo bisogno di alcuni meccanismi extra. Inserisci il piano 9.
Il piano 9, scritto anche come, 9p è un sistema operativo originariamente sviluppato presso Bell Labs. Sebbene sia improbabile che lo troverai mai in produzione, vive ancora mentre vari altri sistemi operativi adottano idee interessanti che sono incubate in esso, incluso il protocollo 9p per un file server.
File system
WSL V2 avrà un server protocollo 9p in esecuzione sull'host di Windows 10 e un client 9p in esecuzione all'interno delle app WSL. Ciò consente di accedere ai file di Windows 10 in modo nativo all'interno del tuo ambiente WSL. L'unità C: verrà montata su /mnt /c, proprio come WSL V1, e ogni file all'interno dell'host di Windows 10 può essere raggiunto dall'ambiente WSL.
Il contrario sarà anche vero. Ci sarà un server di protocollo 9p in esecuzione nel tuo ambiente Linux con il client corrispondente su Windows 10 Host. Ciò consentirà agli utenti di accedere al proprio file system Linux (EXT4) dall'ambiente Windows 10. Consentendo di modificare il codice sorgente o i file di configurazione utilizzando il tuo IDE preferito installato su Windows, elencando tutte le directory utilizzando Explorer file di Windows 10 e molto altro. Essenzialmente, eseguirai le tue Distri Linux preferiti con l'interfaccia utente di Windows 10.
Docker
Nel loro annuncio, Microsoft ha anche lasciato intendere che questo nuovo ambiente sarà utilizzato anche da Docker per spedire il loro futuro Docker per le app di Windows. Dato che c'è un kernel Linux, correre su di esso, sarà abbastanza facile. Nella demo, hanno eseguito Docker in cima a Ubuntu che eseguono WSL V2 e ha funzionato come se fosse in esecuzione su un'installazione nativa Ubuntu.
Per fare un esempio molto superficiale, se hai lavorato con Dockerfiles su un sistema Windows, è necessario aver notato i problemi di sicurezza causati a causa della mancanza di autorizzazioni di file UNIX. Questo non sarà più un problema. Docker su Windows utilizza già una VM personalizzata per fornire contenitori Linux, presumibilmente, ora utilizzerà WSL V2 per utilizzare il kernel Linux che Microsoft spedisce.
Nel complesso, sono molto colpito da ciò che Microsoft sta facendo per fornire un paradiso per gli sviluppatori Linux che vogliono anche utilizzare Windows. Speriamo che, a lungo termine, incoraggerà molta impollinazione tra i due diversi ecosistemi.
Se stai eseguendo Windows 10 Home, Pro o Enterprise Edition puoi ottenere un assaggio di WSL V2 optando per le build di anteprima di Windows 10. Ecco una guida su come farlo.