
Wprowadzenie
Niniejszy artykuł jest przeznaczony dla administratorów systemów, którzy przygotowują typowe stanowiska robocze na komputerach działających pod kontrolą systemu Windows 10, w tym dla programistów.
Należy zauważyć, że istnieje pewien problem związany z brakiem możliwości integracji oprogramowania pobranego ze sklepu Microsoft Store do użycia w użytkowniczym obrazie Windows 10. Nie wchodząc w szczegóły, wyjaśnię, że problem ten wiąże się z tym, że programy zainstalowane ze sklepu Microsoft Store są powiązane z kontem Administrator, a przy zakończeniu tworzenia obrazu użytkownika narzędziem sysprep pojawią się związane z tym błędy.
Metoda omówiona w tym artykule pozwoli uniknąć takiego problemu przy przygotowywaniu obrazu systemu Windows 10 z wcześniej skonfigurowaną subsystemem WSL2, a także z wcześniej przygotowanym i skonfigurowanym obrazem systemu Ubuntu 20.04 z GUI KDE Plasma, który z kolei może mieć swój zestaw oprogramowania użytkowego.
W Internecie dostępnych jest wiele przykładów i przewodników po konfiguracji systemu WSL (tj. WSL1 i stosunkowo nowego WSL2), z konfiguracją interfejsu GUI dla systemów Linux opartych na systemie od wersji Ubuntu 16.04 do Ubuntu 20.04, ale głównie dotyczyły one pulpitów opartych na tzw. 'lekkim' xfce4, który ma zrozumiałe ograniczenia w ustawieniach użytkownika. Co do GUI KDE Plasma dla Ubuntu 20.04, w sieci nie znalazłem żadnych istotnych informacji. Jednak ta opcja oferuje użytkownikowi praktycznie nieograniczony zestaw ustawień zarówno wyglądu systemu, jak i ustawień sprzętowych, oczywiście z uwzględnieniem obecnych możliwości integracji systemów Linux w subsystemie WSL2.
Instalacja wymaganego zestawu oprogramowania i konfiguracja WSL2
Sprawdzamy aktualną wersję systemu Windows, w tym celu w pasku wyszukiwania Windows wpisujemy polecenie winver i otrzymujemy mniej więcej to:
Ważne jest, aby system operacyjny miał wersję 1903 lub 1909 (podane wersje systemu operacyjnego muszą mieć zainstalowane kumulacyjne aktualizacje KB4566116), lub 2004 (numer kompilacji nie mniejszy niż 19041), pozostałe informacje nie mają znaczenia. Jeśli numer wersji jest niższy, aby prawidłowo powtórzyć wyniki przedstawione w tym artykule, zaleca się zaktualizowanie do najnowszej wersji Windows.
Dla wygody dalszych działań instalujemy darmowy Windows Terminal, używając Microsoft Store (istnieje również możliwość pobrania z innych źródeł):
Instalujemy X Server X410 za pośrednictwem tego samego Microsoft Store, to oprogramowanie jest płatne, ale istnieje darmowy okres próbny na 15 dni, co jest wystarczające do przeprowadzenia różnych testów.
Jako darmową alternatywę dla X410 i instalujemy serwer X VcXsrv.
W dowolnym dogodnym miejscu na dysku tworzymy katalog, w którym będziemy przechowywać nasze pliki. Na przykład utworzymy katalog C:wsl.
i instalujemy autonomiczny instalator Ubuntu 20.04, rozpakowujemy otrzymany plik za pomocą archiwizatora (np. 7-zip). Zmieniamy nazwę rozpakowanego katalogu o długiej nazwie Ubuntu_2004.2020.424.0_x64 na coś bardziej odpowiedniego, na przykład Ubuntu-20.04 i kopiujemy go do katalogu C:wsl (dalej w tekście po prostu wsl).
i rozpakowujemy katalog wsl wieloplatformowy serwer dźwiękowy PulseAudio v.1.1., wprowadzamy również poprawki w jego plikach konfiguracyjnych.
W pliku wslpulseaudio-1.1etcpulsedefault.pa w sekcji Ładowanie sterowników dźwiękowych statycznie edytujemy linię:
load-module module-waveout sink_name=output source_name=input record=0
a w sekcji Dostęp do sieci edytujemy linię:
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
W pliku wslpulseaudio-1.1etcpulsedaemon.conf odkomentowujemy i zmieniamy linię
exit-idle-time = -1
Konfigurujemy subsystem WSL2 zgodnie z Microsoft. Jedyne zastrzeżenie — dystrybucję Ubuntu już pobraliśmy, a zainstalujemy ją w następnym kroku. Głównie konfiguracja sprowadza się do włączenia dodatkowych komponentów „Podsystem Windows dla systemu Linux” i „Platforma wirtualna” oraz późniejszego restartu w celu zastosowania zmian w ustawieniach komputera:
W razie potrzeby instalujemy pakiet aktualizacji dla jądra Linux w WSL2.
Uruchamiamy Windows Terminal i wybieramy tryb Command Prompt, naciskając klawisze Ctrl+Shift+2.
W pierwszej kolejności ustawiamy tryb WSL2, wprowadzając polecenie:
wsl --set-default-version 2
Przechodzimy do katalogu z autonomicznym bootloaderem Ubuntu 20.04, w moim przypadku to wslUbuntu-20.04 i uruchamiamy plik ubuntu2004.exe. Gdy pojawi się prośba o nazwę użytkownika, podaję nazwisko engineer (można wpisać dowolne inne imię), wprowadzam swoje hasło i potwierdzam wprowadzone hasło dla podanego konta:
Pojawił się wiersz polecenia terminala, jądro Ubuntu 20.04 zostało zainstalowane. Sprawdzimy poprawność ustawienia trybu WSL2, w tym celu w Windows Terminal wybieramy zakładkę Windows PowerShell i wpisujemy komendę:
wsl -l -v
wynik wykonania powinien wyglądać następująco:
Konfigurujemy zaporę Microsoft Defender, tzn. wyłączamy ją dla sieci publicznej:
Konfiguracja Ubuntu 20.04
W Windows Terminal ponownie wybieramy zakładkę Command Prompt i instalujemy aktualizacje dla Ubuntu 20.04. W tym celu w wierszu poleceń wpisujemy:
sudo apt update && sudo apt upgrade -y
Instalujemy pulpitu KDE Plasma:
sudo apt install kubuntu-desktop -y
instalacja trwa do 30 minut w zależności od wydajności komputera i przepustowości połączenia z Internetem, w razie prośby instalatora potwierdzamy OK.
Instalujemy rosyjską lokalizację i słowniki Ubuntu 20.04. W tym celu w wierszu poleceń wpisujemy:
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 # uwaga: wybierz ru_RU.UTF-8 UTF-8, zobacz zrzuty ekranu poniżej.
sudo apt-get install --reinstall locales
Dodajemy najnowszą wersję pulpitu KDE Plasma:
sudo add-apt-repository ppa:kubuntu-ppa/backports
sudo apt update && sudo apt full-upgrade -y
Dodajemy swój zestaw aplikacji konsolowych, na przykład mc i neofetch:
sudo apt install mc neofetch -y
Sprawdzamy, co udało się osiągnąć, wpisując w wierszu poleceń neofetch, zobacz zrzut ekranu:
Edytujemy plik konfiguracyjny WSL /etc/wsl.conf:
sudo nano /etc/wsl.conf
do otwartego pustego okna edytora tekstu kopiujemy tekst:
[automount]
enabled = true
root = /mnt
options = "metadata,umask=22,fmask=11"
mountFsTab = true
[network]
generateHosts = true
generateResolvConf = true
[interop]
enabled = true
appendWindowsPath = true
zapisujemy zmiany (Ctrl+O), potwierdzamy operację i wychodzimy z edytora tekstu (Ctrl+X).
Eksportujemy skonfigurowany obraz Ubuntu-20.04 do stworzonego przez nas katalogu wsl. W tym celu w Windows Terminal ponownie wybieramy zakładkę Windows PowerShell i wpisujemy komendę:
wsl --export Ubuntu-20.04 c:wslUbuntu-plasma-desktop
stworzony obraz pomoże nam zautomatyzować operacje uruchamiania/ponownej instalacji skonfigurowanego Ubuntu 20.04, a w razie potrzeby umożliwi łatwe przeniesienie na inny komputer.
Przygotowanie plików bat i skrótów na pulpit Windows
Za pomocą edytora Notepad++ tworzymy pliki bat (koniecznie w kodowaniu OEM-866 dla poprawnego wyświetlania znaków cyrylicy):
Plik Install-Ubuntu-20.04-plasma-desktop.bat — służy do automatyzacji początkowej instalacji utworzonego obrazu Ubuntu 20.04 na komputerze z już skonfigurowanym subsystemem WSL2 i serwerem X. Jeśli nazwa użytkownika i hasło różnią się od podanych w przykładzie, należy wprowadzić odpowiednie zmiany w tym pliku bat:
@echo off
wsl --set-default-version 2
cls
echo Proszę czekać na zakończenie instalacji dystrybucji Ubuntu-20.04...
wsl --import Ubuntu-20.04 c:wsl c:wslUbuntu-plasma-desktop
wsl -s Ubuntu-20.04
cls
echo Dystrybucja Ubuntu-20.04 została pomyślnie zainstalowana!
echo Nie zapomnij zmienić domyślnego konta „root” na istniejące konto użytkownika,
echo lub użyj preinstalowanego konta „engineer”, hasło: „password”.
pause
Plik Reinstall-Ubuntu-20.04-plasma-desktop.bat — służy do przeinstalowania przygotowanego obrazu Ubuntu 20.04 na komputerze.
@echo off
wsl --unregister Ubuntu-20.04
wsl --set-default-version 2
cls
echo Proszę czekać na zakończenie przeinstalowania dystrybucji Ubuntu-20.04...
wsl --import Ubuntu-20.04 c:wsl c:wslUbuntu-plasma-desktop
wsl -s Ubuntu-20.04
cls
echo Dystrybucja Ubuntu-20.04 została pomyślnie przeinstalowana!
pause
Plik Set-default-user.bat — do ustawienia „domyślnego” użytkownika.
@echo off
set /p answer=Wprowadź istniejące konto w Ubuntu (engineer):
c:wslUbuntu-20.04ubuntu2004.exe config --default-user %answer%
cls
echo Konto użytkownika %answer% w Ubuntu-20.04 zostało ustawione jako domyślne!
pause
Plik Start-Ubuntu-20.04-plasma-desktop.bat — właściwe uruchomienie środowiska graficznego KDE Plasma.
@echo off
echo ===================================== Uwaga! ============================================
echo Aby poprawnie działało GUI Ubuntu 20.04 w WSL2, należy używać serwera X.
echo Uwaga: w przypadku używania VcXsrv Windows X Server, należy odkomentować
echo linie w pliku Start-Ubuntu-20.04-plasma-desktop.bat, które zawierają "config.xlaunch" i
echo "vcxsrv.exe", oraz skomentować wszystkie linie, które zawierają "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
Plik Start-Ubuntu-20.04-terminal.bat — uruchamianie graficznego terminala bez pulpitu KDE Plasma.
@echo off
echo ===================================== Uwaga! ============================================
echo Aby poprawnie działało GUI Ubuntu 20.04 w WSL2, należy użyć serwera X.
echo Uwaga: w przypadku użycia VcXsrv Windows X Server należy odkomentować
echo linie w pliku Start-Ubuntu-20.04-plasma-desktop.bat, które zawierają "config.xlaunch" i
echo "vcxsrv.exe", a zakomentować wszystkie linie, które zawierają "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
Dla wygody użytkowania w katalogu wsl przygotowujemy skróty wskazujące na odpowiednie pliki bat. Następnie zawartość katalogu wsl wygląda następująco:
Uruchomienie pulpitu KDE Plasma
Sprawdzamy, czy wszystkie przygotowania zostały wykonane, próbujemy uruchomić skrót Plasma-desktop. Pojawia się prośba o hasło, wprowadzamy hasło konta i… okno zamyka się. Po raz pierwszy to normalne. Próbujemy ponownie — i widzimy znany panel zadań KDE Plasma. Ustawiamy wymagany wygląd panelu zadań, dla łatwiejszej obsługi przenosimy go na prawą stronę ekranu i centrowujemy. Sprawdzamy ustawienia lokalizacji, w razie potrzeby dodajemy język rosyjski:
W razie potrzeby umieszczamy skróty do zainstalowanych aplikacji linuxowych na panelu zadań KDE Plasma.
Jeśli Ubuntu 20.04 wymaga wylogowania się z konta użytkownika, aby zastosować zmiany w ustawieniach, lub musisz ponownie uruchomić system operacyjny, wpisz w terminalu Windows polecenie:
wsl -d Ubuntu20.04 --shutdown
Za pomocą skrótu Plasma-desktop lub Konsole można uruchomić GUI KDE Plasma Ubuntu 20.04. Na przykład zainstalujmy za pomocą Konsole edytora graficznego GIMP:
Po zakończeniu instalacji uruchamiamy z Konsole edytora graficznego GIMP:
GIMP działa, co miało być sprawdzone.
A oto jak działają różne aplikacje linuxowe w KDE Plasma w WSL2:
panel zadań KDE Plasma jest umieszczony po prawej stronie ekranu, a wideo w oknie Firefox jest odtwarzane z dźwiękiem.
W razie potrzeby można skonfigurować dostęp do Ubuntu 20.04 przez SSH i RDP, aby to zrobić, należy zainstalować odpowiednie usługi poleceniem:
sudo apt install ssh xrdp -y
uwaga: aby włączyć dostęp za pomocą hasła przez SSH należy edytować plik /etc/ssh/sshd_config, a konkretnie parametr PasswordAuthentication no należy ustawić na wartość PasswordAuthentication yes, zapisać zmiany i ponownie uruchomić Ubuntu 20.04.
Za każdym razem, gdy uruchamiamy Ubuntu 20.04, zmienia się wewnętrzny adres IP, przed skonfigurowaniem zdalnego dostępu należy sprawdzić aktualny adres IP za pomocą polecenia ip a:
Odpowiedni adres IP należy wprowadzić w ustawieniach sesji SSH i RDP przed uruchomieniem.
Tak wygląda zdalny dostęp przez SSH za pomocą MobaXterm:
A tak wygląda zdalny dostęp przez RDP:
Używając serwera X vcxsrv zamiast x410
Uruchamiamy i konfigurujemy vcxsrv, uważnie ustawiając odpowiednie zaznaczenia:




Zapisujemy skonfigurowaną konfigurację w katalogu wslvcxsrv z domyślną nazwą config.xlaunch.
Edycja plików bat Start-Ubuntu-20.04-plasma-desktop.bat i Start-Ubuntu-20.04-terminal.bat zgodnie z podanymi w nich instrukcjami.
Uruchamiamy skrót Plasma-desktop, a oto co otrzymujemy:
Pulpit KDE Plasma całkowicie zasłania pulpit Windows, aby przełączać się między oknami aplikacji linuxowych i windowsowych, używamy znanego skrótu klawiszowego Alt+Tab, co nie jest zbyt wygodne.
Ponadto okazało się, że serwer X ma nieprzyjemną cechę vcxsrv – zawiesza się przy uruchamianiu niektórych aplikacji, w szczególności GIMP czy LibreOffice Writer. Możliwe, że warto poczekać, aż programiści naprawią zauważone "błędy", ale nie jest to pewne... Dlatego dla uzyskania akceptowalnych wyników lepiej użyć serwera X Microsoft x410.
Podsumowanie
Trzeba przyznać, że firma Microsoft wykonała dobrą robotę, produkt WSL2 okazał się całkiem funkcjonalny, a z mojego niezaawansowanego punktu widzenia jest dość udany. I jak mi wiadomo, programiści nadal intensywnie nad nim pracują, i być może za rok lub dwa ta podsystema zaprezentuje się w całej swojej funkcjonalnej pełni.
Źródło: habr.com
