Il sottosistema di Windows per Linux è un'utilità sviluppata da Microsoft per consentire agli sviluppatori e agli appassionati di Linux di eseguire il loro ambiente Linux preferito in modo nativo su Windows 10 senza il sovraccarico di eseguire una macchina virtuale. Il modo in cui funziona è simile al modo in cui il vino funziona su Linux. WSL consente ai binari di Linux di eseguire su Windows utilizzando un livello di compatibilità che traduce le chiamate di sistema Linux nelle chiamate di sistema Windows.
Architettura
Probabilmente, WSL funziona meglio su Windows, rispetto al vino su Linux e il motivo dietro è perché Linux è peculiare in termini di architettura. Mentre la maggior parte dei sistemi operativi è costituita da un kernel e un'intera suite di librerie e caratteristiche costruite attorno a quel kernel, Linux è solo un kernel. La maggior parte delle distro GNU/Linux prendono questo kernel e costruisce uno stack del sistema operativo sopra. A seconda di come hai scelto di costruire questo stack, ottieni distribuzioni diverse come Debian, Redhat, ecc.
Per eseguire l'ambiente Linux su Windows dovresti abilitare la funzione WSL (ci tratteremo a breve) e quindi andare al Microsoft Store per ottenere una copia della tua distribuzione preferita (Ubuntu, Debian, Opensuse, ecc.
Il primo passo consente il livello di traduzione di Syscall e il secondo passo porta in uno stack leggero di software per offrire un sistema operativo Linux completo per eseguire in cima alla funzione WSL. Fare il contrario, vale a dire che l'esecuzione di applicazioni Windows su Linux è molto più difficile perché Windows è molto più del semplice kernel NT.
Per questo motivo non c'è una macchina virtuale coinvolta nell'implementazione di WSL, rendendola un'opzione attraente. Non avrai alcuna perdita di prestazioni perché non sono coinvolti VM, solo un livello di traduzione Syscall a peso leggero nativo.
Installazione e configurazione
Sul tuo PC Windows 10, cerca o attiva le funzionalità di Windows "facendo clic sul tasto Windows e digitando lo stesso nel menu Start. Una volta aperto il menu di Windows, scorri verso il basso in cui troverai la funzione "Sottosistema Windows per Linux". Controlla quella casella e fai clic su OK.
Windows si prenderà cura della configurazione da qui in poi e una volta che tutto è stato fatto richiederebbe di riavviare il sistema per finalizzare le modifiche. Dopo il riavvio puoi andare a Microsoft Store e cercare la tua distribuzione preferita lì dentro.
Puoi cercare nel negozio la tua distribuzione preferita. Di seguito è riportato uno screenshot di alcune delle distribuzioni più utilizzate. Puoi vedere due varianti di OpenSuse, un'app Debian e Kali Linux.
Naturalmente, la distribuzione più popolare è ancora ubuntu con entrambi 16.04 e 18.04 LTS disponibile nel negozio.
Ora devi solo scegliere la distribuzione che desideri e installare l'app corrispondente. Installeremo Ubuntu 18.04 LTS per il nostro ambiente WSL. Ha dimensioni di circa 215 mb, molto più piccolo di un'intera installazione di Ubuntu.
Una volta installata l'app, è possibile avviarla direttamente dall'app Microsoft Store o cercandola nel menu Start. Dopo essere stato lanciato per la prima volta, ci vorrà del tempo per impostare le cose per te.
Potrebbero essere necessari fino a 5 minuti, ma una volta fatto ti verrà richiesto di inserire il tuo nuovo nome utente e password UNIX e sei a posto!
Il terminal lanciato ti offrirà quasi tutte le funzionalità di un sistema Ubuntu, tranne la GUI. Dal momento che la maggior parte delle funzionalità UNIX/Linux arriva per la potenza del terminale, questo può farti molto.
Ad esempio, possiamo iniziare a utilizzare questo ambiente aggiornando tutti i pacchetti installati in esso.
$ sudo apt update && sudo apt upgrade -y
Cose che puoi e non puoi fare in ambiente WSL
Ora, la domanda che sorge nella mente di tutti è: qual è la cattura?
Consideriamo il caso opposto. Con tecnologie come il vino sappiamo che non tutto ciò che può essere fatto in Windows può essere fatto su Linux. Le librerie di sistema di basso livello come DirectX non saranno disponibili su Linux e molte applicazioni su Windows si basano su tali librerie.
I sistemi operativi come Windows 10, FreeBSD o Illumos sono sistemi operativi a pieno titolo, non solo il kernel. Con Windows poiché la maggior parte delle biblioteche sono proprietarie e questo rende la questione più difficile. Questo rende il lavoro di un progetto come il vino, molto più difficile.
Con il tentativo di emulare Linux su Windows, è vero il contrario. Il set di chiamate ABI (o Syscalls) di Linux è tutto ciò che è necessario tradurre in Windows per eseguire tutto su di esso. Se proviamo a chiedere a Ubuntu su WSL quale kernel è in esecuzione, ti darà un numero di versione del kernel Linux, con Microsoft menzionato insieme al numero di versione per indicare che questo non è il ramo della testa del progetto del kernel Linux.
$ uname -a
Se scaviamo più a fondo, scopriremo che mentre vengono mostrate funzionalità di alto livello come il layout del filesystem e le configurazioni di rete, le attività di livello inferiore come il layout di archiviazione a blocchi non funzionano.
Ad esempio, i seguenti comandi funzionerebbero come previsto:
$ df -h
$ ifconfig
Entrambi i comandi ti dicono informazioni sul tuo sistema nativo che effettivamente esegue Windows. Non è niente come l'esecuzione di una VM in cui ci sono diverse interfacce di rete e filesismi diversi.
Tuttavia, comandi come lsblk non funzionerà, perché l'archiviazione a blocchi di livello inferiore non è ciò che Linux si aspetta che sia. Allo stesso modo, l'installazione di OpenZFS è inutile perché OpenZFS installa alcuni moduli di kernel carichi e non abbiamo un kernel Linux solo un'illusione.
Lo stesso vale se stai cercando di eseguire Docker. Durante l'installazione di Docker, Ubuntu non si lamenterà, tuttavia, il servizio Docker non si avvia, in quanto dipende da SystemD che è assente in questo sottosistema.
Puoi, tuttavia, gestire una pletora di servizi e utility per semplificarti la vita. Se gestisci i server Linux per vivere, non devi avere anche Linux sul tuo desktop. Puoi eseguire client SSH, client Docker, bash, utility come Grep e Awk, nonché il tuo linguaggio di programmazione preferito da Python a arrugginire in questo ambiente senza inquinare il sistema Windows.
Puoi anche eseguire l'automazione CD/CI utilizzando Ansible, Puppet o qualsiasi altra tecnologia che preferisci. Vale a dire, tutto ciò che un devano, uno sviluppatore di applicazione o un tester richiederebbe da un sistema Linux può essere raggiunto con WSL ad eccezione delle persone che lavorano con il software di sistema e/o lo sviluppo del kernel.
Ho i tuoi pensieri o esperienza con il sottosistema di Windows su Linux? O forse hai ancora domande a cui hai bisogno di risposte. Contattaci con le tue domande e tratteremo questo argomento per te.