Importare qualsiasi distribuzione Linux da usare con WSL

È possibile usare qualsiasi distribuzione Linux all'interno del sottosistema Windows per Linux (WSL), anche se non è disponibile nel Microsoft Store, importandolo con un file tar.

Questo articolo illustra come importare la distribuzione Linux, CentOS, per l'uso con WSL ottenendo il file tar usando un contenitore Docker. Questo processo può essere applicato per importare qualsiasi distribuzione Linux.

Ottenere un file tar per la distribuzione

Prima di tutto è necessario ottenere un file tar che contiene tutti i file binari Linux per la distribuzione.

È possibile ottenere un file tar in diversi modi, due dei quali includono:

  • Scaricare un file tar fornito. È possibile trovare un esempio per Alpine nella sezione "Mini Root Filesystem" del sito Download di Alpine Linux.
  • Trovare un contenitore di distribuzione Linux ed esportare un'istanza come file tar. L'esempio seguente mostrerà questo processo usando il contenitore CentOS.

Recupero di un file tar per l'esempio CentOS

In questo esempio si userà Docker all'interno di una distribuzione WSL per ottenere il file tar per CentOS.

Prerequisiti

Esportare il tar da un contenitore

  1. Aprire la riga di comando (Bash) per una distribuzione Linux già installata da Microsoft Store (Ubuntu in questo esempio).

  2. Assicurarsi che Docker Desktop sia in esecuzione (oppure se Docker è installato nella distribuzione WSL avviare il servizio con sudo service docker start )

  3. Eseguire il contenitore CentOS all'interno di Docker:

    docker run -t --name wsl_export centos ls /
    
  4. Esportare l'ID contenitore in un file tar nell'unità c montata:

    docker export wsl_export > /mnt/c/temp/centos.tar
    
  5. Pulire il contenitore

    docker rm wsl_export
    

Esempio di esecuzione dei comandi precedenti

Questo processo esporta il file tar CentOS dal contenitore Docker in modo da poterlo importare per l'uso in locale con WSL.

Importare il file tar in WSL

Quando un file tar è pronto, è possibile importarlo usando il comando: wsl --import <Distro> <InstallLocation> <FileName>.

Esempio di importazione di CentOS

Per importare il file tar della distribuzione CentOS in WSL:

  1. Aprire PowerShell e assicurarsi di avere una cartella creata in cui archiviare la distribuzione.

    cd C:\temp
    mkdir E:\wslDistroStorage\CentOS
    
  2. Usare il comando wsl --import <DistroName> <InstallLocation> <InstallTarFile> per importare il file tar.

    wsl --import CentOS E:\wslDistroStorage\CentOS .\centos.tar
    
  3. Usare il comando wsl -l -v per verificare le distribuzioni installate.

    Esempio dei comandi precedenti in esecuzione in WSL

  4. Usare infine il comando wsl -d CentOS per eseguire la distribuzione centOS Linux appena importata.

Aggiungere componenti specifici di WSL come un utente predefinito

Per impostazione predefinita, quando si usa --import, si viene sempre avviati come utente radice. È possibile configurare il proprio account utente, ma si noti che il processo di configurazione varia leggermente in base a ogni distribuzione Linux diversa.

Per configurare l'account utente con la distribuzione CentOS appena importata, aprire prima PowerShell e avviare CentOS usando il comando :

wsl -d CentOS

Aprire quindi la riga di comando centOS. Usare questo comando per installare gli strumenti di impostazione sudo e password in CentOS, creare un account utente e impostarlo come utente predefinito. In questo esempio il nome utente sarà 'caloewen'.

Nota

Si vuole aggiungere il nome utente al file sudoers in modo che consenta all'utente di usare sudo. Il comando adduser -G wheel $myUsername aggiunge l'utente myUsername al gruppo di wheel. Agli utenti del gruppo wheel vengono concessi automaticamente privilegi sudo e possono eseguire attività che richiedono autorizzazioni elevate.

yum update -y && yum install passwd sudo -y
myUsername=caloewen
adduser -G wheel $myUsername
echo -e "[user]\ndefault=$myUsername" >> /etc/wsl.conf
passwd $myUsername

È ora necessario uscire da tale istanza e assicurarsi che tutte le istanze WSL vengano terminate. Avviare di nuovo la distribuzione per visualizzare il nuovo utente predefinito eseguendo questo comando in PowerShell:

wsl --terminate CentOS
wsl -d CentOS

Verrà ora visualizzato [caloewen@loewen-dev]$ come output in base a questo esempio.

Esempio del codice precedente in esecuzione in WSL

Per altre informazioni sulla configurazione delle impostazioni WSL, vedere Configurare le impostazioni con .wslconfig e wsl.conf.

Usare una distribuzione Linux personalizzata

È possibile creare una distribuzione Linux personalizzata, in pacchetto come app UWP, che si comporta esattamente come le distribuzioni WSL disponibili in Microsoft Store. Per informazioni su come, vedere Creazione di una distribuzione Linux personalizzata per WSL.