Configurazione delle impostazioni avanzate in WSL

I file wsl.conf e .wslconfig vengono usati per configurare le opzioni di impostazioni avanzate, in base alla distribuzione () e a livello globale in tutte le distribuzioni WSL 2 (wsl.conf.wslconfig). Questa guida illustra ognuna delle opzioni di impostazioni, quando usare ogni tipo di file, dove archiviare il file, i file di impostazioni di esempio e i suggerimenti.

Qual è la differenza tra wsl.conf e .wslconfig?

È possibile configurare le impostazioni per le distribuzioni Linux installate che verranno applicate automaticamente ogni volta che si avvia WSL in due modi usando:

  • .wslconfig per configurare le impostazioni a livello globale in tutte le distribuzioni installate in esecuzione in WSL 2.
  • wsl.conf per configurare le impostazioni per distribuzione per le distribuzioni Linux in esecuzione in WSL 1 o WSL 2.

Entrambi i tipi di file vengono usati per configurare le impostazioni WSL, ma il percorso in cui viene archiviato il file, l'ambito della configurazione e la versione di WSL che esegue la distribuzione ha tutto l'impatto sul tipo di file da scegliere.

La versione di WSL in esecuzione influisce sulle impostazioni di configurazione. WSL 2 viene eseguito come macchina virtuale leggera, quindi usa le impostazioni di virtualizzazione che consentono di controllare la quantità di memoria o processori usati (che possono essere noti se si usa Hyper-V o VirtualBox).

wsl.conf

  • Archiviata nella /etc directory della distribuzione come file unix.
  • Usato per configurare le impostazioni in base alla distribuzione. Le impostazioni configurate in questo file verranno applicate solo alla distribuzione Linux specifica che contiene la directory in cui viene archiviato il file.
  • Può essere usato per le distribuzioni eseguite da una versione, WSL 1 o WSL 2.
  • Per accedere alla /etc directory per una distribuzione installata, usare la riga di comando della distribuzione con cd / per accedere alla directory radice, quindi ls elencare i file o explorer.exe . visualizzare in Windows Esplora file. Il percorso della directory dovrebbe essere simile al seguente: /etc/wsl.conf.

.wslconfig

  • Archiviato nella %UserProfile% directory.
  • Usato per configurare le impostazioni a livello globale in tutte le distribuzioni Linux installate in esecuzione come versione di WSL 2.
  • Può essere usato solo per le distribuzioni eseguite da WSL 2. Le distribuzioni in esecuzione come WSL 1 non saranno interessate da questa configurazione perché non sono in esecuzione come macchina virtuale.
  • Per accedere alla directory, in PowerShell, usare cd ~ per accedere alla %UserProfile% home directory (che in genere è il profilo utente, C:\Users\<UserName>) oppure aprire Windows Esplora file e immettere %UserProfile% nella barra degli indirizzi. Il percorso della directory dovrebbe essere simile al seguente: C:\Users\<UserName>\.wslconfig.

WSL rileva l'esistenza di questi file, legge il contenuto e applica automaticamente le impostazioni di configurazione ogni volta che si avvia WSL. Se il file non è presente o non valido (formattazione del markup non corretto), WSL continuerà a essere avviato come normale senza le impostazioni di configurazione applicate.

Controllare quale versione di WSL è in esecuzione.

Nota

La modifica delle impostazioni per distribuzione con il file wsl.conf è disponibile solo in Windows Build 17093 e versioni successive.

8 seconda regola

È necessario attendere fino a quando il sottosistema che esegue la distribuzione Linux smette completamente di eseguire e riavviare per visualizzare gli aggiornamenti dell'impostazione di configurazione. Questo richiede in genere circa 8 secondi dopo la chiusura di TUTTE le istanze della shell di distribuzione.

Se si avvia una distribuzione (ad esempio. Ubuntu), modificare il file di configurazione, chiudere la distribuzione e quindi riavviarlo. È possibile presupporre che le modifiche di configurazione siano state immediatamente applicate. Questo non è attualmente il caso in cui il sottosistema potrebbe comunque essere in esecuzione. È necessario attendere che il sottosistema si arresti prima di riavviare per dare tempo sufficiente per la selezione delle modifiche. È possibile verificare se la distribuzione Linux (shell) è ancora in esecuzione dopo la chiusura tramite PowerShell con il comando : wsl --list --running. Se non vengono eseguite distribuzioni, si riceverà la risposta: "Non sono in esecuzione distribuzioni". È ora possibile riavviare la distribuzione per visualizzare gli aggiornamenti di configurazione applicati.

Il comando wsl --shutdown è un percorso rapido per riavviare le distribuzioni di WSL 2, ma verrà arrestato tutte le distribuzioni in esecuzione, quindi usare in modo saggio.

Impostazioni di configurazione per wsl.conf

Il file wsl.conf configura le impostazioni in base alla distribuzione. Per la configurazione globale delle distribuzioni di WSL 2, vedere .wslconfig.

Il file wsl.conf supporta quattro sezioni: automount, network, interope user. (Modellato dopo .ini convenzioni di file, le chiavi vengono dichiarate in una sezione, ad esempio file .gitconfig. Per informazioni su dove archiviare il file wsl.conf, vedere wsl.conf .

supporto systemd

Molte distribuzioni Linux eseguono "systemd" per impostazione predefinita (tra cui Ubuntu) e WSL ha aggiunto recentemente il supporto per questo system/service manager in modo che WSL sia ancora più simile all'uso delle distribuzioni Linux preferite in un computer bare metal. È necessaria la versione 0.67.6+ di WSL per abilitare il sistema. Controllare la versione WSL con il comando wsl --version. Se è necessario aggiornare, è possibile acquisire la versione più recente di WSL in Microsoft Store. Altre informazioni nell'annuncio di blog.

Per abilitare il sistema, aprire il wsl.conf file in un editor di testo usando sudo per le autorizzazioni di amministratore e aggiungere queste righe a /etc/wsl.conf:

[boot]
systemd=true

Sarà quindi necessario chiudere la distribuzione WSL usando wsl.exe --shutdown PowerShell per riavviare le istanze WSL. Dopo il riavvio della distribuzione, il sistema deve essere in esecuzione. È possibile confermare l'uso del comando : systemctl list-unit-files --type=service, che mostrerà lo stato dei servizi.

Impostazioni di montaggio automatico

Etichetta di sezione: [automount]

Key Valore default di HDInsight
Enabled boolean true true causa il montaggio automatico delle unità fisse (ad esempio C:/ o D:/) con DrvFs in /mnt. false significa che le unità non verranno montate automaticamente, ma è comunque possibile montarle manualmente o tramite fstab.
mountFsTab boolean true true specifica che /etc/fstab venga elaborato all'avvio di Sottosistema Windows per Linux. /etc/fstab è un file in cui puoi dichiarare altri file system, ad esempio una condivisione SMB. In questo modo puoi montare questi file system automaticamente in Sottosistema Windows per Linux all'avvio.
root string /mnt/ Imposta la directory in cui verranno montate automaticamente le unità fisse. Per impostazione predefinita, questa opzione è impostata su /mnt/, quindi il file system C-drive di Windows viene montato su /mnt/c/. Se si passa /mnt/ a /windir/, è consigliabile visualizzare l'unità C fissa montata su /windir/c.
opzioni Elenco delimitato da virgole di valori, ad esempio uid, gid e così via, vedere opzioni di smontaggio automatico di seguito stringa vuota I valori delle opzioni di montaggio automatico sono elencati di seguito e vengono aggiunti alla stringa di opzioni di montaggio DrvFs predefinite. È possibile specificare solo opzioni specifiche di DrvFs.

Le opzioni di montaggio automatico vengono applicate come opzioni di montaggio per tutte le unità montate automaticamente. Per modificare le opzioni per un'unità specifica, usare invece il /etc/fstab file. Le opzioni che il file binario di montaggio analizza normalmente in un flag non sono supportate. Se si desidera specificare in modo esplicito tali opzioni, è necessario includere ogni unità per cui si vuole eseguire questa operazione in /etc/fstab.

Opzioni di montaggio automatico

L'impostazione di opzioni di montaggio diverse per le unità Windows (DrvFs) consente di controllare la modalità di calcolo delle autorizzazioni per i file di Windows. Sono disponibili le opzioni seguenti:

Chiave Descrizione Predefinito
uid ID utente usato per il proprietario di tutti i file ID utente predefinito della distribuzione WSL (nella prima installazione questa impostazione predefinita è 1000)
gid ID gruppo usato per il proprietario di tutti i file ID gruppo predefinito della distribuzione WSL (nella prima installazione questa impostazione predefinita è 1000)
umask Maschera ottale delle autorizzazioni da escludere per tutti i file e le directory 7000
fmask Maschera ottale delle autorizzazioni da escludere per tutti i file 7000
dmask Maschera ottale delle autorizzazioni da escludere per tutte le directory 7000
metadata Indica se i metadati vengono aggiunti ai file di Windows per supportare le autorizzazioni del sistema Linux disabled
case Determina le directory considerate come distinzione tra maiuscole e minuscole e se le nuove directory create con WSL avranno il flag impostato. Per una spiegazione dettagliata delle opzioni, vedere la riservatezza delle maiuscole e minuscole. Le opzioni includono off, diro force. off

Per impostazione predefinita, WSL imposta l'interfaccia utente e gid sul valore dell'utente predefinito. Ad esempio, in Ubuntu l'utente predefinito è uid=1000, gid=1000. Se questo valore viene usato per specificare un'opzione gid o uid diversa, il valore utente predefinito verrà sovrascritto. In caso contrario, il valore predefinito verrà sempre accodato.

User file-creation mode mask (umask) imposta l'autorizzazione per i file appena creati. Il valore predefinito è 022, è possibile scrivere solo i dati, ma chiunque può leggere i dati. I valori possono essere modificati in modo da riflettere diverse impostazioni di autorizzazione. Ad esempio, umask=077 le modifiche all'autorizzazione per essere completamente private, nessun altro utente può leggere o scrivere dati. Per specificare ulteriormente l'autorizzazione, è anche possibile usare fmask (file) e dmask (directory).

Nota

le maschere delle autorizzazioni vengono sottoposte a un'operazione OR logica prima di essere applicate a file e directory.

Che cos'è DrvFs?

DrvFs è un plug-in file system di WSL progettato per supportare l'interoperabilità tra WSL e il file system Di Windows. DrvFs consente a WSL di montare unità con file system supportati in /mnt, ad esempio /mnt/c, /mnt/d e così via. Per altre informazioni sulla specifica del comportamento di riservatezza delle maiuscole e minuscole predefinite durante il montaggio di unità o directory Di Windows o Linux, vedere la pagina di riservatezza dei casi.

Impostazioni di rete

Etichetta di sezione: [network]

Key Valore default di HDInsight
generateHosts boolean true true imposta Sottosistema Windows per Linux in modo da generare /etc/hosts. Il file hosts contiene una mappa statica di nomi host corrispondenti a un indirizzo IP.
generateResolvConf boolean true true imposta Sottosistema Windows per Linux in modo da generare /etc/resolv.conf. resolv.conf contiene un elenco DNS in grado di risolvere un determinato nome host nel relativo indirizzo IP.
hostname string Nome host Di Windows Imposta il nome host da usare per la distribuzione WSL.

Impostazioni di interoperabilità

Etichetta di sezione: [interop]

Queste opzioni sono disponibili in Insider build 17713 e versioni successive.

Key Valore default di HDInsight
Enabled boolean true L'impostazione di questa chiave determinerà se Sottosistema Windows per Linux supporterà l'avvio dei processi di Windows.
appendWindowsPath boolean true L'impostazione di questa chiave determinerà se Sottosistema Windows per Linux aggiungerà gli elementi del percorso di Windows alla variabile di ambiente $PATH.

Impostazioni utente

Etichetta di sezione: [user]

Queste opzioni sono disponibili in Build 18980 e versioni successive.

Key Valore default di HDInsight
default string Nome utente iniziale creato per la prima esecuzione L'impostazione di questa chiave specifica l'utente da eseguire come quando si avvia prima una sessione WSL.

Impostazioni di avvio

L'impostazione di avvio è disponibile solo in Windows 11 e Server 2022.

Etichetta di sezione: [boot]

Key Valore default di HDInsight
. string "" Stringa del comando che si desidera eseguire all'avvio dell'istanza di WSL. Questo comando viene eseguito come utente radice. ad esempio: service docker start.

File wsl.conf di esempio

Il wsl.conf file di esempio seguente illustra alcune delle opzioni di configurazione disponibili. In questo esempio la distribuzione è Ubuntu-20.04 e il percorso del file è \\wsl.localhost\Ubuntu-20.04\etc\wsl.conf.

# Automatically mount Windows drive when the distribution is launched
[automount]

# Set to true will automount fixed drives (C:/ or D:/) with DrvFs under the root directory set above. Set to false means drives won't be mounted automatically, but need to be mounted manually or with fstab.
enabled = true

# Sets the directory where fixed drives will be automatically mounted. This example changes the mount location, so your C-drive would be /c, rather than the default /mnt/c. 
root = /

# DrvFs-specific options can be specified.  
options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off"

# Sets the `/etc/fstab` file to be processed when a WSL distribution is launched.
mountFsTab = true

# Network host settings that enable the DNS server used by WSL 2. This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1).
[network]
hostname = DemoHost
generateHosts = false
generateResolvConf = false

# Set whether WSL supports interop process like launching Windows apps and adding path variables. Setting these to false will block the launch of Windows processes and block adding $PATH environment variables.
[interop]
enabled = false
appendWindowsPath = false

# Set the user when launching a distribution with WSL.
[user]
default = DemoUser

# Set a command to run when a new WSL instance launches. This example starts the Docker container service.
[boot]
command = service docker start

Impostazione di configurazione per .wslconfig

Il file con estensione wslconfig configura le impostazioni a livello globale per tutte le distribuzioni Linux in esecuzione con WSL 2. Per la configurazione per distribuzione vedere wsl.conf.

Per informazioni su dove archiviare il file . wslconfig, vedere .wslconfig .

Nota

Le opzioni di configurazione globali con .wslconfig sono disponibili solo per le distribuzioni in esecuzione come WSL 2 in Windows Build 19041 e versioni successive. Tenere presente che potrebbe essere necessario eseguire wsl --shutdown per arrestare la macchina virtuale WSL 2 e quindi riavviare l'istanza WSL per queste modifiche da influire.

Questo file può contenere le opzioni seguenti che influiscono sulla macchina virtuale che attiva qualsiasi distribuzione di WSL 2:

Etichetta di sezione: [wsl2]

Key Valore default di HDInsight
kernel path Posta in arrivo del kernel compilato da Microsoft Percorso assoluto di Windows a un kernel Linux personalizzato.
memoria size 50% della memoria totale in Windows o 8 GB, che tuttavia è minore; sulle build precedenti al 20175: 80% della memoria totale in Windows Quantità di memoria da assegnare alla macchina virtuale WSL 2.
processori d'acquisto Lo stesso numero di processori in Windows Numero di processori da assegnare alla macchina virtuale WSL 2.
localhostForwarding boolean true Boolean che specifica se le porte associate a caratteri jolly o localhost nella macchina virtuale WSL 2 devono essere connettebili dall'host tramite localhost:port.
kernelCommandLine string Vuoto Argomenti aggiuntivi della riga di comando del kernel.
swap size 25% delle dimensioni della memoria in Windows arrotondate fino al GB più vicino Quantità di spazio di scambio da aggiungere alla macchina virtuale WSL 2, 0 per nessun file di scambio. L'archiviazione di scambio è una RAM basata su disco usata quando la domanda di memoria supera il limite nel dispositivo hardware.
Swapping path %USERPROFILE%\AppData\Local\Temp\swap.vhdx Percorso assoluto di Windows per il disco rigido virtuale di scambio.
pageReporting boolean true L'impostazione predefinita consente a Windows di recuperare memoria inutilizzata true allocata alla macchina virtuale WSL 2.
guiApplications Boolean* true Boolean per attivare o disattivare il supporto per le applicazioni GUI (WSLg) in WSL. Disponibile solo per Windows 11.
debugConsole Boolean* false Boolean per attivare una finestra della console di output che mostra il contenuto di all'inizio di dmesg un'istanza di distribuzione WSL 2. Disponibile solo per Windows 11.
nestedVirtualization Boolean* true Boolean per attivare o disattivare la virtualizzazione annidata, consentendo ad altre macchine virtuali annidate di eseguire all'interno di WSL 2. Disponibile solo per Windows 11.
vmIdleTimeout Numero* 60000 Numero di millisecondi che una macchina virtuale è inattiva, prima di arrestarla. Disponibile solo per Windows 11.

Le voci con il path valore devono essere percorsi di Windows con barre rovesciate di escape, ad esempio: C:\\Temp\\myCustomKernel

Le voci con il size valore devono essere una dimensione seguita da un'unità, ad esempio 8GB o 512MB.

Le voci con un * dopo il tipo di valore sono disponibili solo in Windows 11.

Esempio di file .wslconfig

Il .wslconfig file di esempio seguente illustra alcune delle opzioni di configurazione disponibili. In questo esempio il percorso del file è C:\Users\<UserName>\.wslconfig.

# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB 

# Sets the VM to use two virtual processors
processors=2

# Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
kernel=C:\\temp\\myCustomKernel

# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
kernelCommandLine = vsyscall=emulate

# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=8GB

# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
swapfile=C:\\temp\\wsl-swap.vhdx

# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=false

# Turn off default connection to bind WSL 2 localhost to Windows localhost
localhostforwarding=true

# Disables nested virtualization
nestedVirtualization=false

# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
debugConsole=true

Risorse aggiuntive