Configuração avançada de configurações no WSL

Os arquivos WSL. conf e . wslconfig são usados para definir as opções de configurações avançadas, por distribuição ( ) e globalmente em todas as distribuições de WSL 2 ( ). Este guia abordará cada uma das opções de configurações, quando usar cada tipo de arquivo, onde armazenar o arquivo, exemplos de arquivos de configurações e dicas.

Qual é a diferença entre WSL. conf e. wslconfig?

Você pode definir as configurações para suas distribuições do Linux instaladas que serão aplicadas automaticamente sempre que você iniciar o WSL de duas maneiras, usando:

  • . wslconfig para definir as configurações globalmente em todas as distribuições instaladas em execução no WSL 2.
  • WSL. conf para definir configurações por distribuição para distribuições do Linux em execução no WSL 1 ou no WSL 2.

Ambos os tipos de arquivo são usados para definir as configurações de WSL, mas o local em que o arquivo está armazenado, o escopo da configuração e a versão do WSL que executa a distribuição todos afetam o tipo de arquivo a ser escolhido.

A versão do WSL que você está executando afetará as definições de configuração. O WSL 2 é executado como uma VM (máquina virtual leve), portanto, usa as configurações de virtualização que permitem controlar a quantidade de memória ou os processadores usados (o que pode ser familiar se você usar o Hyper-V ou o VirtualBox).

WSL. conf

  • Armazenado no /etc diretório da distribuição.
  • Usado para definir as configurações de acordo com a distribuição. Configurações configuradas nesse arquivo serão aplicadas somente à distribuição específica do Linux que contém o diretório onde esse arquivo está armazenado.
  • Pode ser usado para distribuições executadas por qualquer versão, WSL 1 ou WSL 2.
  • para obter o /etc diretório de uma distribuição instalada, use a linha de comando da distribuição com cd / para acessar o diretório raiz e, em seguida, ls para listar arquivos ou explorer.exe . exibir em Windows explorador de arquivos. O caminho do diretório deve ser semelhante a: /etc/wsl.conf .

.wslconfig

  • Armazenados em seu %UserProfile% diretório.
  • Usado para definir as configurações globalmente em todas as distribuições Linux instaladas em execução como a versão WSL 2.
  • Pode ser usado somente para distribuições executadas pelo WSL 2. As distribuições em execução como WSL 1 não serão afetadas por essa configuração, pois não estão sendo executadas como uma máquina virtual.
  • para obter o %UserProfile% diretório, no PowerShell, use cd ~ para acessar seu diretório base (que normalmente é seu perfil de usuário C:\Users\<UserName> ), ou você pode abrir Windows explorador de arquivos e digitar %UserProfile% na barra de endereços. O caminho do diretório deve ser semelhante a: C:\Users\<UserName>\.wslconfig .

O WSL detectará a existência desses arquivos, lerá o conteúdo e aplicará automaticamente os parâmetros de configuração sempre que você iniciar o WSL. Se o arquivo estiver ausente ou malformado (formatação de marcação incorreta), o WSL continuará a ser iniciado normalmente sem as definições de configuração aplicadas.

Verifique qual versão do WSL você está executando.

Observação

o ajuste de configurações por distribuição com o arquivo wsl. conf só está disponível no Windows Build 17093 e posterior.

A regra de 8 segundos

Você deve aguardar até que o subsistema executando sua distribuição do Linux interrompa completamente a execução e reinicie para que as atualizações de definição de configuração apareçam. Normalmente, isso leva cerca de 8 segundos após o fechamento de todas as instâncias do Shell de distribuição.

Se você iniciar uma distribuição (isto é, Ubuntu), modifique o arquivo de configuração, feche a distribuição e, em seguida, inicie-o novamente. Você pode supor que as alterações de configuração tenham entrado imediatamente em vigor. Esse não é o caso no momento, pois o subsistema ainda pode estar em execução. Você deve aguardar até que o subsistema pare antes de reiniciar para dar tempo suficiente para que suas alterações sejam coletadas. Você pode verificar se sua distribuição do Linux (Shell) ainda está em execução depois de fechá-la usando o PowerShell com o comando: wsl --list --running . Se nenhuma distribuição estiver em execução, você receberá a resposta: "não há distribuições em execução". Agora você pode reiniciar a distribuição para ver suas atualizações de configuração aplicadas.

O comando wsl --shutdown é um caminho rápido para reiniciar as distribuições do WSL 2, mas ele desligará todas as distribuições em execução e, portanto, será usado com sabedoria.

Definições de configuração para WSL. conf

O arquivo WSL. conf define as configurações de acordo com a distribuição. (Para configuração global de distribuições do WSL 2, consulte . wslconfig).

O arquivo WSL. conf dá suporte a quatro seções: automount ,, networkinterop e user . (Modeladas após .ini as convenções de arquivo, as chaves são declaradas em uma seção, como arquivos. gitconfig.) Consulte WSL. conf para obter informações sobre onde armazenar o arquivo WSL. conf.

Configurações de montagem automática

Rótulo da seção: [automount]

chave value padrão HDInsight
Habilitado booleano true true faz com que unidades fixas (ou seja, C:/D:/ ) sejam montadas automaticamente com DrvFs em /mnt . false significa que as unidades não serão montadas automaticamente, mas você ainda poderá montá-las manualmente ou por meio do fstab .
mountFsTab booleano true O true define o /etc/fstab para ser processado no início do WSL. /etc/fstab é um arquivo no qual você pode declarar outros sistemas de arquivos, como um compartilhamento SMB. Assim, você pode montar esses sistemas de arquivos automaticamente no WSL na inicialização.
root string /mnt/ Define o diretório em que as unidades fixas serão montadas automaticamente. por padrão, isso é definido como /mnt/ , para que seu Windows sistema de arquivos C-drive seja montado /mnt/c/ . Se você mudar /mnt/ para /windir/ o, deverá esperar ver sua unidade C fixa montada em /windir/c .
opções lista de valores separados por vírgulas, como UID, GID, etc., consulte as opções de montagem automática abaixo cadeia de caracteres vazia Os valores de opção de montagem automática estão listados abaixo e são anexados à cadeia de opções de montagem padrão do DrvFs. Somente opções específicas do DrvFs podem ser especificadas.

As opções de montagem automática são aplicadas como opções de montagem para todas as unidades montadas automaticamente. Para alterar as opções somente para uma unidade específica, use o /etc/fstab arquivo em vez disso. As opções que o binário de montagem normalmente analisa em um sinalizador não são compatíveis. Se você quiser especificar explicitamente essas opções, deverá incluir todas as unidades nas quais deseja fazer isso /etc/fstab .

Opções de montagem automática

A configuração de diferentes opções de montagem para unidades do Windows (DrvFs) pode controlar como as permissões de arquivos são calculadas para arquivos do Windows. As seguintes opções estão disponíveis:

Chave Descrição Padrão
uid A ID de usuário usada para o proprietário de todos os arquivos A ID de usuário padrão de seu WSL distribuição (na primeira instalação, esse padrão é 1000)
gid A ID de grupo usada para o proprietário de todos os arquivos A ID de grupo padrão de seu WSL distribuição (na primeira instalação, esse padrão é 1000)
umask Uma máscara octal de permissões a serem excluídas para todos os arquivos e diretórios 000
fmask Uma máscara octal de permissões a serem excluídas para todos os arquivos 000
dmask Uma máscara octal de permissões a serem excluídas para todos os diretórios 000
metadata Se os metadados são adicionados a arquivos Windows para dar suporte a permissões do sistema Linux desabilitado
case Determina os diretórios tratados como sensíveis a minúsculas e se os novos diretórios criados com o WSL terão o sinalizador definido. Confira a sensibilidade de caso para ver uma explicação detalhada das opções. off

Por padrão, o WSL define o uid e o gid com o valor do usuário padrão. Por exemplo, no Ubuntu, o usuário padrão é uid=1000, gid=1000. Se esse valor for usado para especificar uma opção gid ou uid diferente, o valor de usuário padrão será substituído. Caso contrário, o valor padrão será sempre acrescentado.

A máscara de modo de criação de arquivo do usuário (umask) define a permissão para arquivos recém-criados. O padrão é 022, somente você pode gravar dados, mas qualquer pessoa pode ler dados. Os valores podem ser alterados para refletir diferentes configurações de permissão. Por exemplo, umask=077 altera a permissão para ser completamente privada, nenhum outro usuário pode ler ou gravar dados. Para especificar ainda mais a permissão, fmask (arquivos) e dmask (diretórios) também podem ser usados.

Observação

as máscaras de permissão passam por uma operação OR lógica antes de serem aplicadas a arquivos ou diretórios.

Configurações de rede

Rótulo da seção: [network]

chave value padrão HDInsight
generateHosts booleano true O true define o WSL para gerar /etc/hosts. O arquivo hosts contém um mapa estático do endereço IP correspondente de nomes de host.
generateResolvConf booleano true O true define o WSL para gerar /etc/resolv.conf. O resolv.conf contém uma lista DNS que é capaz de resolver um determinado nome de host para seu endereço IP.

Configurações de interop

Rótulo da seção: [interop]

Essas opções estão disponíveis no Insider Build 17713 e posterior.

chave value padrão HDInsight
Habilitado booleano true Definir essa chave determinará se o WSL dará suporte à inicialização de processos do Windows.
appendWindowsPath booleano true Definir essa chave determinará se o WSL adicionará elementos de caminho do Windows à variável de ambiente $PATH.

Configurações do usuário

Rótulo da seção: [user]

Essas opções estão disponíveis no Build 18980 e posterior.

chave value padrão HDInsight
padrão string O nome de usuário inicial criado na primeira vez Definir essa chave especifica qual usuário executar como ao iniciar uma sessão WSL pela primeira vez.

Configurações de inicialização

A configuração inicialização só está disponível no Windows 11.

Rótulo da seção: [boot]

chave value padrão HDInsight
. string "" Uma cadeia de caracteres do comando que você gostaria de executar quando a instância WSL é iniciada. Esse comando é executado como o usuário raiz. por exemplo: disponível service docker start somente para Windows 11.

Exemplo de arquivo wsl.conf

O wsl.conf arquivo de exemplo abaixo demonstra algumas das opções de configuração disponíveis. Neste exemplo, a distribuição é Ubuntu-20.04 e o caminho do arquivo é \\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

Definição de configuração para .wslconfig

O arquivo .wslconfig define as configurações globalmente para todas as distribuições do Linux em execução com o WSL 2. (Para a configuração por distribuição, consulte wsl.conf).

Consulte .wslconfig para obter informações sobre onde armazenar o arquivo .wslconfig.

Observação

As opções de configuração global com só estão disponíveis para distribuições em execução como .wslconfig WSL 2 no Windows Build 19041 e posterior. Tenha em mente que talvez seja necessário executar para desligar a VM do WSL 2 e reiniciar a instância do WSL para que essas alterações wsl --shutdown afetem.

Esse arquivo pode conter as seguintes opções que afetam a VM que alimenta qualquer distribuição WSL 2:

Rótulo da seção: [wsl2]

chave value padrão HDInsight
kernel string A caixa de entrada fornecida pelo kernel criado pela Microsoft Um caminho Windows absoluto para um kernel do Linux personalizado.
memória size 50% da memória total em Windows ou 8 GB, o que for menor; em builds antes de 20175: 80% da memória total no Windows Quanto memória atribuir à VM do WSL 2.
processadores número O mesmo número de processadores em Windows Quantos processadores atribuir à VM do WSL 2.
localhostForwarding booleano true Booliana especificando se as portas vinculadas a curinga ou localhost na VM WSL 2 devem ser conectáveis do host por meio de localhost:port .
kernelCommandLine string Em branco Argumentos de linha de comando de kernel adicionais.
swap size 25% do tamanho da memória no Windows arredondado para os GB mais próximos Quanto espaço de permuta adicionar à VM WSL 2, 0 para nenhum arquivo de permuta. O armazenamento de permuta é a RAM baseada em disco usada quando a demanda de memória excede o limite do dispositivo de hardware.
Permuta string %USERPROFILE%\AppData\Local\Temp\swap.vhdx um caminho de Windows absoluto para o disco rígido virtual de permuta.
pageReporting booleano true truea configuração padrão permite que Windows recupere a memória não utilizada alocada para a máquina virtual WSL 2.
guiApplications Boolean true Booliano para ativar ou desativar o suporte para aplicativos de GUI (WSLg) em WSL. disponível somente para Windows 11.
debugConsole Boolean false Booliano para ativar uma janela de console de saída que mostra o conteúdo de dmesg após o início de uma instância do WSL 2 distribuição. disponível somente para Windows 11.
nestedVirtualization Boolean true Booliano para ativar ou desativar a virtualização aninhada, permitindo que outras VMs aninhadas sejam executadas dentro do WSL 2. disponível somente para Windows 11.
vmIdleTimeout automática 60000 O número de milissegundos durante os quais uma VM está ociosa, antes de ser desligada. disponível somente para Windows 11.

as entradas com o path valor devem ser Windows caminhos com barras invertidas de escape, por exemplo:C:\\Temp\\myCustomKernel

As entradas com o size valor devem ser um tamanho seguido por uma unidade, por exemplo, 8GB ou 512MB .

as entradas com um * após o tipo de valor só estão disponíveis no Windows 11.

Arquivo. wslconfig de exemplo

O .wslconfig arquivo de exemplo a seguir demonstra algumas das opções de configuração disponíveis. Neste exemplo, o caminho do arquivo é 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