Windows Subsystem for Linux (WSL) — слой совместимости для запуска Linux-приложений (двоичных исполняемых файлов в формате ELF) в ОС Windows 10.
В последнем обновлении Windows - Fall Creators Update - обновилась подсистема WSL и подход к получению и установке дистрибутивов операционных систем. Теперь они досупны для скачивания из магазина приложений Windows. На данный момент в магазине доступны такие популярные дистрибутивы как Ubuntu, OpenSUSE, SLES. В скором будущем там наверняка появятся многие популярные дистрибутивы.
Пока этого не произошло, рассморим "ручную" установку дистрибутива в WSL на примере ArchLinux.
Если WSL использовался до Fall Creaters Update, сперва удаляем существующую версию дистрибутива:
lxrun /uninstall /full /y
Устанавливаем Ubuntu из магазина приложений Windows Store.
Запускаем скачанное приложение из Пуск.
Задаём пользователя root
как пользователя по-умолчанию:
ubuntu config --default-user root
Скачиваем последнюю bootstrap версию ArchLinux и распаковываем в домашнем каталоге:
wget https://mirror.yandex.ru/archlinux/iso/latest/archlinux-bootstrap-2017.12.01-x86_64.tar.gz
tar -zxvf archlinux-bootstrap-2017.12.01-x86_64.tar.gz
Раскомментируем зеркало репозитория в ~/root.x86_64/etc/pacman.d/mirrorlist
, например:
Server = https://mirror.yandex.ru/archlinux/$repo/os/$arch
Добавим следующую строчку в resolv.conf, чтобы WSL автоматически приписывала туда текущие DNS-сервера:
echo "# This file was automatically generated by WSL. To stop automatic generation of this file, remove this line." > ~/root.x86_64/etc/resolv.conf
Далее закрываем все открытые окна с bash и заходим в директорию с корневой файловой системой дистрибутива: в каталоге %localappdata%\Packages
находим директорию, имя которой начинается с CanonicalGroupLimited.UbuntuonWindows_
.
И удаляем из %localappdata%\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs
следующие каталоги с установленной Ubuntu: bin
, etc
, lib
, lib64
, sbin
, usr
и var
.
Перемещаем в rootfs\
(не копируем) на место удалённых те же каталоги из rootfs\root\root.x86_64\
.
Для обхода ряда багов, нужно где-то скомпилировать и установить пакеты fakeroot-tcp и glibc-wsl из AUR. Для значительного уменьшения времени компиляции glibc-wsl
, нужно запускать makepkg
с флагом --nocheck
.
Уже скомпилированные пакеты можно скачать отсюда: fakeroot-tcp-1.21-2-x86_64.pkg.tar.xz, glibc-wsl-2.26-4-x86_64.pkg.tar.xz
Запускаем приложение Ubuntu и выполняем установку ArchLinix:
pacman-key --init
pacman-key --populate archlinux
pacman -U /mnt/c/Users/username/Downloads/glibc-wsl-2.26-4-x86_64.pkg.tar.xz
pacman -U /mnt/c/Users/username/Downloads/fakeroot-tcp-1.21-2-x86_64.pkg.tar.xz
pacman -Syyu base base-devel
N.B. Во время выбора устанавливаемых пакетов, нужно исключить из установки пакеты glibc
и fakeroot
. Это проще сделать, указав интервалы устанавливаемых пакетов. Например, если glibc
имеет номер 15: 1-14 16-50
.
Всё, система инсталлирована, осталось только добавить пользователя и задать пароль:
useradd -m -G wheel -s /bin/bash username
passwd root
passwd username