Запровадження
Ця стаття призначена для системних адміністраторів, які готують типові робочі місця на комп'ютерах під керуванням 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
У будь-якому зручному місці на диску створюємо каталог, в якому зберігатимемо наші файли. Як приклад створимо каталог C:wsl
.
Ubuntu_2004.2020.424.0_x64
у щось більш прийнятне, наприклад Ubuntu-20.04
та копіюємо його в каталог C:wsl
(далі за текстом просто wsl
).
wsl
кросплатформний звуковий сервер PulseAudio v.1.1., також вносимо виправлення до його файлів конфігурації.
У файлі wslpulseaudio-1.1etcpulsedefault.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
У файлі wslpulseaudio-1.1etcpulsedaemon.conf
розкоментуємо та змінюємо рядок
exit-idle-time = -1
Налаштовуємо підсистему 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 хвилин в залежності від продуктивності комп'ютера та пропускної спроможності каналу доступу в 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
Додаємо останню версію робочого столу 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
, зберегти зміни та перезавантажити Ubuntu20.04.
При кожному запуску Ubuntu20.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