Введение
Данная статья предназначена вниманию системных администраторов, которые подготавливают типовые рабочие места на компьютерах под управлением ОС Windows 10, в том числе для разработчиков ПО.
Следует отметить, что существует определенная проблема,
связанная с невозможностью интеграции ПО, полученного в on-line
магазине Microsoft Store для использования в пользовательском
образе Windows 10. Не вдаваясь в подробности уточню, что данная
проблема связана с тем, что установленные из Microsoft Store
программы связываются со служебной учетной записью Administrator, и
при завершении создания пользовательского образа утилитой
sysprep
возникают обусловленные этим
обстоятельством ошибки.
Рассмотренный в данной статье способ позволить избежать такой проблемы при подготовке образа ОС Windows 10 с предварительно настроенной подсистемой WSL2, а также с заранее подготовленным и настроенным образом ОС Ubuntu 20.04 с GUI KDE Plasma, который в свою очередь может иметь свой набор пользовательского ПО.
В сети Интернет имеется большое количество примеров и руководств по настройке подсистем WSL (т.е. WSL1 и сравнительно новой WSL2), с настройкой GUI интерфейса для linux систем на базе ОС начиная с версии Ubuntu 16.04 и заканчивая Ubuntu 20.04, но в основном это касалось рабочих столов на основе т.н. легковесного xfce4, имеющий вполне объяснимые ограничения в пользовательских настройках. Но что касается GUI KDE Plasma для Ubuntu 20.04, в сети не нашлось какой-либо существенной информации. Но именно этот вариант предоставляет конечному пользователю практически неограниченный набор настроек как внешнего вида системы, так и настроек оборудования, конечно с учетом текущих возможностей интеграции linux-систем, реализованных в подсистеме WSL2.
Установка требуемого набора ПО и настройка WSL2
Проверяем текущую версию Windows, для этого в строке поиска
Windows вводим команду winver
и
получаем примерно следующее:
Важно, чтобы ОС имела версию 1903 или 1909 (указанные версии ОС должны быть с установленным накопительным обновлением KB4566116), либо 2004 (номер сборки не менее чем 19041), остальная информация не имеет значения. Если номер версии меньше, то для корректного повторения результатов, изложенных в данной статье, рекомендуется обновиться до последней версии Windows.
Для удобства дальнейших действий устанавливаем бесплатный Windows Terminal, используя Microsoft Store (также существует возможность загрузки из других источников):
Устанавливаем X Server X410 через тот же Microsoft Store, это ПО платное, но имеется бесплатный период в 15 дней, что вполне достаточно для проведения различных тестов.
В качестве бесплатной альтернативы X410 скачиваем и устанавливаем X-сервер VcXsrv.
В любом удобном месте на диске создаем каталог, в котором будем
хранить наши файлы. В качестве примера создадим каталог
C:\wsl
.
Скачиваем и устанавливаем автономный
установщик Ubuntu 20.04, распаковываем полученный файл с помощью
архиватора (например 7-zip). Переименовываем распакованный каталог
с длинным именем
Ubuntu_2004.2020.424.0_x64
во что-то
более приемлемое, например
Ubuntu-20.04
и копируем его в каталог
C:\wsl
(далее по тексту просто
\wsl
).
Скачиваем и распаковываем в каталог
\wsl
кроссплатформенный звуковой
сервер PulseAudio v.1.1., также вносим исправления исправления в
его конфигурационные файлы.
В файле
\wsl\pulseaudio-1.1\etc\pulse\default.pa
в разделе Load audio drivers
statically
редактируем строку:
load-module module-waveout sink_name=output source_name=input record=0
а в разделе
Network access
редактируем строку:
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
В файле
\wsl\pulseaudio-1.1\etc\pulse\daemon.conf
раскомментируем и изменяем строку
exit-idle-time = -1
Настраиваем подсистему WSL2 в соответствии с документацией Microsoft. Единственное замечание дистрибутив Ubuntu мы уже скачали, и устанавливать его будем на следующем шаге. В основном, настройка сводится к включению дополнительных компонентов Подсистема Windows для Linux и Платформа виртуальной машины, и последующей перезагрузки для применения изменений в настройках компьютера:
При необходимости скачиваем и устанавливаем пакет
обновлений для ядра Linux в WSL2.
Запускаем Windows Terminal и выбираем режим работы Command Prompt
нажатием клавиш Ctrl+Shift+2
.
В первую очередь устанавливаем режим работы WSL2, для этого вводим команду:
wsl --set-default-version 2
Переходим в каталог с автономным загрузчиком Ubuntu 20.04, в моем случае это
\wsl\Ubuntu-20.04
и
запускаем файл ubuntu2004.exe
. При
появлении запроса имени пользователя указываю имя
engineer
(можно ввести любое другое
имя), ввести свой пароль и подтвердить введенный пароль для
указанной учетной записи:Появилась строка приглашения терминала, ядро Ubuntu 20.04 установлено. Проверим правильность настройки режима WSL2, для этого в Windows Terminal выбираем закладку Windows PowerShell и вводим команду:
<strong><source>wsl -l -v</source></strong> результат выполнения должен быть такой:
Настраиваем брандмауэр Microsoft Defender, т.е. отключаем его для общедоступной сети:
Настройка Ubuntu 20.04
В Windows Terminal снова выбираем закладку Command Prompt и устанавливаем обновления для Ubuntu 20.04. Для этого в командной строке вводим:
sudo apt update && sudo apt upgrade y
Устанавливаем рабочий стол KDE Plasma:
sudo apt install kubuntu-desktop -y
установка занимает до 30 минут в зависимости от производительности компьютера и пропускной способности канала доступа в Internet, при появлении запроса установщика подтверждаем
OK
.Устанавливаем русскую локализацию и словари Ubuntu 20.04. Для этого в командной строке вводим:
sudo apt install language-pack-ru language-pack-kde-ru -ysudo apt install libreoffice-l10n-ru libreoffice-help-ru -ysudo apt install hunspell-ru mueller7-dict -ysudo update-locale LANG=ru_RU.UTF-8sudo dpkg-reconfigure locales # примечание: выбираем ru_RU.UTF-8 UTF-8, см. скриншоты ниже.sudo apt-get install --reinstall locales
Добавляем последнюю версию рабочего стола KDE Plasma:
sudo add-apt-repository ppa:kubuntu-ppa/backportssudo apt update && sudo apt full-upgrade -y
Добавляем свой набор консольных приложений, например
mc
и
neofetch
:
sudo apt install mc neofetch -y
Проверяем, что получилось, вводим в командную строку
neofetch
, см. скриншот:Редактируем конфигурационный файл WSL
/etc/wsl.conf
:
sudo nano /etc/wsl.conf
в открывшееся пустое окно текстового редактора копируем текст:
[automount]enabled = trueroot = /mntoptions = metadata,umask=22,fmask=11mountFsTab = true[network]generateHosts = truegenerateResolvConf = true[interop]enabled = trueappendWindowsPath = true
сохраняем изменения (
Ctrl+O
),
подтверждаем операцию и выходим из текстового редактора
(Ctrl+X
).Экспортируем настроенный образ Ubuntu-20.04 в созданный нами
каталог \wsl
. Для этого в Windows
Terminal снова выбираем закладку Windows PowerShell и вводим
команду:
wsl --export Ubuntu-20.04 c:\wsl\Ubuntu-plasma-desktop
созданный образ поможет нам автоматизировать операции запуска/переустановки настроенной Ubuntu 20.04, при необходимости позволит легко перенести на другой компьютер.
Подготовка bat-файлов и ярлыков на рабочий стол Windows
С помощью редактора Notepad++ создаем bat-файлы (обязательно в
кодировке OEM-866 для корректного вывода символов кириллицы):
Файл
Install-Ubuntu-20.04-plasma-desktop.bat
предназначен для автоматизации первоначальной установки созданного
образа Ubuntu 20.04 на компьютере с уже настроенной подсистемой
WSL2 и X-сервером. Если имя пользователя и пароль отличается от
указанных в примере, то необходимо внести соответствующие изменения
в этот bat-файл:
@echo offwsl --set-default-version 2clsecho Ожидайте окончания установки дистрибутива Ubuntu-20.04...wsl --import Ubuntu-20.04 c:\wsl c:\wsl\Ubuntu-plasma-desktopwsl -s Ubuntu-20.04clsecho Дистрибутив Ubuntu-20.04 успешно установлен!echo Не забудьте сменить учетную запись по умолчанию root на существующую учетную запись пользователя,echo либо используйте предустановленную учетную запись engineer, пароль: password.pause
Файл
Reinstall-Ubuntu-20.04-plasma-desktop.bat
предназначен для переустановки подготовленного образа Ubuntu 20.04
на компьютере.
@echo offwsl --unregister Ubuntu-20.04wsl --set-default-version 2clsecho Ожидайте окончания переустановки дистрибутива Ubuntu-20.04...wsl --import Ubuntu-20.04 c:\wsl c:\wsl\Ubuntu-plasma-desktopwsl -s Ubuntu-20.04clsecho Дистрибутив Ubuntu-20.04 успешно переустановлен!pause
Файл
Set-default-user.bat
для
установки пользователя по умолчанию.
@echo offset /p answer=Введите существующую учетную запись в Ubuntu (engineer):c:\wsl\Ubuntu-20.04\ubuntu2004.exe config --default-user %answer%clsecho Учетная запись пользователя %answer% в Ubuntu-20.04 установлена по умолчанию!pause
Файл
Start-Ubuntu-20.04-plasma-desktop.bat
собственно запуск рабочего стола KDE Plasma.
@echo offecho ===================================== Внимание! ============================================echo Для корректной работы GUI Ubuntu 20.04 в WSL2 необходимо использовать X Server.echo Примечание: в случае использования VcXsrv Windows X Server необходимо раскомментироватьecho строки в файле Start-Ubuntu-20.04-plasma-desktop.bat, содержащие "config.xlaunch" иecho "vcxsrv.exe", и закомментировать все строки, содержащие "x410".echo ============================================================================================rem start "" /B "c:\wsl\vcxsrv\config.xlaunch" > nulstart "" /B x410.exe /wm /public > nulstart "" /B "c:\wsl\pulseaudio-1.1\bin\pulseaudio.exe" --use-pid-file=false -D > nulc:\wsl\Ubuntu-20.04\Ubuntu2004.exe run "if [ -z \"$(pidof plasmashell)\" ]; then cd ~ ; export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 ; setxkbmap us,ru -option grp:ctrl_shift_toggle ; export LIBGL_ALWAYS_INDIRECT=1 ; export PULSE_SERVER=tcp:$(grep nameserver /etc/resolv.conf | awk '{print $2}') ; sudo /etc/init.d/dbus start &> /dev/null ; sudo service ssh start ; sudo service xrdp start ; plasmashell ; pkill '(gpg|ssh)-agent' ; fi;"rem taskkill.exe /F /T /IM vcxsrv.exe > nultaskkill.exe /F /T /IM x410.exe > nultaskkill.exe /F /IM pulseaudio.exe > nul
Файл
Start-Ubuntu-20.04-terminal.bat
запуск графического терминала без рабочего стола KDE Plasma.
@echo offecho ===================================== Внимание! ============================================echo Для корректной работы GUI Ubuntu 20.04 в WSL2 необходимо использовать X Server.echo Примечание: в случае использования VcXsrv Windows X Server необходимо раскомментироватьecho строки в файле Start-Ubuntu-20.04-plasma-desktop.bat, содержащие "config.xlaunch" иecho "vcxsrv.exe", и закомментировать все строки, содержащие "x410".echo ============================================================================================rem start "" /B "c:\wsl\vcxsrv\config.xlaunch" > nulstart "" /B x410.exe /wm /public > nulstart "" /B "c:\wsl\pulseaudio-1.1\bin\pulseaudio.exe" --use-pid-file=false -D > nulc:\wsl\Ubuntu-20.04\Ubuntu2004.exe run "cd ~ ; export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 ; export LIBGL_ALWAYS_INDIRECT=1 ; setxkbmap us,ru -option grp:ctrl_shift_toggle ; export PULSE_SERVER=tcp:$(grep nameserver /etc/resolv.conf | awk '{print $2}') ; sudo /etc/init.d/dbus start &> /dev/null ; sudo service ssh start ; sudo service xrdp start ; konsole ; pkill '(gpg|ssh)-agent' ;"taskkill.exe /F /T /IM x410.exe > nulrem taskkill.exe /F /T /IM vcxsrv.exe > nultaskkill.exe /F /IM pulseaudio.exe > nul
Также для удобства использования в каталоге
\wsl
подготавливаем ярлыки,
указывающие на соответствующие bat-файлы. После чего содержимое
каталога \wsl
выглядит следующим
образом:Запуск рабочего стола KDE Plasma
Проверяем, что все подготовительные действия выполнены, пробуем
запустить ярлык Plasma-desktop
.
Появляется запрос пароля, вводим пароль для учетной записи и окно
закрывается. В первый раз это нормально. Пробуем еще раз и видим
знакомую панель задач KDE Plasma. Настраиваем требуем внешний вид
панели задач, на примере для удобства использования панель
переносится в правую часть экрана и центрируется. Проверяем
настройки локализации, при необходимости добавляем русский
язык:
При необходимости выносим ярлыки для установленных linux-приложений на панель задач KDE Plasma.
Если Ubuntu 20.04 требует выйти из учетной записи пользователя для применения изменений в настройках, или Вам необходимо перезагрузить ОС, для этого в Windows Terminal введите команду:
wsl -d Ubuntu20.04 --shutdown
С помощью ярлыка
Plasma-desktop
или
Konsole
можно запустить GUI KDE
Plasma Ubuntu 20.04. Например, установим с помощью
Konsole
графический редактор
GIMP:После окончания установки запускаем из
Konsole
графический редактор
GIMP:GIMP работает, что и требовалось проверить.
А вот как работают различные linux-приложения в KDE Plasma в WSL2:
настроенная панель задач KDE Plasma находится в правой части экрана. а видео в окне Firefox воспроизводится со звуком.
При необходимости можно настроить доступ к Ubuntu20.04 по
SSH
и
RDP
, для этого необходимо установить
соответствующие службы командой:
sudo apt install ssh xrdp -y
примечание: для включения парольного доступа по
SSH
необходимо отредактировать файл
/etc/ssh/sshd_config
, а именно
параметр PasswordAuthentication no
необходимо установить в значение
PasswordAuthentication yes
, сохранить
изменения и перезагрузить Ubuntu20.04.При каждом запуске Ubuntu20.04 меняется внутренний ip-адрес,
перед настройкой удаленного доступа необходимо уточнить текущий
ip-адрес с помощью команды ip a
:
Соответственно, этот ip-адрес необходимо внести в настройки сессий
SSH
и
RDP
перед запуском.Вот так выглядит удаленный доступ по
SSH
с помощью MobaXterm:А вот так выглядит удаленный доступ по
RDP
:Использование X-сервера vcxsrv вместо x410
Запускаем и настраиваем vcxsrv
,
внимательно устанавливаем соответствующие флажки:
Сохраняем настроенную конфигурацию в каталоге
\wsl\vcxsrv
со стандартным именем
config.xlaunch
.
Редактируем bat-файлы
Start-Ubuntu-20.04-plasma-desktop.bat
и Start-Ubuntu-20.04-terminal.bat
в
соответствии с имеющимися в них инструкциями.
Запускаем ярлык Plasma-desktop
, и
вот что получаем:
Рабочий стол KDE Plasma полностью закрывает рабочий стол Windows, для переключения между окнами linux- и windows-приложений используем известную комбинацию клавиш
Alt+Tab
, что не совсем удобно.Кроме того, выяснилась неприятная особенность X-сервера
vcxsrv
он падает при запуске
некоторых приложений, в частности того же GIMP или LibreOffice
Writer. Возможно следует подождать, когда разработчики уберут
замеченные баги, но это не точно Так что для получения приемлемых
результатов лучше использовать X Server Microsoft x410.Заключение
Все-таки надо отдать должное компании Microsoft, продукт WSL2 получился вполне рабочим, и на мой неискушенный взгляд весьма удачным. И насколько мне известно, разработчики продолжают усиленно его допиливать, и возможно через годик-другой, данная подсистема предстанет во всей своей функциональной полноте.