Windows 10 версии 1903 содержит ряд интересных изменений и улучшений, внесенных в функцию WSL. К ним относятся дополнительные дистрибутивы в Магазине, возможность просматривать файлы WSL в Проводнике и многое другое.
Возможность запуска Linux в Windows 10 обеспечивается функцией WSL. WSL это — Windows Subsystem for Linux, которая изначально была ограничена только Ubuntu. Современные версии WSL позволяют устанавливать и запускать несколько дистрибутивов Linux из Microsoft Store.
После включения WSL вы можете устанавливать различные версии Linux из Магазина, используя следующие ссылки:
Ссылки на дистрибутивы в магазине microsoft:
Ubuntu | openSUSE Leap | SUSE Linux Enterprise Server | Debain GNU / Linux | Kali Linux
В Windows 10 версии 1903 вы можете легко получить доступ ко всем файлам в ваших дистрибутивах Linux с помощью проводника Windows. На момент написания статьи эта функция реализована в сборке Windows 10 18836. Она находится на пути к ветви 19h1, поэтому мы увидим ее в следующей сборке. Вот как это можно сделать.
Чтобы получить доступ к файлам WSL Linux из проводника Windows 10 , выполните следующие действия.
Шаг 1: Включить функцию WSL (Подситема Windows для Linux)
Шаг 2: Установите какой-нибудь дистрибутив, например Ubuntu, и запустите его.
Подробнее в нашей статье: Руководство по установке и запуску — Ubuntu Bash в Windows 10.
Шаг 3: Находясь в каталоге Linux FS, введите^
explorer.exe .
Откроется окно проводника, расположенное внутри вашего дистрибутива Linux.
Теперь вы можете получить доступ к любым файлам Linux, так же, как и к любому другому файлу через проводник. Это включает в себя такие операции, как: перетаскивание файлов в другие места, копирование и вставка и даже использование пользовательских записей контекстного меню, добавленных Notepad ++, VSCode или другим программным обеспечением.
Проводник показывает файлы дистрибутива как виртуальный сетевой ресурс по пути \\ wsl $ \ <running_distro_name> \.
Команда WSL активно исследует способы улучшения обнаруживаемости файлов Linux внутри Проводника. Ход их работы уже можно увидеть в Windows 10 Build 18836, которая показывает файловую систему WSL / Linux в File Explorer.
Доступ к файлам Linux в командной строке
В дополнение к Проводнику вы можете использовать классическую командную строку и инструменты PowerShell для доступа к файлам Linux. Точно так же вам нужно перейти к \\wsl$\{имя дистрибутива}\, где {имя дистрибутива} — это имя работающего дистрибутива.
Известные вопросы
Это новая функция, и некоторые ее части могут не работать идеально. Вот некоторые известные проблемы, о которых мы хотим сообщить вам при использовании этой функции:
На данный момент файлы дистрибутивов будут доступны только из Windows, когда дистрибутив работает. Разработчик собирается добавить поддержку не работающих дистрибутивов в будущем обновлении.
Поскольку файловый сервер 9P работает внутри каждого дистрибутива, он доступен только тогда, когда этот дистрибутив работает. Команда ищет способы решить эту проблему.
Доступ к файлам Linux рассматривается так же, как и доступ к сетевому ресурсу, и все правила доступа к сетевым ресурсам будут по-прежнему применяться,
- Например: при использовании CMD cd \\wsl$\Ubuntu\home не будет работать (поскольку CMD не поддерживает пути UNC, так как текущие каталоги), однако будет работать copy \\wsl$\Ubuntu\home\somefile.txt C:\dev\
- Старые правила по-прежнему применяются, вы не должны получать доступ к файлам Linux внутри папки AppData!
- Если вы пытаетесь получить доступ к своим файлам Linux через папку AppData, вы используете обход сервера 9P, что означает, что у вас не будет доступа к файлам Linux, и вы можете повредить ваш дистрибутив Linux.
Примечание: Сервер 9P — это сервер, который содержит протоколы, поддерживающие метаданные Linux, включая разрешения. Демон инициализации WSL теперь включает сервер 9P. Существует служба Windows и драйвер, который действует как клиент и взаимодействует с сервером 9P (который работает внутри экземпляра WSL). Клиент и сервер обмениваются данными через сокеты AF_UNIX, поскольку WSL позволяет взаимодействовать между приложением Windows и приложением Linux, используя AF_UNIX.
Have you ever wondered, how to access the windows file system through WSL? If the answer is yes you are in the right place!
Microsoft WSL has given us an incredible way to access the windows file system, you have just to navigate through an exact path to do it. Without further due, let’s dive into the topic.
1. Use the cd command in the Linux terminal.
To access the windows files you have to navigate through /mnt/your_windows_path
cd /mnt/c/Users
**OR**
cd /mnt/d/your_folder/your_folder
Enter fullscreen mode
Exit fullscreen mode
Now you have access to every file in the Linux and Windows file systems.
2. Moving files between the two systems through WSL.
If you want to move files between the two operating systems you can simply use the cp or mv commands.
cp — command for copying files
mv — command for moving files
Use of cp command
cp /mnt/c/file.txt /home/username/Documents
Enter fullscreen mode
Exit fullscreen mode
Use of mv command
mv /mnt/c/file.txt /home/username/Documents
Enter fullscreen mode
Exit fullscreen mode
3. Editing windows files through WSL.
To edit windows files through the Linux terminal using WSL, you have to use any text editor that can be opened in the terminal. One of the most famous text editors is nano. In our example, I am going to use the nano editor.
Type into the terminal nano and the path to the file.
sudo nano /mnt/c/Users/file.txt
Enter fullscreen mode
Exit fullscreen mode
Now you can edit freely files from your terminal.
4. Creating files in windows through WSL.
To create a file in a specific windows directory you have first to navigate to it and then use the touch command to create a file.
touch — a command that creates a file.
!!! The file extension can be anything you want.
cd /mnt/c/Users/Public/Documents/
touch filename.txt
Enter fullscreen mode
Exit fullscreen mode
The file is created and can be opened from both systems.
5. Deleting files from the windows file system through WSL.
To delete windows files using WSL, you have to navigate to the directory where the file lives and use the rm command.
rm — a command that deletes files / directories
cd /mnt/c/Users/Public
sudo rm example_file.jpg
Enter fullscreen mode
Exit fullscreen mode
Congratulations you learned 5 vital skills about working with the Linux terminal. 🎺🎺🎺
If you have any questions, comment down, I will answer as soon as possible.
Свежая инсайдерская сборка Windows 10 с индексом «20211» позволяет монтировать физические диски внутри WSL 2, тем самым открывая возможность получить доступ к файловым системам, не поддерживающимся Windows нативно (например, ext4). Если вы используете две системы параллельно на разных дисках, то теперь вы сможете получать доступ к файлам Linux из под Windows.
Подготовка
Для монтирования диска, необходимо открыть PowerShell с привилегиями администратора и выполнить следующую команду:
wsl —mount <Путь к диску>
Для отображения всех доступных дисков надо выполнить:
wmic diskdrive list brief
Демонтировать диск из WSL 2 можно командой
wsl —unmount <Путь к диску>
Пути к дискам можно узнать в колонке DeviceID. Обычно он представлен в виде \\.\\\.\PHYSICALDRIVE*.
Доступ к файлам через «Проводник»
Как только диск смонтирован, к нему можно получить доступ через «Проводник», перейдя по пути \wsl$ и смонтировав папку.
Ограничения
По стандарту wsl —mount пытается смонтировать диск как ext4. Для того, чтобы указать другую файловую систему, необходимо использовать команду
wsl —mount <Путь к диску> -t <Тип файловой системы>
Список всех доступных файловых систем можно узнать, введя
cat /proc/filesystems
Также важно отметить, что только целые физические диски могут быть смонтированы в WSL 2. На текущий момент невозможно присоединить только один раздел. Кроме того, хотя и есть поддержка дисков USB, устройства USB Flash не могут подключаться к WSL 2.
Внимание: Это перевод статьи из блога Microsoft.
Windows Subsystem for Linux (WSL) предоставляет ряд удобных возможности подключения физических, виртуальных и сетевых дисков. По умолчанию в среде wsl в каталог
/mnt/
монтируются все логические диски, которые доступны в Windows. Кроме того, вы можете прямо из проводника Windows обратиться к файловой системе WSL по UNC пути
\\wsl$\
(например,
\\wsl$\ubuntu\etc\
).
В этой статье мы рассмотрим, как смонтировать различные типы дисков в среде WSL.
Содержание:
- Монтирование физических дисков Windows Subsystem for Linux 2
- Как подключить (смонтировать) сетевой диск в WSL
- Смонтировать виртуальный VHD/VHDX диск в WSL
Монтирование физических дисков Windows Subsystem for Linux 2
Новая версия Windows Subsystem for Linux (WSL 2) позволяет монтировать физические диски, или отдельные разделы с файловыми системами, которые не поддерживаются в Windows (список поддерживаемых файловых систем содержится в файле
/proc/filesystems
).
Например, у вас есть физический на которым созданы разделы с файловой системой диск ext4, и вы хотите получить к нему доступ из WSL и Windows.
Обновите свою версию WSL 2, прежде чем двигаться дальше:
wsl --update
Теперь нужно вывести список доступных дисковых устройств в Windows:
wmic diskdrive list brief
В этом примере к компьютеру подключены два физических диска.
Можно смонтировать в WSL диск целиком:
wsl --mount \\.\PHYSICALDRIVE2
Или только определенный раздел:
wsl --mount \\.\PHYSICALDRIVE2 --partition 1
Раздел физического диска был успешно смонтирован в директорию /mnt/wsl/PHYSICALDRIVE2p1.
Вы можете получить доступ к файлам на этом разделе из Windows по UNC пути
\\wsl$\ubuntu\mnt\wsl\PHYSICALDRIVE2p1
.
Проверьте, что раздел диска с файловой системой ext4 доступен в WSL:
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT
Чтобы отмонтировать диск, выполните:
wsl --umount \\.\PHYSICALDRIVE2 --partition 1
Для автоматического монтирования раздела физического диска при входе пользователя в Windows, создайте с помощью PowerShell простое задание планировщика:
$TaskName="WSL_Mount"
$Trigger= New-ScheduledTaskTrigger -AtLogOn
$Action= New-ScheduledTaskAction -Execute "cmd" -Argument "/c wsl --mount \\.\PHYSICALDRIVE2 --partition 1"
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -Action $Action -RunLevel Highest –Force
На данный момент WSL не поддерживает монтирование USB накопителей и SD карт. Для проброса USB накопителей в WSL рекомендуется использовать пакет usbipd-win, который позволяет реализовать проброс устройств с помощью протокола USB over IP.
Как подключить (смонтировать) сетевой диск в WSL
Из WSL вы можете получить доступ к общим сетевым папкам или NAS устройствам.
Есть два способа подключения сетевых дисков в WSL:
- Можно смонтировать сетевой диск, подключенный в Windows и которому назначена буква диска
- Смонитировать сетевую папку по UNC пути с помощью CIFS/SMB клиента в WSL.
Допустим, вы подключили сетевую папку в виде диска с помощью команды net.exe use X: \\192.168.31.102\tools или подключили сетевой диск через GPO. Чтобы получить доступ к этому сетевому диску из WSL нужно:
- Создать точку монтирования:
$ sudo mkdir /mnt/x
- Смонтировать диск:
$ sudo mount -t drvfs X: /mnt/x
- Теперь вы можете получить доступ к файлам и папкам на сетевом диске.
Чтобы автоматически монтировать этот сетевой диск, добавьте следующую строку в /etc/fstab:
X: /mnt/x drvfs defaults 0 0
Затем смонтируйте все файловые системы:
$ mount -a
Также можно смонтировать сетевые папки через пакет CIFS:
$ sudo apt install cifs-utils
$ sudo mount -t cifs -o user={user},pass={password},iocharset=utf8,vers=3.0 //192.168.31.102/tools /mnt/tools
Смонтировать виртуальный VHD/VHDX диск в WSL
WSL позволяет смонтировать виртуальные диски в форматах VHD/VHDX.
Если на компьютере установлен роль или PowerShell модуль Hyper-V, вы можете создать новый виртуальный диск с помощью команды:
New-VHD -Path $env:USERPROFILE\wsl_shared_disk.vhdx -Dynamic -SizeBytes 20GB
Затем смонтируйте виртуальный VHDX диск в WSL:
wsl --mount --vhd $env:USERPROFILE\wsl_shared_disk.vhdx --bare
Теперь вы можете создать на виртуальном диске таблицу разделов и раздел с файловой системой ext4:
$ lsblk
$ sudo parted /dev/sdc print
$ sudo parted /dev/sdc mklabel msdos
$ sudo parted -a optimal /dev/sdc mkpart primary ext4 0% 100%
$ lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT /dev/sdc
$ sudo mkfs.ext4 /dev/sdd1
Чтобы смонтировать новый раздел в определенную директорию, нужно получить его UUID;
$ sudo blkid
$ sudo mount UUID= 506f6faa-1f50-4763-b8a1-975f2b1c59fe /home/sysops/vhdx
Этот способ позволит смонтировать виртуальные диски других сред Linux, которые установлены на этом компьютере под WSL. Файловая система образов Linux WSL хранится в виртуальных дисках ext4.vhdx в папке
C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName]
. Если на системном диске недостаточно места, можно перенести vhdx файл с файловой системой образа WSL на другой диск.
Подсистема Windows для Linux (WSL) — это функция операционной системы Windows, которая позволяет запускать среду GNU / Linux внутри Windows — без затрат на традиционную виртуальную машину или настройку с двойной загрузкой. WSL требует меньше ресурсов (CPU, памяти и места на диске), чем полноценная виртуальная машина. WSL также позволяет запускать инструменты и приложения командной строки Linux наряду с приложениями командной строки Windows, а также получать доступ к файлам Windows из Linux. Это позволяет при желании использовать приложения Windows и инструменты командной строки Linux для одного и того же набора файлов. Поддерживается множество дистрибутивов, включая Ubuntu, Debian, Kali Linux, OpenSUSE и другие. Можно установить свой дистрибутив, импортировав образ в формате tar.gz.
Общие сведения
Установить WSL можно на Windows 10 версии 2004 (сборка 19041) и выше и Windows 11. Для работы с ним лучше всего использовать Windows Terminal.
WSL использует собственную файловую систему, отделённую от файловой системы Windows (так как в Linux дискам не присваиваются буквы, а предоставляются точки монтирования). Корень файловой системы — /
— точка монтирования корневого раздела (или папки в случае с WSL). WSL использует файловую систему Windows как смонтированный диск, и доступ к какому-либо каталогу (к примеру, к диску C:\
) в Windows из WSL можно получить по пути /mnt/c/
.
Из Windows можно получить доступ к приложениям, запущенным в Linux. Например, доступ к сайту можно получить как обычно — localhost:port. Однако в некоторых случаях следует использовать IP-адрес для подключения (ip:port), который можно взять в файле /etc/resolv.conf
— из-за того, что в WSL 2 используется собственный виртуальный адаптер Ethernet со своим уникальным IP-адресом.
Установка
Подсистема WSL поставляется вместе с ОС Windows, однако её необходимо предварительно включить. Можно использовать упрощенную команду, в таком случае подсистема включится и установить дистрибутив Ubuntu (он используется по умолчанию):
С параметром --no-distibution
можно только включить WSL, не устанавливая дистрибутив:
1 |
wsl --install --no-distribution |
После первой установки (или включения WSL) может потребоваться перезагрузка компьютера.
В целом установка дистрибутивов доступна несколькими способами:
- через Microsoft Store;
- через Windows Terminal командой
wsl --install
или аналогичной; - через Windows Terminal, экспортировав необходимый дистрибутив.
Список доступных для установки из терминала дистрибутивов можно получить командой:
1 2 |
wsl --list --online wsl -l -o |
На 7 августа 2023 года список следующий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS Ubuntu-22.04 Ubuntu 22.04 LTS OracleLinux_7_9 Oracle Linux 7.9 OracleLinux_8_7 Oracle Linux 8.7 OracleLinux_9_1 Oracle Linux 9.1 openSUSE-Leap-15.5 openSUSE Leap 15.5 SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4 SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5 openSUSE-Tumbleweed openSUSE Tumbleweed |
Нужный из списка дистрибутив можно установить командой:
1 2 |
wsl --install -d <DistName> wsl --install -d Debian |
Установку можно дополнить ключом --no-launch
, тогда WSL не будет запускать дистрибутив сразу после установки. При этом дистрибутив не будет отображаться среди установленных — выполнение команды означает только загрузку дистрибутива для последующего повторного выполнения wsl --install
.
Каждый раз, когда устанавливается новый дистрибутив WSL Linux, для него в Windows Terminal создаётся новый профиль для подключения.
По умолчанию дистрибутивы создаются в каталоге C:\Users\username\AppData\Local\Packages
.
После завершения процесса установки дистрибутива будет предложено создать нового пользователя и установить ему пароль. Этот пользователь относится к каждому устанавливаемому дистрибутиву и не имеет отношения к пользователю Windows. После создания пользователя, он станет пользователем по умолчанию (будет автоматически входить в систему при запуске) и учетная запись будет считаться администратором Linux (с правами выполнения sudo
).
Изменение языка дистрибутива
При установке дистрибутива WSL пытается автоматически определить и применить локаль в соответствии с локализацией Windows. Если ей это сделать не удаётся, можно изменить язык принудительно (после выполнения перезагрузить дистрибутив):
1 |
sudo update-locale LANG=en_US.UTF8 |
Дополнительные команды WSL
Работа дистрибутивов
Запустить дистрибутив по умолчанию в домашнем каталоге пользователя можно следующей командой:
Для запуска другого дистрибутива (не по умолчанию) следует указать параметр --distribution
:
1 |
wsl --distribution <DistName> |
Можно запустить дистрибутив из-под другого пользователя:
1 |
wsl --user <Username> # или wsl -u <Username> |
Дистрибутив по умолчанию указывается параметров --set-default-version
:
1 |
wsl --set-default <DistName> |
С параметром --set-version
можно указать версию WSL (1 или 2), с которой требуется запустить тот или иной дистрибутив:
1 |
wsl --set-version <DistName> <VersionNumber> |
Завершить работу одного конкретного или сразу всех дистрибутивов можно следующим образом:
1 2 |
wsl --terminate <DistName> # завершить работу <DistName> wsl --shutdown # завершает работу всех запущенных дистрибутивов |
Удаляется дистрибутив параметров -unregister
:
1 |
wsl --unregister <DistName> |
Параметры WSL
Обновить WSL можно следующей командой:
1 2 |
wsl --update # версия с Microsoft Store wsl --update --web-download # версия с Github |
Текущая конфигурация WSL выводится при передаче параметра --status
или --version
:
1 2 |
wsl --status wsl --version |
Установить версию WSL по умолчанию (1 или 2) можно параметром --set-default-version
:
1 |
wsl --set-default-version <VersionNumber> |
Монтировать дополнительные разделы в дистрибутивы можно параметром --mount
. Он содержит следующие ключи:
--vhd
— указывает, что монтируется виртуальный жесткий диск;--name
— монтируется диск с пользовательским именем;--bare
— подключает, но не монтирует диск;--type <Filesystem>
— тип файловой системы, используемый при монтировании (ext4 по умолчанию);--partition <PartNumber>
— порядковый номер раздела при монтировании.
Для монтирования разделов необходимы права администратора
1 |
wsl --mount C:\Users\Profile\Projects\FirstProject |
Размонтировать один конкретный раздел или все можно командой --unmount
:
1 2 |
wsl --unmount <DiskPath> # размонтировать <DiskPath> wsl --unmount # размонтировать все диски и разделы |
Список дистрибутивов
Команда --list
показывает список дистрибутивов. Дополнительный ключ к команде может отфильтровать вывод:
--all
— показывает все дистрибутивы;--verbose
— показывает установленные дистрибутивы;--running
— показывает только запущенные дистрибутивы;--quiet
— отображает только названия.
Работа с WSL
Изменение хостнейма
Для начала необходимо добавить нужное имя в файл /etc/wsl.conf
в раздел network
:
1 2 3 |
[network] hostname = ubuntu_wsl generateHosts = false |
После этого следует поменять хостнейм в файле /etc/hostname
:
1 2 |
ubuntu_wsl /etc/hostname |
Взаимодействие с Windows
Для максимальной производительности рекомендуется хранить файлы для работы в Linux в файловой системе WSL — в той же операционной системе, где они используются. Доступ к файлам возможен из разных ОС, но это значительно снижает производительность.
В дистрибутивах можно вызывать приложения WIndows и передавать в параметр файлы и каталоги Linux. Например, чтобы открыть текущий каталог в стандартном проводнике (Explorer), необходимо написать:
С файлами ситуация аналогичная:
В названии приложения обязательно нужно указывать разрешение (exe
).
Это работает и в обратную сторону — утилиты Linux можно запускать напрямую из PowerShell. Например, чтобы отобразить содержимое какого-либо каталога Windows, можно ввести:
Можно смешивать команды Windows и Linux. Например, можно отобразить список файлов ls -la
и отфильтровать результаты командой PowerShell findstr
или наоборот — отобразить каталоги командой dir
и отфильтровать командой grep
1 2 |
wsl ls -la | findstr "git" dir | wsl grep git |
Запуск графических приложений Linux
WSL 2 поддерживает запуск приложений с графическим интерфейсом (X11 и Wayland) в Windows с полностью интегрированным интерфейсом для ПК. Их можно запускать из меню “Пуск” Windows, закреплять на панели задач, переключаться между приложениями по Alt+Tab. Приложения поддерживают буфер обмена Windows.
Для запуска графических приложений необходим драйвер vGPU:
- Драйвер графического процессора Intel
- Драйвер графического процессора AMD
- Драйвер графического процессора NVIDIA
Для запуска приложения из консоли достаточно написать только его название или название с файлом (например, для редактирования) на примере gedit:
Сетевые приложения
IP-адрес хост-машины и IP-адрес Linux-дистрибутива в WSL могут быть разными. IP-адрес хост-машины — это IP-адрес самого компьютера, а IP-адрес Linux-дистрибутива — это IP-адрес, который присваивается в виртуальной сети WSL. Обычно IP-адрес Linux-дистрибутива настраивается автоматически и не зависит от настроек хост-машины.
1 2 |
wsl hostname -i # IP-адрес дистрибутива cat /etc/resolv.conf # IP-адрес компьютера с Windows |
Управление дисковым пространством
WSL 2 использует платформу виртуализации для установки дистрибутивов Linux вместе с основной операционной системой Windows, создавая виртуальный жесткий диск (VHD
) для хранения файлов для каждого из устанавливаемых дистрибутивов Linux. Эти жесткие диски используют тип файловой системы ext4
и представлены на жестком диске Windows в виде файла ext4.vhdx
. WSL автоматически изменяет размер этих файлов VHD в соответствии с потребностями хранилища. По умолчанию каждому VHD-файлу, используемому WSL 2, изначально выделяется максимальный объем дискового пространства в 1 ТБ.
Проверить объем дискового пространства, доступного на VHD для дистрибутива Linux, установленного вместе с WSL 2, с помощью команды Linux df
.
1 |
wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro |
Выходные данные будут включать:
- идентификатор файловой системы VHD;
- общий размер диска;
- используемый объем пространства;
- доступный объём свободного места;
- процент использования;
- путь к каталогу, в который смонтирован диск.
Путь к файлу диска:
1 |
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx" |
Конфигурации WSL и дистрибутивов
Файлы wsl.conf
и .wslconfig
используются для настройки дополнительных параметров для каждого дистрибутива (wsl.conf
) или глобально для всех дистрибутивов WSL 2 (.wslconfig
).
- файл
wsl.conf
хранится в каталоге/etc
в виде файла. Используется для настройки параметров каждого дистрибутива WSL 1 и WSL 2; - файл
.wslconfig
хранится в%UserProfile%
каталоге. Используется для настройки всех дистрибутивов Linux, работающих под управлением WSL 2.
WSL обнаруживает существование этих файлов, читает их содержимое и автоматически применяет параметры при каждом запуске. Если файл отсутствует или содержит ошибку, то WSL продолжит запускаться в обычном режиме, но без применения параметров конфигурации.
wsl.conf
Файл wsl.conf
настраивает параметры для каждого дистрибутива отдельно:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[boot] # доступна только на Windows 11 и Server 2022 systemd=true # включает поддержку systemd command="" # строка команд, которые должны запускаться при запуске экземпляра WSL. Команда запускается от имени root # command=service docker start [automount] enabled=true # автоматически монтировать диски Windows (C:\ и другие) с помощью DrvFs в /mnt/ mountFsTab=true # автоматически обрабатывает /etc/fstab при запуске дистрибутива root=/mnt/ # устанавливает каталог, куда будут монтироваться диски Windows options="" # параметры автоматического монтирования # options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off" [network] generateHosts=true # WSL сам генерирует файл /etc/hosts generateResolvConf=true # WSL сам генерирует файл /etc/resolv.conf hostname="Hostname" # устанавливает имя Unix-компьютера. По умолчанию - имя компьютера Windows [interop] enabled=true # установка этого ключа в true означает поддержку запуска Windows-процессов appendWindowsPath=true # установка этого ключа определяет, будет ли WSL добавлять элементы пути Windows в переменную окружения $PATH [user] default=Username # пользователь по умолчанию |
.wslconfig
Файл .wslconfig
настраивает параметры глобально для всех дистрибутивов Linux, работающих с WSL 2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[wsl2] kernel=path # абсолютный путь Windows к пользовательскому ядру Linux memory=4GB # объём выделяемой памяти для WSL (по умолчанию 50% или 8 Гбайт - меньшее из них) processors=10 # сколько логических процессов назначить WSL. По умолчанию - столько же, сколько и Windows localhostForwarding=true # логическое значение, указывающее, должны ли порты, привязанные к wildcard или localhost в виртуальной машине, подключаться с хоста через localhost:port kernelCommandLine=blank # дополнительные аргументы командной строки ядра safeMode=false # запускает экземпляр WSL в безопасном режиме swap=25% # сколько виртуальной памяти добавить к дистрибутиву swapFile=path # абсолютный путь к файлу swal pageReporting=true # позволяет Windows освобождать неиспользуемую в WSL память guiApplications=true # включение поддержки графических приложений (только в Windows 11) debugConsole=false # логическое значение для включения окна консоли вывода, отображающего содержимое dmesg при запуске экземпляра дистрибутива WSL (только в Windows 11) nestedVirtualization=true # включение вложенной виртуализации (только в Windows 11) vmIdleTimeout=60000 # количество миллисекунд, в течение которых виртуальная машина простаивает, прежде чем она будет выключена (только в Windows 11) |
Резервное копирование и перемещение
Лучший способ создать резервную копию или переместить дистрибутивы (в рамках одного ПК или на другой) — использовать команды экспорта и импорта, доступные в Windows с версии 1809. Можно экспортировать весь дистрибутив в архив с помощью команды wsl --export
. Затем его импортировать обратно в WSL с помощью команды wsl --import
, которая может указать новое расположение для импорта, что также сохранять состояния дистрибутива.
Экспорт дистрибутива требует много места на жестком диске. Если места недостаточно, то можно использовать методы Linux для перемещения всех файлов:
- архивировать домашний и другие необходимые каталоги командой
tar -czf <archiveName> <directory>
. После переноса на новый дистрибутив архив следует разархивировать командойtar -xzf <archiveName>
; - можно экспортировать список установленных пакетов через
apt
:dpkg --get-selections | grep -v deinstall | awl '{print $1}' > packages.txt
, а затем установить все приложения на новом дистрибутиве командойsudo apt install -y $(cat packages.txt)
.
При экспорте можно указать ключ --vhd
, указывающий, что дистрибутив следует экспортировать в виде файла VHDX
.
Команду импорта можно дополнить ключами --version <Version
— указывающий версию WSL (1 или 2) и --vhd
— указывающий, что представленный файл является файлом VHDX
, а не файлом tar.gz.
Файл tar можно получить разными способами, например:
- загрузить с сайта разработчика (при наличии);
- экспортировать контейнер дистрибутива.
Далее файл tar нужно импортировать в WSL:
1 2 3 4 5 6 7 |
# экспорт wsl --export <DistName> <Filename> wsl --export Debian C:\WSLDistros\export.tar.gz # импорт wsl --import <DistName> <InstallLocation> <FileName> wsl --import Debian C:\Users\username\WSL\ C:\Users\username\export.tar.gz |