Настройка WSL
Теория по WSL¶
WSL (Windows Subsystem for Linux) включает установку подсистемы и её настройку после установки. WSL позволяет запускать Linux-среду прямо внутри Windows без необходимости устанавливать виртуальную машину или работать с dual-boot.
WSL 2 — использует полноценное ядро Linux, работающее на виртуальной машине Hyper-V. Рекомендуется использовать WSL 2, так как он ближе к «настоящемуму» Linux и поддерживает больше функций.
Установка¶
Установка WSL Windows 11¶
Windows 11 и - Windows 10 2004+ с билдом 19041 и выше — поддержка WSL встроена по умолчанию.
Cписок доступных дистрибутивов¶
wsl --list --online
Установка WSL¶
wsl --install -d <distName>
После завершения установки потребуется перезагрузка системы
WSL монтирует Linux-файлы в Windows в следующей директории: \\wsl$\Ubuntu\
Установить дистрибутив в качестве дистрибутива по умолчанию¶
wsl --set-default <Name> # <Name> - имя устанавливаемого по умолчанию дистрибутива
# сокращенно: wsl -s <Name>
Ручная установка WSL¶
Установим следующие компоненты Windows¶
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
После завершения установки потребуется перезагрузка системы
Скачаем и установим обновление ядра Linux для WSL2¶
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -OutFile "$($env:userprofile)\Downloads\wsl_update_x64.msi" -UseBasicParsing
Invoke-Item "$($env:userprofile)\Downloads\wsl_update_x64.msi"
rm "$($env:userprofile)\Downloads\wsl_update_x64.msi"
После завершения установки потребуется перезагрузка системы
Назначим версию WSL 2 в качестве среды по-умолчанию¶
wsl --set-default-version 2
Можно устновить дистрибутив Linux из Microsoft Store
Установка дистрибутива через PowerShell¶
Invoke-WebRequest https://aka.ms/wslubuntu2204 -OutFile ubuntu-2204.appx –UseBasicParsing
Add-AppxPackage .\ubuntu-2204.appx
Настройки параметров WSL и дистрибутивов Linux¶
Конфиг файлы
wsl.conf – файл с настройками конкретного дистрибутива Linux (находится в директории /etc)
.wslconfig – глобальные настройки WSL, которые применяются ко всем дистрибутовам (находится в профиле пользователя в %UserProfile%)
Удаление WSL-дистрибутива¶
Вывести список установленных версий Linux:
wsl --list
Удаление:
wsl --unregister Ubuntu
Удаление WSL-дистрибутива из другого дистрибутива¶
Список всех дистрибутивов:
wsl -l -v
Теперь удалите выбранный дистрибутив с помощью:
wsl.exe --unregister <distro_name>
Резервная копия дистрибутива¶
- Сначала составьте список всех установленных дистрибутивов WSL в вашей системе:
wsl -l -v - Создаём папку, где будем хранить резервные копии и открываем её в терминале
- Создаём резервную копию:
wsl --export <distribution_name> <filename.tar>
Импорт резервной копии¶
- Импорт дистрибутива WSL: Теперь откройте терминал в том месте, где вы создали файл резервной копии
- Импортируйте дистрибутив:
wsl --import <Distribution Name> <InstallLocation> <FileName> - Откройте импортированный дистрибутив:
wsl -d <distribution_name>
Команды для управления WSL¶
Проверить текущую версию ядра WSL¶
wsl --version
Обновить ядро WSL вручную¶
wsl --update
Откатится к предыдущему ядру WSL¶
wsl --update rollback
Вывести список установленных версий Linux¶
wsl --list
Вывести дистрибутив Linux, который используется по-умолчанию¶
wsl --status
Изменить дистрибутив по-умолчанию¶
wsl --set-default Ubuntu
Запустить определенный дистрибутив в WSL¶
wsl -d kali-linux
Завершить среду WSL из терминала Windows¶
wsl --shutdown
Завершить работу из Linux¶
sudo shutdown now
Завершение работы определенного дистрибутива Linux:¶
wsl --terminate <Distribution Name>
Войти в WSL Ubuntu под root и сбросить пароль¶
ubuntu config --default-user root
Passwd
Вернуть пользователя по умолчанию¶
ubuntu config --default-user your_username
Ускорение файловой системы¶
Локальные диски Windows монтируются в WSL в папку mnt
Вывести список файлов папок на диске C:
wsl
ls /mnt
ls/mnt/c
Перенос проектов в Linux-FS¶
Самый простой и эффективный способ – держать код и данные внутри файловой системы WSL:
Рабочая директория: /home/ваш_пользователь/проекты
Избегаем: C:\Users... для проектов (там медленнее).
Монтирование с опциями¶
- Если нужно подключать Windows-папки, добавьте в
/etc/wsl.conf:
[automount]
options = "metadata,uid=1000,gid=1000,case=off"
Затем выполняем:
sudo wsl --shutdown wsl
Теперь смонтированные диски будут быстрее работать с метаданными и правами.
Использование overlayfs¶
Для CI/CD и сборок можно монтировать временные оверлейные файловые системы:
sudo modprobe overlay
mkdir -p /mnt/overlay/{lower,upper,work,merged}
sudo mount -t overlay overlay -o lowerdir=/mnt/c/папка,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work /mnt/overlay/merged
Разгрузка IO и потрясающая скорость!
Оптимизация сетевого взаимодействия¶
Фиксируем DNS¶
Задержка может быть из-за Windows-DNS. В /etc/resolv.conf пропишите:
nameserver 1.1.1.1
nameserver 8.8.8.8
Затем запретите автогенерацию:
sudo chattr +i /etc/resolv.conf
Быстрый доступ к локальным сервисам¶
Добавьте в C:\Windows\System32\drivers\etc\hosts:
127.0.0.1 myapp.local
В WSL будет мгновенный отклик без долгого DNS-lookup.
TCP-оптимизация¶
В Windows включите режим ускорения (в PowerShell от админа):
Set-NetTCPSetting -SettingName Datacenter -SettingType Custom
Set-NetTCPSetting -SettingName Custom -Description "Optimized for WSL2"
Set-NetTCPSetting -SettingName Custom -SettingType Host
Перезагрузите стеки:
netsh int tcp reset
Прочая оптимизация¶
Ограничение использования оперативной памяти¶
В файле %UserProfile%\.wslconfig:
[wsl2]
memory=2GB
processors=2
Виртуальный RAM-диск: для сверхбыстрых temp-папок¶
imdisk -a -s 1G -m R: -p "/fs:ntfs /q /y"
Затем в WSL¶
sudo mkdir /mnt/r
sudo mount -t drvfs R: /mnt/r -o metadata
Fsnotify со стороны Windows¶
Установите wslfsnotify из GitHub и запустите демоном:
wslfsnotify --path /mnt/c/проект --command "make rebuild"
Параллельные прокси¶
sshuttle -r user@remote 0/0 -x your-vpn-ip