Конфигурация дополнительных параметров в WSL

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

В чем разница между WSL. conf и. вслконфиг?

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

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

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

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

WSL. conf

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

. вслконфиг

  • Хранится в %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 секунд после закрытия всех экземпляров оболочки распространителя.

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример файла 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

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

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

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

Примечание

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

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

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

ключ value значение по умолчанию HDInsight
ядро строка Входящие в состав ядра Microsoft абсолютный путь Windows к пользовательскому ядру Linux.
Память size 50% от общей памяти на Windows или 8 гб, в зависимости от того, какое значение меньше; в сборках до 20175:80% от общего объема памяти на Windows Объем памяти, назначаемый виртуальной машине WSL 2.
обработчики number То же число процессоров в Windows Количество процессоров, назначаемых виртуальной машине WSL 2.
локалхостфорвардинг Логическое true Логическое значение, указывающее, привязаны ли порты к подстановочным знакам или localhost на виртуальной машине WSL 2, с помощью localhost:port .
кернелкоммандлине строка Пусто Дополнительные аргументы командной строки ядра.
swap size 25% размера памяти на Windows округлено до ближайших гб Объем пространства подкачки для добавления в виртуальную машину WSL 2, 0 для файла подкачки. Подкачка хранилища — это дисковая память, используемая, когда потребность в памяти превышает ограничение на аппаратное устройство.
Файл подкачки строка %USERPROFILE%\AppData\Local\Temp\swap.vhdx абсолютный путь Windows к виртуальному жесткому диску для переключения.
пажерепортинг Логическое true параметр по умолчанию true позволяет Windows освободить неиспользуемую память, выделенную для виртуальной машины WSL 2.
гуиаппликатионс логическая true Логическое значение, чтобы включить или отключить поддержку приложений GUI (вслг) в WSL. доступно только для Windows 11.
дебугконсоле логическая false Логическое значение, чтобы включить окно консоли вывода, в котором отображается содержимое dmesg при запуске экземпляра WSL 2 дистрибутив. доступно только для Windows 11.
нестедвиртуализатион логическая true Логическое значение, которое включает или отключает вложенную виртуализацию, позволяя другим вложенным виртуальным машинам работать в WSL 2. доступно только для Windows 11.
вмидлетимеаут Нумерация 60000 Количество миллисекунд, в течение которых виртуальная машина бездействует до завершения работы. доступно только для Windows 11.

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

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

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

Пример файла вслконфиг

В .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