Microsoft Windows — популярная операционная система. В Windows 10 появилась новая функция под названием WSL (подсистема Windows для Linux). Это дополнительная функция, которая позволяет разработчикам и опытным пользователям запускать среду GNU / Linux непосредственно в Windows без необходимости в традиционной виртуализации или конфигурации двойной загрузки.
В этом руководстве вы узнаете, как запустить графический интерфейс Debian в Windows 10 с помощью WSL.
- Debian на WSL
- Включение WSL
- Скачивание и установка Debian
- Настройка Debian
- Настройка графического интерфейса
- Предпосылки
- Установка компонентов
- Установка VNC-сервера
- Установка.NET Runtime
- Установка systemd-genie
- Настройка пароля VNC-сервера
- Замена X по умолчанию на Xvnc
- Настройка переменных среды
- Запускаем systemd-genie
- Заключение
Debian на WSL
Инструмент WSL изначально был разработан Microsoft в сотрудничестве с Canonical, создателем Ubuntu. По сути, это уровень совместимости с ядром, основанный на Ubuntu.
В 2020 году Microsoft выпустила WSL 2. Он предлагает несколько важных улучшений по сравнению с WSL 1. Он предлагает лучшую совместимость системы, лучшее управление виртуальными машинами, полную поддержку ядра Linux и многое другое. Посмотрите разницу между WSL 1 и WSL 2. Обратите внимание, что WSL 2 доступен только для Windows 10 версии 2004, сборка 19041 или выше. Выполните следующую команду, чтобы проверить версию Windows 10, которую вы используете.
$ winver
Поскольку WSL изначально был основан на Ubuntu, он по умолчанию поддерживает Debian. Debian для WSL доступен в Microsoft Store. Однако мы продемонстрируем, как установить Debian даже без учетной записи Microsoft.
В случае Windows все команды будут выполняться в Windows PowerShell с правами администратора. Это Linux-эквивалент запуска оболочки sudo. Чтобы запустить PowerShell с правами администратора, нажмите «Win + X» и выберите «Windows PowerShell (Admin)».
Включение WSL
Дополнительные функции, такие как WSL, по умолчанию не включены. К счастью, включить WSL очень просто. Выполните следующую команду в PowerShell.
$ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
WSL 2 также требует функции платформы виртуальных машин.
$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Эти изменения требуют перезапуска системы для полной работоспособности.
После перезагрузки запустите PowerShell с правами администратора. Сделайте WSL 2 версией по умолчанию.
$ wsl —set-default-version 2
Обратите внимание: если вы используете 64-разрядную версию Windows 10, вам может потребоваться загрузить и установить пакет обновления ядра Linux для WSL 2.
Скачивание и установка Debian
Сначала ознакомьтесь со всеми доступными дистрибутивами, поддерживаемыми WSL.
$ wsl —list —online
Скажите WSL установить Debian. Debian доступен в виде устанавливаемого пакета в Microsoft Store.
$ wsl —install -d Debian
Процесс может занять несколько минут.
Настройка Debian
Debian установлен. Если вы установили с помощью WSL, автоматически появится новая оболочка. Во время первого запуска оболочка Debian попросит создать нового пользователя.
Если вы хотите получить доступ к Debian позже, используйте следующую команду WSL. С этого момента я буду использовать Терминал Windows для простоты использования.
$ wsl -d Debian
Обновите кеш APT и обновите все пакеты.
$ sudo apt update && sudo apt upgrade -y
Затем нам нужно проверить, используем ли мы последнюю версию Debian. На момент написания этого руководства последним стабильным выпуском был Debian 11 под кодовым названием bullseye.
$ cat /etc/os-release
В моем случае это Debian 9 (stretch), где должен быть Debian 11 (bullseye). Для получения последней версии Debian требуется обновление дистрибутива.
Сначала сделайте резервную копию файла sources.list.
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
В файле sources.list замените все экземпляры stretch (Debian 9) на bullseye (Debian 11). Это фактически укажет APT работать с пакетами для Debian 11. Откройте sources.list в текстовом редакторе и замените все экземпляры stretch на bullseye.
$ sudo nano /etc/apt/sources.list
Вот примерный список репозиториев для Debian 11 bullseye.
$ deb http://deb.debian.org/debian bullseye main contrib non-free
$ deb http://deb.debian.org/debian bullseye-updates main contrib non-free
$ deb http://security.debian.org/debian-security bullseye-security main contrib non-free
Теперь снова запустите команды обновления APT.
$ sudo apt clean && sudo apt update
$ sudo apt full-upgrade
Это будет разрешение на перезапуск различных служб во время процесса. Выберите «Да».
Теперь мы можем безопасно избавиться от устаревших пакетов в системе.
$ sudo apt autoremove
Перезапустите сеанс Debian, чтобы изменения вступили в силу. Проверьте изменение.
$ cat /etc/os-release
Настройка графического интерфейса
На данный момент система Debian полностью функциональна. Однако единственный способ взаимодействия с системой — это интерфейс командной строки. По умолчанию графический интерфейс отсутствует.
Мы можем обойти это, внедрив VNC. Процесс настройки несколько сложен, но вполне выполним.
Предпосылки
Для этого метода есть несколько предварительных условий. Во-первых, убедитесь, что дистрибутив WSL настроен для работы с WSL 2.
$ wsl —set-version Debian 2
Установка компонентов
Теперь войдите в оболочку Debian. Нам нужны дополнительные компоненты, такие как curl и wget.
$ sudo apt update && sudo apt install -y curl wget
Мы будем устанавливать tasksel, очень удобный инструмент для управления различными компонентами рабочего стола и служб. Выполните следующую команду APT.
$ sudo apt install tasksel
Запустите tasksel с привилегиями sudo.
$ sudo tasksel
Он покажет список групп пакетов и пакетов. Нажмите пробел, чтобы выбрать / отменить выбор группы. После того, как вы выбрали нужные, нажмите «ОК».
Инструмент скачает и установит все необходимые компоненты. Это займет некоторое время.
Установка VNC-сервера
Следующим шагом будет установка VNC-сервера. Для этого мы установим TigerVNC.
$ sudo apt-get install tigervnc-standalone-server
Установка.NET Runtime
.NET — это универсальная платформа для создания приложений для Windows, Linux и macOS от Microsoft. Он нам понадобится для следующей части конфигурации.
Выполните следующие команды, чтобы установить.NET Runtime. Для получения более подробных инструкций по установке ознакомьтесь с официальным руководством по установке.NET от Microsoft.
$ wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
$ sudo apt install ./packages-microsoft-prod.deb
$ rm packages-microsoft-prod.deb
$ sudo apt update && sudo apt install apt-transport-https
$ sudo apt update && sudo apt install dotnet-runtime-5.0
Установка systemd-genie
WSL, сам по себе, является всего лишь простой реализацией фреймворка Linux. Использование systemd-genie — это способ дать Debian полноценный и функциональный фреймворк Linux.
Мы уже установили его зависимость (.NET Runtime). Осталось только настроить репозиторий systemd-genie и установить пакет.
Сначала настройте репозиторий APT для systemd-genie.
$ wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg
$ chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg
$ cat << EOF > /etc/apt/sources.list.d/wsl-transdebian.list
$ deb https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
$ deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
$ EOF
$ apt update
Наконец, установите systemd-genie.
$ sudo apt install systemd-genie
Установлены все необходимые инструменты. Пришло время настроить их для получения ожидаемого поведения.
Настройка пароля VNC-сервера
В настройке VNC у каждого пользователя будут уникальные пароли. Для полной функциональности нам нужно как минимум три пароля, по одному для каждого из следующих пользователей.
- root
- gdm
- <current_user>
Сначала настройте пароль VNC для текущего пользователя.
$ vncpasswd
Затем настройте пароль VNC для root.
$ sudo -H vncpasswd
Наконец, настройте пароль VNC для GDM. Обратите внимание, что вы можете пропустить этот шаг, если вы не выбрали установку среды рабочего стола GNOME.
$ sudo -H -u Debian-gdm vncpasswd
Замена X по умолчанию на Xvnc
Функция диспетчера отображения по умолчанию — вызывать экземпляры X для каждого пользовательского сеанса (включая экран входа в систему). Однако, поскольку мы собираемся использовать сервер VNC, он не будет сокращаться. Для работы с VNC подходящим кандидатом является Xvnc.
Далее наша цель — заменить X на Xvnc. Это требует настройки сценария Xorg, который вызывает Xvnc вместо службы отображения X / Xorg.
Прежде чем продолжить, всегда рекомендуется делать резервную копию существующего скрипта Xorg.
$ sudo mv /usr/bin/Xorg /usr/bin/Xorg.old
Теперь создайте новый скрипт Xorg.
$ sudo nano /usr/bin/Xorg.new
Введите следующий код.
#!/bin/bash
for arg do
shift
case $arg in
vt*)
set — «$@» «${arg//vt/tty}«
;;
-keeptty)
;;
-novtswitch)
;;
*)
set — «$@» «$arg«
;;
esac
done
# display geometry
command=(«/usr/bin/Xvnc» «-geometry» «1366×768» «-PasswordFile» «${HOME:-/root}/.vnc/passwd» «$@»)
systemd-cat -t /usr/bin/Xorg echo «launching Xvnc:» «${command[@]}«
exec «${command[@]}«
Сохраните файл и закройте редактор. Для правильной работы файл должен иметь правильные права доступа.
$ sudo chmod 0755 /usr/bin/Xorg.new
Создайте ссылку на файл для эмуляции исходного скрипта Xorg.
$ sudo ln -sf /usr/bin/Xorg.new /usr/bin/Xorg
Настройка переменных среды
Нам нужно настроить некоторые переменные среды, чтобы Xorg считывал данные от пользователя, выполняющего команду genie. Для этого нам нужно настроить файл bashrc как корневого, так и текущего пользователя. Обратите внимание, что bashrc отличается от bash_profile.
Откройте bashrc текущего пользователя.
$ nano ~/.bashrc
Добавьте следующие коды в конец файла.
export XDG_RUNTIME_DIR=/run/user/$UID
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk ‘{print $2; exit;}’):0.0
sudo /etc/init.d/dbus start &> /dev/null
Сделайте то же самое с файлом bashrc пользователя root.
$ su —
$ nano ~/.bashrc
export XDG_RUNTIME_DIR=/run/user/$UID
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk ‘{print $2; exit;}’):0.0
sudo /etc/init.d/dbus start &> /dev/null
Наконец, перезагрузите bashrc для текущего пользователя.
$ source ~/.bashrc
Запускаем systemd-genie
Теперь systemd настроен на автоматический запуск gdm и создание экземпляра отображения X для экземпляра входа в систему. Из-за конфигурации вместо этого он будет создавать экземпляры Xvnc. Он начнёт слушать с 5900.
Следующая команда покажет сообщение «подключение к systemd», за которым следует несколько ошибок. Ошибки ожидаются. Вы должны попасть на экран входа в систему.
$ genie -l
Вуаля! Вы успешно вошли в систему Debian с графическим интерфейсом, работающую под WSL 2! Все, что осталось, — это подключиться к серверу WSL через VNC. Следующая команда сообщит IP-адрес сервера.
$ hostname -I
Для подключения к системе используйте клиент VNC (на порту 5900). Для входа используйте пароль gdm VNC. Это должно привести вас на экран входа в систему.
Заключение
Для пользователей Windows WSL — отличный способ привыкнуть к миру Linux без необходимости изучать все с нуля. В этом руководстве демонстрируется рекомендуемый метод установки и настройки Debian 11 с графическим интерфейсом пользователя на WSL с помощью сервера VNC (TigerVNC).
На шаге
$ chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg
$ cat < /etc/apt/sources.list.d/wsl-transdebian.list
$ deb https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
$ deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
$ EOF
пишет:
-bash: /etc/apt/sources.list.d/wsl-transdebian.list: Permission denied
все приехали ((((((
https://github.com/arkane-systems/wsl-transdebian
As root (sudo -s), enter the following commands:
wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg
chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg
cat < /etc/apt/sources.list.d/wsl-transdebian.list
deb https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
EOF
apt update
If you do not have lsb_release installed, you will need to manually substitute the distro name (e.g., «bullseye») in place of $(lsb_release -cs).
E: The repository ‘http://security.debian.org/debian-security bullseye/updates Release’ does not have a Release file.
https://toukor.s-ul.eu/4Seqz4jL как фиксить?