Поделиться через


Настройка дополнительных параметров в 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 1 и WSL 2 выполняются с другой архитектурой и влияют на параметры конфигурации. WSL 2 выполняется как упрощенная виртуальная машина, поэтому использует параметры виртуализации, позволяющие управлять объемом памяти или процессорами (которые могут быть знакомы при использовании Hyper-V или VirtualBox). Проверьте, какая версия WSL запущена.

Второе правило для изменений конфигурации

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

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

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

wsl.conf

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

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

Примечание.

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

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

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

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

системная поддержка

Многие дистрибутивы Linux по умолчанию запускают "systemd" (включая Ubuntu) и WSL недавно добавили поддержку для этого system/service manager, чтобы WSL был еще более похож на использование любимых дистрибутивов Linux на компьютере без операционной системы. Для включения systemd вам потребуется версия 0.67.6+ WSL. Проверьте версию WSL с помощью команды wsl --version. Если вам нужно обновить, вы можете получить последнюю версию WSL в Microsoft Store. Дополнительные сведения см. в объявлении блога.

Чтобы включить системный файл, откройте wsl.conf файл в текстовом редакторе, используя sudo разрешения администратора, и добавьте следующие строки в /etc/wsl.conf:

[boot]
systemd=true

Затем необходимо закрыть дистрибутив WSL с помощью wsl.exe --shutdown PowerShell, чтобы перезапустить экземпляры WSL. После перезапуска дистрибутива система должна выполняться. Вы можете подтвердить с помощью команды: systemctl list-unit-files --type=serviceкоторая будет отображать состояние служб.

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

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

key значение default примечаниями
enabled boolean true true Вызывает автоматическое соединение фиксированных дисков (т C:/ . е. или D:/) с drvFs /mnt. false означает, что диски не будут автоматически подключены, но вы все равно можете подключить их вручную или через fstab.
mountFsTab boolean true Значение 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. Имеются следующие варианты:

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

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

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

Примечание.

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

Что такое DrvFs?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

key значение default примечаниями
command строка "" Строка команды, которую вы хотите выполнить при запуске экземпляра 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 processes 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 во всех установленных дистрибутивах, работающих в WSL.

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

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

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

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

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

Примечание.

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

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

Основные параметры WSL

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

key значение default примечаниями
kernel path Встроенное ядро Майкрософт, предоставленное в папке "Входящие" Абсолютный путь к пользовательскому ядру Linux.
memory size 50 % общей памяти в Windows Объем памяти для назначения виртуальной машине WSL 2.
processors number Одинаковое количество логических процессоров в Windows Сколько логических процессоров назначается виртуальной машине WSL 2.
localhostForwarding boolean true Логическое значение, указывающее, должны ли порты, привязанные к подстановочным знакам или localhost в виртуальной машине WSL 2, подключались через узел localhost:port.
kernelCommandLine строка Пробел Дополнительные аргументы командной строки ядра.
safeMode boolean false Запустите WSL в "Безопасном режиме", который отключает множество функций и предназначен для восстановления дистрибутивов, которые находятся в плохих состояниях. Доступно только для Windows 11 и WSL версии 0.66.2+.
swap size 25 % объема памяти в Windows округляется до ближайшего ГБ Сколько места переключения для добавления в виртуальную машину WSL 2 не требуется. Хранилище буфера — это дисковый ОЗУ, используемый при превышении требований к памяти на аппаратном устройстве.
swapFile path %USERPROFILE%\AppData\Local\Temp\swap.vhdx Абсолютный путь Windows к виртуальному жесткому диску подкачки.
pageReporting boolean true Параметр по умолчанию true позволяет Windows освободить неиспользуемую память, выделенную виртуальной машине WSL 2.
guiApplications boolean true Логическое значение для включения или отключения поддержки приложений GUI (WSLg) в WSL.
debugConsole* boolean false Логическое значение для включения выходного окна консоли, отображающего содержимое dmesg экземпляра дистрибутива WSL 2. Доступно только для Windows 11.
nestedVirtualization* boolean true Логическое значение для включения или отключения вложенной виртуализации, что позволяет другим вложенным виртуальным машинам выполняться внутри WSL 2. Доступно только для Windows 11.
vmIdleTimeout* number 60000 Количество миллисекунда, которое виртуальная машина неактивна, прежде чем завершить работу. Доступно только для Windows 11.
dnsProxy boolean true Применимо только к сетиMode = NAT. Логическое значение для информирования WSL о настройке DNS-сервера в Linux для NAT на узле. Параметр false будет зеркально отображать DNS-серверы из Windows в Linux.
networkingMode** строка NAT Если значение имеет значение mirrored , это включает зеркальный сетевой режим. По умолчанию или нераспознанные строки приводят к сети NAT.
firewall** boolean true Если задано значение true, правила брандмауэра Windows, а также правила, относящиеся к трафику Hyper-V, можно фильтровать сетевой трафик WSL.
dnsTunneling** boolean true Изменение того, как dns-запросы проксиируются из WSL в Windows
autoProxy* boolean true Принудительно применяет WSL для использования сведений о прокси-сервере Windows
defaultVhdSize size 1099511627776 (1TB) Задайте размер виртуального жесткого диска (VHD), в который хранится файловая система дистрибутива Linux (например, Ubuntu). Можно использовать для ограничения максимального размера файловой системы распространения.

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

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

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

Записи с ** после типа значения требуют Windows 11 версии 22H2 или более поздней.

Экспериментальные параметры

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

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

Имя настройки Значение По умолчанию Примечания.
autoMemoryReclaim строка disabled Автоматически освобождает кэшированную память после обнаружения простоя использования ЦП. gradual Установите значение для медленного выпуска и dropcache для мгновенного выпуска кэшированного объема памяти.
sparseVhd bool false Если задано значение true, все только что созданные виртуальные жесткие диски будут автоматически разрежены.
bestEffortDnsParsing** bool false Применимо только в том случае, если wsl2.dnsTunneling задано значение true. Если задано значение true, Windows извлекает вопрос из DNS-запроса и пытается устранить его, игнорируя неизвестные записи.
dnsTunnelingIpAddress** строка 10.255.255.254 Применимо только в том случае, если wsl2.dnsTunneling задано значение true. Указывает сервер имен, который будет настроен в файле с разрешением.conf Linux при включении туннелирования DNS.
initialAutoProxyTimeout* строка 1000 Применимо только в том случае, если wsl2.autoProxy задано значение true. Указывает, сколько времени (в миллисекундах) WSL ожидает получения сведений о прокси-сервере HTTP при запуске контейнера WSL. Если параметры прокси-сервера разрешаются после этого времени, экземпляр WSL должен быть перезапущен для использования полученных параметров прокси-сервера.
ignoredPorts** строка null Применимо только в том случае, если wsl2.networkingMode задано значение mirrored. Указывает, к каким портам могут привязаться приложения Linux, даже если этот порт используется в Windows. Это позволяет приложениям прослушивать порт только в Linux, поэтому эти приложения не блокируются даже в тех случаях, когда этот порт используется для других целей в Windows. Например, WSL разрешает привязку к порту 53 в Linux для Docker Desktop, так как он прослушивает только запросы из контейнера Linux. Должен быть отформатирован в разделенном запятыми списке, например: 3000,9000,9090
hostAddressLoopback** bool false Применимо только в том случае, если wsl2.networkingMode задано значение mirrored. Если задано Trueзначение , контейнер сможет подключиться к узлу или узлу подключиться к контейнеру по IP-адресу, назначенному узлу. Этот 127.0.0.1 параметр всегда может использоваться для использования всех дополнительных локальных IP-адресов. Поддерживаются только адреса IPv4, назначенные узлу.

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

Записи с ** после типа значения требуют Windows версии 22H2 или более поздней.

Пример 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 on default connection to bind WSL 2 localhost to Windows localhost. Setting is ignored when networkingMode=mirrored
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

# Enable experimental features
[experimental]
sparseVhd=true

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