Настройка дополнительных параметров в WSL
Файлы wsl.conf и WSLconfig используются для настройки дополнительных параметров на основе распределения (wsl.conf
) и глобально во всех дистрибутивах WSL 2 (.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 для каждого дистрибутива 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 2 см . в .wslconfig).
Файл wsl.conf поддерживает четыре раздела: automount
, , network
interop
и 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 — это подключаемый модуль файловой системы к 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
ниже пример файла демонстрирует некоторые доступные параметры конфигурации. В этом примере дистрибутив — 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 во всех установленных дистрибутивах, работающих в 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-файл настраивает параметры глобально для всех дистрибутивов Linux, работающих с WSL 2. (Сведения о конфигурации для каждого дистрибутива см. в wsl.conf).
Сведения о том, где хранить wslconfig-файл wslconfig, см . в .wslconfig .
Примечание
Настройка глобальных .wslconfig
параметров доступна только для дистрибутивов, работающих как WSL 2 в Сборке Windows 19041 и более поздних версий. Помните, что вам может потребоваться выполнить запуск wsl --shutdown
, чтобы завершить работу виртуальной машины WSL 2, а затем перезапустить экземпляр WSL, чтобы эти изменения вступили в силу.
Этот файл может содержать следующие параметры, влияющие на виртуальную машину, которая управляет любым дистрибутивом WSL 2:
Метка раздела 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
ниже пример файла демонстрирует некоторые доступные параметры конфигурации. В этом примере путь к файлу имеет значение 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
Отзыв о Windows Subsystem for Linux
Windows Subsystem for Linux — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: