Install Arch Linux on WSL (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Install Arch Linux on WSL
. Дата последней синхронизации: 9 июня 2025. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Arch Linux предоставляет официальный образ
WSL (Windows Subsystem for Linux)
в рамках проекта
archlinux-wsl
.
Образы обновляются ежемесячно и нацелены на предоставление самой простой, но полноценной системы, позволяющей использовать Arch Linux в WSL.
Примечание
Образы собираются только для
WSL 2
. WSL 1
не
поддерживается.
Установка
Установка WSL
Включите виртуализацию
в настройках UEFI, затем
установите
Windows Subsystem for Linux
из Microsoft Store.
Примечание
Версия WSL из Microsoft Store
теперь является версией WSL по умолчанию
. Не нужно включать дополнительный компонент «Подсистема Windows для Linux», а также устанавливать ядро WSL или MSI-пакеты WSLg. WSL из Microsoft Store позволяет
получать обновления для WSL гораздо быстрее
, чем когда она была компонентом Windows.
WSLg
также теперь входит в комплект поставки.
Обновление WSL
Чтобы обновиться до последней версии WSL и WSLg, выполните следующую команду в командной строке Windows, запущенной от имени администратора:
> wsl --update
Чтобы обновиться до последней предварительной версии:
> wsl --update --pre-release
Установка Arch Linux в WSL
На системе с Windows и
установленным WSL 2
используйте один из описанных ниже методов установки.
Автоматическая установка
Выполните следующую команду в командной строке Windows:
> wsl --install archlinux
После этого в меню Пуск должен появиться
archlinux
, также можно запустить его из командной строки Windows командой
wsl -d archlinux
.
Ручная установка
Примечание
Требуется
WSL 2.4.4
или новее.
Скачайте
актуальный .wsl-образ Arch Linux
, затем запустите его двойным щелчком мыши или в командной строке Windows выполните команду:
> wsl --install --from-file
путь_к_образу_WSL
Например:
> wsl --install --from-file C:\Users\
пользователь
\Downloads\archlinux-2025.04.01.121271.wsl
Совет
Образ WSL будет установлен со стандартным именем дистрибутива
archlinux
. Если вы хотите использовать другое имя, добавьте опцию
--name
имя
.
После этого в меню Пуск должен появиться
archlinux
, также можно запустить его из командной строки Windows командой
wsl -d archlinux
.
Советы и рекомендации
Установка пользователя по умолчанию
Пользователем по умолчанию является
root
. Чтобы выбрать другого пользователя,
создайте его
и укажите его имя в файле
/etc/wsl.conf
:
[user]
default=
пользователь
Не забудьте установить пароль для суперпользователя перед закрытием текущего сеанса. Если вы всё-таки потеряли доступ к суперпользователю, можно запустить WSL от имени нужного пользователя командой
> wsl -u root
Изменение настроек будет применено в следующем сеансе. Чтобы завершить текущий сеанс, в командной строке Windows выполните команду:
> wsl --terminate archlinux
В WSL 2.4.10 и более новых версиях можно задать пользователя по умолчанию с помощью команды:
> wsl --manage archlinux --set-default-user
пользователь
Изменение будет применено при следующем запуске дистрибутива.
Запуск графических приложений с помощью WSLg
WSLg (Windows Subsystem for Linux GUI)
— проект, позволяющий
запускать Linux-приложения, использующие звук (PulseAudio) и графику (X11 и Wayland), внутри WSL
.
WSLg включен по умолчанию. Его можно отключить, указав для настройки
wsl2.guiApplications
значение
false
в
файле настроек WSL
.
Для работы графики создаются символические ссылки на сокеты серверов X11 и Wayland, однако systemd в процессе инициализации перекрывает их (
microsoft/wslg#1032
).
Примечание
Проблема решена в
WSL 2.5.7.0
, хотя всё равно нужно устанавливать переменную окружения GALLIUM_DRIVER со значением d3d12.
В старых версиях WSL проблему можно решить ручным созданием нужных символических ссылок. Сперва создайте файл настроек
systemd-tmpfiles
для создания каталога, в котором должен находиться сокет X-сервера:
/etc/tmpfiles.d/wslg.conf
#      Path         Mode UID  GID  Age Argument
L+     %T/.X11-unix -    -    -    -   /mnt/wslg/.X11-unix
Затем создайте скрипт, который будет создавать нужные ссылки и выбирать Gallium-драйвер:
/etc/profile.d/wslg.sh
export GALLIUM_DRIVER=d3d12

for i in "/mnt/wslg/runtime-dir/"*; do
  [ "$XDG_RUNTIME_DIR" = "$HOME" ] && XDG_RUNTIME_DIR="/var/run/user/$UID"
  if [ ! -L "$XDG_RUNTIME_DIR/$(basename "$i")" ]; then
    [ -d "$XDG_RUNTIME_DIR/$(basename "$i")" ] && rm -r "$XDG_RUNTIME_DIR$(basename "$i")"
    ln -s "$i" "$XDG_RUNTIME_DIR/$(basename "$i")"
  fi
done
Изменения будут применены в следующем сеансе. Чтобы завершить текущий сеанс, в командной строке Windows выполните команду:
> wsl --terminate archlinux
Аппаратное ускорение рендеринга
Для работы аппаратного рендеринга в WSL
установите
пакеты:
mesa
— содержит Gallium-драйвер
d3d12
, транслирующий вызовы OpenGL в вызовы Direct3D;
vulkan-dzn
— содержит экспериментальный Vulkan-драйвер
dzn
(также известный как
microsoft-experimental
).
Также понадобится установить
vulkan-icd-loader
(и
lib32-vulkan-icd-loader
для запуска 32-битных Vulkan-приложений).
Если OpenGL откатывается на программный рендеринг (llvmpipe) при использовании графики Intel, попробуйте создать такую символическую ссылку для libedit:
# ln -s /usr/lib/libedit.so /usr/lib/libedit.so.2
Подробнее:
https://github.com/microsoft/wslg/issues/996
и
Gentoo:Gentoo in WSL#OpenGL falling back to llvmpipe software renderer on Intel GPUs
Запуск приложений Windows в WSL
WSL поддерживает
interoperability
— запуск исполняемых файлов Windows через WSL.
Эта возможность включена по умолчанию. Её можно отключить, указав для настройки
interop.enabled
значение
false
в файле
/etc/wsl.conf
.
[1]
Существуют дополнительные утилиты, которые, опираясь на эту возможность, обеспечивают интеграцию WSL с возможностями и службами Windows.
Использование службы ssh-agent из Windows
wsl2-ssh-agent
— инструмент, позволяющий использовать
агент SSH
, запущенный в Windows, внутри WSL.
Это особенно полезно при использовании
*-sk
ключей, безопасность которых обеспечивается с помощью аппаратных ключей или
Windows Hello
.
Установите
wsl2-ssh-agent
AUR
и добавьте следующую команду в
~/.bashrc
:
eval "$(/usr/sbin/wsl2-ssh-agent)"
После перезапуска командной оболочки должна появиться
переменная окружения
SSH_AUTH_SOCK
.
Аутентификация PAM с помощью Windows Hello
WSL-Hello-Sudo
— плагин для
PAM
, позволяющий выполнить аутентификацию пользователя внутри WSL через
Windows Hello
.
Сперва установите
Visual C++ Redistributable 2015-2022
в Windows. Затем в WSL установите пакет
wsl-hello-sudo-bin
AUR
, скопируйте каталог
/opt/wsl-hello-sudo/
куда-нибудь, чтобы получить доступ на его редактирование, перейдите в скопированный каталог и запустите скрипт
./install.sh
. Он скопирует Windows-программу в указанный вами каталог и сохранит рядом с ним сертификат, используемый для аутентификации, а также создаст скрипт
uninstall.sh
в текущем каталоге.
Совет
Оригинальный
https://github.com/nullpo-head/WSL-Hello-sudo
не обновлялся несколько лет, поэтому пакет
wsl-hello-sudo-bin
AUR
использует форк (
https://github.com/lzlrd/wsl-hello-sudo
).
Добавьте
auth sufficient pam_wsl_hello.so
в нужные вам файлы в каталоге
/etc/pam.d/
в зависимости от того, где вы хотите использовать Windows Hello. Пример для sudo:
/etc/pam.d/sudo
#%PAM-1.0
auth            sufficient      pam_wsl_hello.so
auth            include         system-auth
account         include         system-auth
session         include         system-auth
Проброс устройств в WSL
WSL 2 является виртуальной машиной
Hyper-V
, в которую можно пробрасывать устройства с хоста.
Монтирование диска
WSL 2 позволяет подключать и монтировать диски, доступные в Windows.
Для этого сперва узнайте
DeviceID
нужного диска, в командной строке PowerShell выполнив команду:
> GET-CimInstance -query "SELECT * from Win32_DiskDrive"
Затем выполните следующую команду от имени администратора:
> wsl --mount
DeviceID
--bare
Важно
Диск перестанет быть доступен для Windows-хоста! Перед подключением закройте все приложения, использующие этот диск.
После подключения вы сможете увидеть диск внутри WSL, например, в выводе команды
lsblk
.
Для отключения диска выполните:
> wsl --unmount
DeviceID
Подробнее:
https://learn.microsoft.com/en-us/windows/wsl/wsl2-mount-disk
Подключение устройств USB
usbipd-win
позволяет предоставить доступ к локальным устройствам USB другим машинам, в том числе WSL 2.
Установите его, скачав и запустив установщик (
.msi
) со
страницы на GitHub
или использовав
Windows Package Manager
:
> winget install usbipd
После установки посмотрите список подключенных устройств командой:
> usbipd list
Найдите bus ID нужного устройства и подготовьте его к подключению, выполнив команду (требуются права администратора):
> usbipd bind --busid
busid
Важно
Убедитесь, что подключаемое устройство не используется никакими приложениями.
Затем подключите устройство к WSL 2 командой:
> usbipd attach --wsl --busid
busid
После подключения вы сможете увидеть новое устройство USB внутри WSL, например, в выводе команды
lsusb
.
Для отключения устройства выполните:
> usbipd detach --busid
busid
Подробнее:
https://learn.microsoft.com/en-us/windows/wsl/connect-usb
Решение проблем
Поддержка systemd
Образ Arch Linux для WSL поддерживает
systemd
.
Всё должно работать из коробки, однако на старых версиях WSL есть проблемы, для решения которых может понадобиться выполнить дополнительные действия.
systemd требует cgroup v2
Примечание
В
WSL 2.4.12
и более новых версиях выполнять данные действия не нужно.
По умолчанию WSL запускается с поддержкой cgroup v1
[2]
, однако systemd с версии 256 прекратил его поддержку
[3]
и требует cgroup v2.
Вы можете отключить cgroup v1, добавив в файл
%USERPROFILE%\.wslconfig
:
[wsl2]
kernelCommandLine = cgroup_no_v1=all systemd.unified_cgroup_hierarchy=1
Изменение настроек будет применено в следующем сеансе. Чтобы завершить текущий сеанс, в командной строке Windows выполните команду:
> wsl --terminate archlinux
Ошибка при запуске контейнеров Docker
При использовании
Docker
внутри WSL вы можете получить такую ошибку:
Error response from daemon: path / is mounted on / but it is not a shared or slave mount
Error: failed to start containers
Также команда
docker run
может зависать и ничего не выводить в консоль.
Это происходит потому, что Docker требует наличия rshared propagation у точки монтирования корневого каталога (
/
).
Для исправления выполните команду:
# mount --make-rshared /
Чтобы выполнять эту команду при каждом запуске WSL, можно
создать службу systemd
:
/etc/systemd/system/mount-root-rshared.service
[Unit]
Description=Remount / with shared propagation
Requires=-.mount
After=-.mount

[Service]
Type=oneshot
ExecStart=/bin/mount --make-rshared /

[Install]
WantedBy=local-fs.target
После создания файла
запустите/включите
службу
mount-root-rshared.service
.
Смотрите также
Wikipedia:ru:Windows Subsystem for Linux
Gentoo:Gentoo in WSL
Официальная документация
WSLg Wiki на GitHub