null

Установка ArchLinux в Windows Subsystem for Linux

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