- Регистрация
- 21.07.20
- Сообщения
- 40.408
- Реакции
- 1
- Репутация
- 0
Введение
Данная статья предназначена вниманию системных администраторов, которые подготавливают типовые рабочие места на компьютерах под управлением ОС 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 и получаем примерно следующее:
You must be registered for see links
Важно, чтобы ОС имела версию 1903 или 1909 (указанные версии ОС должны быть с установленным накопительным обновлением KB4566116), либо 2004 (номер сборки не менее чем 19041), остальная информация не имеет значения. Если номер версии меньше, то для корректного повторения результатов, изложенных в данной статье, рекомендуется обновиться до последней версии Windows.
Для удобства дальнейших действий устанавливаем бесплатный Windows Terminal, используя Microsoft Store (также существует возможность загрузки из других источников):
You must be registered for see links
Устанавливаем X Server X410 через тот же Microsoft Store, это ПО платное, но имеется бесплатный период в 15 дней, что вполне достаточно для проведения различных тестов.
You must be registered for see links
В качестве бесплатной альтернативы X410
You must be registered for see links
и устанавливаем X-сервер VcXsrv.В любом удобном месте на диске создаем каталог, в котором будем хранить наши файлы. В качестве примера создадим каталог C:\wsl.
You must be registered for see links
и устанавливаем автономный установщик Ubuntu 20.04, распаковываем полученный файл с помощью архиватора (например 7-zip). Переименовываем распакованный каталог с длинным именем Ubuntu_2004.2020.424.0_x64 во что-то более приемлемое, например Ubuntu-20.04 и копируем его в каталог C:\wsl (далее по тексту просто \wsl).
You must be registered for see links
и распаковываем в каталог \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 в соответствии с
You must be registered for see links
Microsoft. Единственное замечание — дистрибутив Ubuntu мы уже скачали, и устанавливать его будем на следующем шаге. В основном, настройка сводится к включению дополнительных компонентов «Подсистема Windows для Linux» и «Платформа виртуальной машины», и последующей перезагрузки для применения изменений в настройках компьютера:
You must be registered for see links
При необходимости
You must be registered for see links
и устанавливаем пакет обновлений для ядра 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 (можно ввести любое другое имя), ввести свой пароль и подтвердить введенный пароль для указанной учетной записи:
You must be registered for see links
Появилась строка приглашения терминала, ядро Ubuntu 20.04 установлено. Проверим правильность настройки режима WSL2, для этого в Windows Terminal выбираем закладку Windows PowerShell и вводим команду:
wsl -l -v
результат выполнения должен быть такой:
You must be registered for see links
Настраиваем брандмауэр Microsoft Defender, т.е. отключаем его для общедоступной сети:
You must be registered for see links
You must be registered for see links
Настройка 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 -y
sudo apt install libreoffice-l10n-ru libreoffice-help-ru -y
sudo apt install hunspell-ru mueller7-dict -y
sudo update-locale LANG=ru_RU.UTF-8
sudo dpkg-reconfigure locales # примечание: выбираем ru_RU.UTF-8 UTF-8, см. скриншоты ниже.
sudo apt-get install --reinstall locales
You must be registered for see links
You must be registered for see links
Добавляем последнюю версию рабочего стола KDE Plasma:
sudo add-apt-repository ppa:kubuntu-ppa/backports
sudo apt update && sudo apt full-upgrade -y
Добавляем свой набор консольных приложений, например mc и neofetch:
sudo apt install mc neofetch -y
Проверяем, что получилось, вводим в командную строку neofetch, см. скриншот:
You must be registered for see links
Редактируем конфигурационный файл WSL /etc/wsl.conf:
sudo nano /etc/wsl.conf
в открывшееся пустое окно текстового редактора копируем текст:
[automount]
enabled = true
root = /mnt
options = «metadata,umask=22,fmask=11»
mountFsTab = true
[network]
generateHosts = true
generateResolvConf = true
[interop]
enabled = true
appendWindowsPath = 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 off
wsl --set-default-version 2
cls
echo Ожидайте окончания установки дистрибутива Ubuntu-20.04...
wsl --import Ubuntu-20.04 c:\wsl c:\wsl\Ubuntu-plasma-desktop
wsl -s Ubuntu-20.04
cls
echo Дистрибутив Ubuntu-20.04 успешно установлен!
echo Не забудьте сменить учетную запись по умолчанию «root» на существующую учетную запись пользователя,
echo либо используйте предустановленную учетную запись «engineer», пароль: «password».
pause
Файл Reinstall-Ubuntu-20.04-plasma-desktop.bat — предназначен для переустановки подготовленного образа Ubuntu 20.04 на компьютере.
Echo off
wsl --unregister Ubuntu-20.04
wsl --set-default-version 2
cls
echo Ожидайте окончания переустановки дистрибутива Ubuntu-20.04...
wsl --import Ubuntu-20.04 c:\wsl c:\wsl\Ubuntu-plasma-desktop
wsl -s Ubuntu-20.04
cls
echo Дистрибутив Ubuntu-20.04 успешно переустановлен!
pause
Файл Set-default-user.bat — для установки пользователя «по умолчанию».
Echo off
set /p answer=Введите существующую учетную запись в Ubuntu (engineer):
c:\wsl\Ubuntu-20.04\ubuntu2004.exe config --default-user %answer%
cls
echo Учетная запись пользователя %answer% в Ubuntu-20.04 установлена по умолчанию!
pause
Файл Start-Ubuntu-20.04-plasma-desktop.bat — собственно запуск рабочего стола KDE Plasma.
Echo off
echo ===================================== Внимание! ============================================
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" > nul
start "" /B x410.exe /wm /public > nul
start "" /B "c:\wsl\pulseaudio-1.1\bin\pulseaudio.exe" --use-pid-file=false -D > nul
c:\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 > nul
taskkill.exe /F /T /IM x410.exe > nul
taskkill.exe /F /IM pulseaudio.exe > nul
Файл Start-Ubuntu-20.04-terminal.bat — запуск графического терминала без рабочего стола KDE Plasma.
Echo off
echo ===================================== Внимание! ============================================
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" > nul
start "" /B x410.exe /wm /public > nul
start "" /B "c:\wsl\pulseaudio-1.1\bin\pulseaudio.exe" --use-pid-file=false -D > nul
c:\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 > nul
rem taskkill.exe /F /T /IM vcxsrv.exe > nul
taskkill.exe /F /IM pulseaudio.exe > nul
Также для удобства использования в каталоге \wsl подготавливаем ярлыки, указывающие на соответствующие bat-файлы. После чего содержимое каталога \wsl выглядит следующим образом:
You must be registered for see links
Запуск рабочего стола KDE Plasma
Проверяем, что все подготовительные действия выполнены, пробуем запустить ярлык Plasma-desktop. Появляется запрос пароля, вводим пароль для учетной записи и… окно закрывается. В первый раз это нормально. Пробуем еще раз — и видим знакомую панель задач KDE Plasma. Настраиваем требуем внешний вид панели задач, на примере для удобства использования панель переносится в правую часть экрана и центрируется. Проверяем настройки локализации, при необходимости добавляем русский язык:
You must be registered for see links
При необходимости выносим ярлыки для установленных linux-приложений на панель задач KDE Plasma.
Если Ubuntu 20.04 требует выйти из учетной записи пользователя для применения изменений в настройках, или Вам необходимо перезагрузить ОС, для этого в Windows Terminal введите команду:
wsl -d Ubuntu20.04 --shutdown
С помощью ярлыка Plasma-desktop или Konsole можно запустить GUI KDE Plasma Ubuntu 20.04. Например, установим с помощью Konsole графический редактор GIMP:
You must be registered for see links
После окончания установки запускаем из Konsole графический редактор GIMP:
You must be registered for see links
GIMP работает, что и требовалось проверить.
А вот как работают различные linux-приложения в KDE Plasma в WSL2:
You must be registered for see links
настроенная панель задач KDE Plasma находится в правой части экрана. а видео в окне Firefox воспроизводится со звуком.
You must be registered for see links
You must be registered for see links
При необходимости можно настроить доступ к 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:
You must be registered for see links
Соответственно, этот ip-адрес необходимо внести в настройки сессий SSH и RDP перед запуском.
Вот так выглядит удаленный доступ по SSH с помощью MobaXterm:
You must be registered for see links
А вот так выглядит удаленный доступ по RDP:
You must be registered for see links
Использование X-сервера vcxsrv вместо x410
Запускаем и настраиваем vcxsrv, внимательно устанавливаем соответствующие флажки:
Сохраняем настроенную конфигурацию в каталоге \wsl\vcxsrv со стандартным именем config.xlaunch.
Редактируем bat-файлы Start-Ubuntu-20.04-plasma-desktop.bat и Start-Ubuntu-20.04-terminal.bat в соответствии с имеющимися в них инструкциями.
Запускаем ярлык Plasma-desktop, и вот что получаем:
You must be registered for see links
Рабочий стол KDE Plasma полностью закрывает рабочий стол Windows, для переключения между окнами linux- и windows-приложений используем известную комбинацию клавиш Alt+Tab, что не совсем удобно.
Кроме того, выяснилась неприятная особенность X-сервера vcxsrv – он «падает» при запуске некоторых приложений, в частности того же GIMP или LibreOffice Writer. Возможно следует подождать, когда разработчики уберут замеченные «баги», но это не точно… Так что для получения приемлемых результатов лучше использовать X Server Microsoft x410.
Заключение
Все-таки надо отдать должное компании Microsoft, продукт WSL2 получился вполне рабочим, и на мой неискушенный взгляд — весьма удачным. И насколько мне известно, разработчики продолжают усиленно его «допиливать», и возможно — через годик-другой, данная подсистема предстанет во всей своей функциональной полноте.