
Въведение
Тази статия е предназначена за системни администратори, които подготвят стандартни работни места на компютри с операционна система Windows 10, в това число и за разработчици на софтуер.
Трябва да се отбележи, че съществува определен проблем, свързан с невъзможността за интеграция на софтуер, получен в онлайн магазина Microsoft Store, за използване в потребителския образ на Windows 10. Без да влизам в подробности, уточнявам, че този проблем е свързан с факта, че програмите, инсталирани от Microsoft Store, са свързани с административната служебна сметка, и при завършване на създаването на потребителския образ с утилитата sysprep се появяват произтичащи от това грешки.
Предложеният в статията метод позволява да се избегне този проблем при подготовката на образа на операционната система Windows 10 с предварително настроена подсистема WSL2, а също и с предварително подготвен и конфигуриран образ на Ubuntu 20.04 с графичен интерфейс KDE Plasma, който от своя страна може да има собствен набор от потребителски софтуер.
В интернет има много примери и ръководства за настройка на WSL подсистеми (т.е. WSL1 и сравнително новата WSL2), с настройка на GUI интерфейс за Linux системи на базата на версии на Ubuntu от 16.04 до 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., също така правим корекции в конфигурационните му файлове.
В файла wslpulseaudio-1.1etcpulsedefault.pa в раздела Зареждане на звуковите драйвери статично редактираме реда:
load-module module-waveout sink_name=output source_name=input record=0
а в раздела Достъп до мрежа редактираме реда:
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
В файла wslpulseaudio-1.1etcpulsedaemon.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, в моя случай това е wslUbuntu-20.04 и стартираме файла ubuntu2004.exe. При появата на запитване за потребителско име посочвам името engineer (можете да въведете и друго име), въвеждам паролата си и потвърдете въведената парола за указаната потребителска сметка:
Появи се покана за терминала, ядрото на Ubuntu 20.04 е инсталирано. Нека проверим правилността на конфигурацията на режима WSL2, за което в Windows Terminal избираме раздела Windows PowerShell и въвеждаме командата:
wsl -l -v
резултатът от изпълнението трябва да е следният:
Конфигурираме брандер на 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 минути в зависимост от производителността на компютъра и скоростта на интернет връзката, при появата на запитване от инсталатора потвърдете 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
Добавяме последната версия на работния плот 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, вижте екранната снимка:
Редактираме конфигурационния файл на 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:wslUbuntu-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:wslUbuntu-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:wslUbuntu-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:wslUbuntu-20.04ubuntu2004.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:wslvcxsrvconfig.xlaunch" > nul
start "" /B x410.exe /wm /public > nul
start "" /B "c:wslpulseaudio-1.1binpulseaudio.exe" --use-pid-file=false -D > nul
c:wslUbuntu-20.04Ubuntu2004.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:wslvcxsrvconfig.xlaunch" > nul
start "" \/B x410.exe \/wm \/public > nul
start "" \/B "c:wslpulseaudio-1.1binpulseaudio.exe" --use-pid-file=false -D > nul
c:wslUbuntu-20.04Ubuntu2004.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 изглежда следния начин:
Стартиране на работния плот 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, да се запазят промените и да се рестартира Ubuntu 20.04.
При всяко стартиране на Ubuntu 20.04, вътрешният IP адрес се променя, затова преди настройката на отдалечен достъп е нужно да се уточни текущият IP адрес с помощта на командата ip a:
Съответно, този IP адрес трябва да бъде добавен в настройките на сесиите SSH и RDP преди стартиране.
Ето как изглежда отдалеченият достъп по SSH с помощта на MobaXterm:
А ето как изглежда отдалеченият достъп по RDP:
Използване на X-сървър vcxsrv вместо x410
Стартираме и настройваме vcxsrv, внимателно задаваме съответните отметки:




Запазваме конфигурираната конфигурация в директорията wslvcxsrv с стандартно име 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 и на мой непросветен поглед — доста успешен. И доколкото знам, разработчиците продължават да го усъвършенстват активно, и вероятно — след година-две, тази подсистема ще представи цялата си функционална пълнота.
Източник: habr.com
