Настройка дополнительных параметров в WSL

Файлы wsl.conf и .wslconfig используются для настройки дополнительных параметров для каждого распределения (wsl.conf) и глобально во всех дистрибутивах WSL 2 (.wslconfig). В этом руководстве рассматриваются все параметры параметров, когда следует использовать каждый тип файла, где хранить файл, примеры файлов параметров и советы.

В чем разница между wsl.conf и wslconfig?

Вы можете настроить параметры установленных дистрибутивов Linux, которые будут автоматически применяться при каждом запуске WSL двумя способами:

  • .wslconfig для глобальной настройки параметров во всех установленных дистрибутивах, работающих в WSL 2.
  • wsl.conf для настройки параметров для дистрибутивов Linux, работающих в WSL 1 или WSL 2.

Оба типа файлов используются для настройки параметров WSL, но расположение, в котором хранится файл, область конфигурации и версия WSL, запускающая дистрибутив, влияют на выбранный тип файла.

Версия WSL, которая выполняется, повлияет на параметры конфигурации. WSL 2 выполняется как упрощенная виртуальная машина, поэтому используются параметры виртуализации, позволяющие управлять объемом используемой памяти или процессоров (что может быть знакомо при использовании Hyper-V или VirtualBox).

wsl.conf

  • Хранится в каталоге /etc дистрибутива в виде файла UNIX.
  • Используется для настройки параметров для каждого распределения. Параметры, настроенные в этом файле, будут применяться только к конкретному дистрибутиву Linux, содержамму файлу.
  • Может использоваться для дистрибутивов под управлением любой версии, WSL 1 или WSL 2.
  • Чтобы перейти к каталогу /etc для установленного дистрибутива, используйте командную строку распространения для cd / доступа к корневому каталогу, а затем ls перечисления файлов или explorer.exe . просмотра в Windows проводник. Путь к каталогу должен выглядеть примерно так: /etc/wsl.conf.

.wslconfig

  • Хранится в каталоге %UserProfile% .
  • Используется для глобальной настройки параметров во всех установленных дистрибутивах Linux, работающих в качестве версии WSL 2.
  • Может использоваться только для дистрибутивов, выполняемых WSL 2. Дистрибутивы, работающие как WSL 1, не будут затронуты этой конфигурацией, так как они не работают в качестве виртуальной машины.
  • Чтобы перейти к каталогу%UserProfile%, в PowerShell используйте cd ~ для доступа к домашнему каталогу (обычно это ваш профиль C:\Users\<UserName>пользователя) или откройте Windows проводник и введите %UserProfile% его в адресной строке. Путь к каталогу должен выглядеть примерно так: C:\Users\<UserName>\.wslconfig.

WSL обнаруживает существование этих файлов, считывает содержимое и автоматически применяет параметры конфигурации при каждом запуске WSL. Если файл отсутствует или неправильно сформирован (неправильное форматирование разметки), WSL будет продолжать запускаться в обычном режиме без применения параметров конфигурации.

Проверьте, какая версия WSL запущена.

Примечание

Настройка параметров распределения с помощью файла wsl.conf доступна только в сборке Windows 17093 и более поздних версий.

8-секундный правило

Необходимо подождать, пока подсистема под управлением дистрибутива Linux полностью не будет запущена и перезапущена, чтобы обновления параметров конфигурации отображались. Обычно это занимает около 8 секунд после закрытия всех экземпляров оболочки распространения.

При запуске дистрибутива (т. е. Ubuntu), измените файл конфигурации, закройте дистрибутив и повторно запустите его. Вы можете предположить, что изменения конфигурации сразу же вступили в силу. В настоящее время это не так, как подсистема все еще может быть запущена. Необходимо дождаться остановки подсистемы перед перезапуском, чтобы дать достаточно времени для получения изменений. Вы можете проверить, запущен ли дистрибутив Linux (оболочка) после закрытия с помощью PowerShell с помощью команды: wsl --list --running Если дистрибутивы не выполняются, вы получите ответ "Нет запущенных дистрибутивов". Теперь можно перезапустить дистрибутив, чтобы увидеть примененные обновления конфигурации.

wsl --shutdown Команда — это быстрый путь к перезапуску дистрибутивов WSL 2, но она завершит работу всех запущенных дистрибутивов, поэтому используйте разумно.

Параметры конфигурации для wsl.conf

Файл wsl.conf настраивает параметры для каждого распределения. (Глобальная конфигурация дистрибутивов WSL 2 см. в .wslconfig).

Файл wsl.conf поддерживает четыре раздела: automount, , networkи interopuser. (Смоделировано после .ini соглашений о файлах, ключи объявляются в разделе, например в файлах gitconfig.) Сведения о том, где хранить файл wsl.conf, см. в файле wsl.conf .

Параметры автоматического отключения

Метка раздела: [automount]

ключ value default HDInsight
Включено Логическое Да true вызывает автоматическое соединение фиксированных дисков (т. е C:/D:/. ) с drvFs в разделе /mnt. false означает, что диски не будут подключены автоматически, но вы по-прежнему можете подключить их вручную или через fstab.
mountFsTab Логическое Да Значение true задает /etc/fstab для обработки при запуске WSL. /etc/fstab — это файл, в котором можно объявлять другие файловые системы, например общий ресурс SMB. Поэтому вы можете автоматически подключать эти файловые системы в WSL при запуске.
root строка /mnt/ Задает каталог, в который будут автоматически подключены несъемные диски. По умолчанию этот параметр имеет значение /mnt/, поэтому диск C-файловой системы Windows подключен к /mnt/c/. Если вы изменитесь /mnt//windir/на , вы должны ожидать, что фиксированный диск C подключен к /windir/c.
options Разделенный запятыми список значений, таких как uid, gid и т. д., см. параметры автоподключения ниже. пустая строка Значения параметров автоматического подключения перечислены ниже и добавляются к строке параметров подключения DrvFs по умолчанию. Можно указать только параметры, относящиеся к DrvFs.

Параметры автоматического подключения применяются в качестве параметров подключения для всех автоматически подключенных дисков. Чтобы изменить параметры только для конкретного диска, используйте /etc/fstab файл. Параметры, которые двоичный файл подключения обычно анализирует и преобразовывает во флаг, не поддерживаются. Если вы хотите явно указать эти параметры, необходимо включить каждый диск, для которого вы хотите сделать это./etc/fstab

Параметры автоматического отключения

Задание различных параметров подключения для дисков Windows (DrvFs) позволяет контролировать определение разрешений для файлов Windows. Доступны следующие варианты:

Ключ Описание По умолчанию
uid ИД пользователя, используемый для владельца всех файлов. Идентификатор пользователя дистрибутива WSL по умолчанию (при первой установке по умолчанию используется значение 1000).
gid Идентификатор группы, используемый для владельца всех файлов. Идентификатор группы по умолчанию дистрибутива WSL (при первой установке по умолчанию используется значение 1000).
umask Восьмеричная маска разрешений, исключаемых для всех файлов и каталогов. 000
fmask Восьмеричная маска разрешений, исключаемых для всех файлов. 000
dmask Восьмеричная маска разрешений, исключаемых для всех каталогов. 000
метаданные Добавление метаданных в файлы Windows для поддержки разрешений системы Linux disabled
case Определяет каталоги, которые обрабатываются как конфиденциальные регистры, и указывает, будут ли новые каталоги, созданные с помощью WSL, иметь набор флагов. Подробные сведения о параметрах см. в описании конфиденциальности регистра . Параметры включают off, dirили force. off

По умолчанию WSL задает для пользовательского интерфейса и gid значение пользователя по умолчанию. Например, в Ubuntu пользователь по умолчанию — uid=1000, gid=1000. Если это значение используется для указания другого параметра gid или uid, значение пользователя по умолчанию будет перезаписан. В противном случае всегда будет добавляться значение по умолчанию.

Маска режима создания пользовательских файлов (umask) задает разрешение для вновь созданных файлов. Значение по умолчанию — 022, только вы можете записывать данные, но любой пользователь может считывать данные. Значения можно изменить, чтобы отразить различные параметры разрешений. Например, umask=077 изменение разрешения на полностью закрытое, другие пользователи не могут считывать или записывать данные. Чтобы дополнительно указать разрешение, можно также использовать fmask (файлы) и маску (каталоги).

Примечание

Маски разрешений подвергаются логической операции ИЛИ перед применением к файлам или каталогам.

Что такое DrvFs?

DrvFs — это подключаемый модуль файловой системы для WSL, предназначенный для поддержки взаимодействия между WSL и файловой системой Windows. DrvFs позволяет WSL подключать диски с поддерживаемыми файловыми системами в папке /mnt, например /mnt/c, /mnt/d и т. д. Дополнительные сведения об указании поведения конфиденциальности регистра по умолчанию при подключении дисков или каталогов Windows или Linux см. на странице конфиденциальности регистра .

Параметры сети

Метка раздела: [network]

ключ value default HDInsight
generateHosts Логическое true Значение true указывает WSL создать /etc/hosts. Файл hosts содержит статическую карту имен узлов и соответствующих IP-адресов.
generateResolvConf Логическое true Значение true указывает WSL создать /etc/resolv.conf. Файл resolv.conf содержит список DNS-серверов, которые способны разрешить заданное имя узла в его IP-адрес.
hostname строка Имя узла Windows Задает имя узла, используемое для распространения WSL.

Параметры взаимодействия

Метка раздела: [interop]

Эти параметры доступны в выпусках для программы предварительной оценки, начиная со сборки 17713.

ключ value default HDInsight
Включено Логическое true Установка этого ключа определяет, будет ли WSL поддерживать запуск процессов Windows.
appendWindowsPath Логическое true Задание этого ключа определяет, будет ли WSL добавлять элементы пути Windows в переменную среды $PATH.

Параметры пользователя

Метка раздела: [user]

Эти параметры доступны в сборке 18980 и более поздних версий.

ключ value default HDInsight
default строка Исходное имя пользователя, созданное при первом запуске Установка этого ключа указывает, какой пользователь будет запускаться как при первом запуске сеанса WSL.

Параметры загрузки

Параметр загрузки доступен только в Windows 11 и Server 2022.

Метка раздела: [boot]

ключ value default HDInsight
. строка "" Строка команды, которую вы хотите выполнить при запуске экземпляра WSL. Эта команда выполняется от имени корневого пользователя. например: service docker start.

Пример файла wsl.conf

В wsl.conf приведенном ниже примере файла показаны некоторые доступные параметры конфигурации. В этом примере дистрибутивом является Ubuntu-20.04, а путь к файлу — \\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

Параметр конфигурации для WSLCONFIG

WSLCONFIG-файл глобально настраивает параметры для всех дистрибутивов Linux, работающих с WSL 2. (Сведения о конфигурации распределения см. в разделе wsl.conf).

Сведения о том, где хранить WSLCONFIG-файл, см. в файле WSLCONFIG .

Примечание

Глобальные параметры конфигурации доступны .wslconfig только для дистрибутивов, работающих как WSL 2 в сборке Windows 19041 и более поздних версий. Помните, что может потребоваться выполнить запуск wsl --shutdown , чтобы завершить работу виртуальной машины WSL 2, а затем перезапустить экземпляр WSL, чтобы эти изменения вступили в силу.

Этот файл может содержать следующие параметры, влияющие на виртуальную машину, которая обеспечивает любой дистрибутив WSL 2:

Метка раздела: [wsl2]

ключ value default HDInsight
ядро строка Встроенное ядро Майкрософт, предоставленное в папке "Входящие" Абсолютный путь Windows к пользовательскому ядру Linux.
Память size 50 % от общего объема памяти в Windows или 8 ГБ, в зависимости от того, что меньше; в сборках до 20175 г.: 80 % общей памяти в Windows Объем памяти для назначения виртуальной машине WSL 2.
обработчики number Одинаковое количество процессоров в Windows Сколько процессоров для назначения виртуальной машине WSL 2.
localhostForwarding Логическое true Логическое значение, указывающее, должны ли порты, привязанные к подстановочным знакам или localhost на виртуальной машине WSL 2, подключались с узла через localhost:port.
kernelCommandLine строка Пусто Дополнительные аргументы командной строки ядра.
swap size 25 % объема памяти в Windows округляется до ближайшего ГБ Сколько места подкачки можно добавить на виртуальную машину WSL 2, 0 для файла подкачки. Хранилище подкачки — это дисковый ОЗУ, используемый, если объем памяти превышает ограничение на аппаратном устройстве.
swapFile строка %USERPROFILE%\AppData\Local\Temp\swap.vhdx Абсолютный путь Windows к виртуальному жесткому диску подкачки.
pageReporting Логическое true Параметр по умолчанию true позволяет Windows освободить неиспользуемую память, выделенную виртуальной машине WSL 2.
guiApplications boolean* true Логическое значение для включения или отключения поддержки приложений графического пользовательского интерфейса (WSLg) в WSL. Доступно только для Windows 11.
debugConsole boolean* false Логическое значение для включения окна консоли вывода, отображающего содержимое dmesg экземпляра дистрибутива WSL 2. Доступно только для Windows 11.
nestedVirtualization boolean* true Логическое значение, позволяющее включить или отключить вложенную виртуализацию, позволяя другим вложенным виртуальным машинам выполняться в WSL 2. Доступно только для Windows 11.
vmIdleTimeout число* 60000 Количество миллисекундах, в которых виртуальная машина простаивает, прежде чем завершить работу. Доступно только для Windows 11.

Записи со path значением должны быть путями Windows с экранируемыми обратными косыми чертами, например: C:\\Temp\\myCustomKernel

Записи со size значением должны иметь размер, за которым следует единица измерения, например 8GB512MB.

Записи с типом *после типа значения доступны только в Windows 11.

Пример WSLCONFIG-файла

В .wslconfig приведенном ниже примере файла показаны некоторые доступные параметры конфигурации. В этом примере путь к файлу — 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

Дополнительные ресурсы