Windows 10 + Linux。在WSL2中为Ubuntu 20.04配置KDE Plasma GUI。逐步指南





介绍



本文旨在引起在运行Windows 10的计算机(包括软件开发人员)上准备典型工作场所的系统管理员的注意。



应该注意的是,存在一些与无法集成从在线Microsoft Store获得的软件以用于Windows 10的自定义映像有关的某些问题。在不赘述的情况下,我将澄清这个问题是由于从Microsoft Store安装的程序已链接的事实使用管理员服务帐户,并且在实用程序完成创建自定义映像后sysprep,会发生由这种情况引起的错误。



本文讨论的方法可避免在使用预配置的WSL2子系统以及带有KDE Plasma GUI的Ubuntu 20.04的预配置和配置的Windows 10映像准备Windows 10映像时避免此类问题,而后者又可能具有自己的一套自定义软件。



在Internet上,有大量的示例和指南用于配置WSL子系统(即WSL1和相对较新的WSL2),并为基于Linux的Linux系统(从Ubuntu 16.04到Ubuntu 20.04开始)配置GUI接口,但大多数情况下涉及基于所谓的台式机。“轻量级” xfce4,在用户设置中具有可以理解的限制。但是就涉及Ubuntu 20.04的KDE Plasma GUI而言,网上没有任何实质性信息。但是,考虑到WSL2子系统中实现的linux系统的当前集成功能,此选项为最终用户提供了几乎无限制的系统外观和硬件设置设置。



安装所需的软件套件并配置WSL2



我们检查Windows的当前版本,为此,请在Windows搜索栏中输入命令,winver并获得以下信息:





重要的是,操作系统必须具有版本1903或1909(指定的操作系统版本必须安装了累积更新KB4566116)或2004(内部版本号不少于19041),其余信息无关紧要。如果版本号较低,则建议您升级到最新版本的Windows,以正确重复本文提供的结果。



为了方便进一步操作,请使用Microsoft Store安装免费的Windows Terminal(也可以从其他来源下载):





我们通过同一家Microsoft Store安装X Server X410,该软件是付费的,但是有15天的免费期限,足以进行各种测试。





作为X410的免费替代产品,下载并安装VcXsrv X服务器。



在磁盘上任何方便的位置,创建一个目录,我们将在其中存储文件。让我们创建一个目录作为示例C:\wsl



下载并安装Ubuntu 20.04脱机安装程序,使用存档器(例如7-zip)解压缩所得文件。Ubuntu_2004.2020.424.0_x64例如,使用长名称将解压缩的目录重命名为更可接受的名称Ubuntu-20.04然后将其复制到目录C:\wsl(以下简称\wsl)。PulseAudio v.1.1跨平台声音服务器



下载并解压缩到该目录中\wsl,并对其配置文件进行更正。



在文件\wsl\pulseaudio-1.1\etc\pulse\default.paLoad 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


我们根据Microsoft文档配置WSL2子系统唯一的说明是我们已经下载了Ubuntu发行版,我们将在下一步中安装它。基本上,配置归结为启用其他组件“ Linux的Windows子系统”和“虚拟机平台”,然后重新启动以将更改应用于计算机设置:







如有必要,请在WSL2中下载并安装Linux内核的更新程序包。

启动Windows Terminal并通过按键选择“命令提示符”模式Ctrl+Shift+2



首先,我们设置WSL2操作模式,为此,我们输入以下命令:



wsl  --set-default-version 2


使用脱机引导程序Ubuntu 20.04进入目录,在本例中为\wsl\Ubuntu-20.04并运行文件ubuntu2004.exe当提示输入用户名时,我指定一个名称engineer(您可以输入其他任何名称),输入密码并确认为指定帐户输入的密码:





出现一个终端提示,说明已安装Ubuntu 20.04内核。让我们检查WSL2模式设置的正确性,为此,在Windows终端中,选择Windows PowerShell选项卡并输入命令:



wsl -l -v


执行的结果应该是这样的:







我们配置Microsoft Defender防火墙,即 为公共网络禁用它:









设置Ubuntu 20.04



在Windows终端中,再次选择“命令提示符”选项卡,然后安装Ubuntu 20.04的更新。为此,在命令行上输入:



sudo apt update && sudo apt upgrade –y


安装KDE Plasma桌面:



sudo apt install kubuntu-desktop -y


根据计算机的性能和Internet访问信道的带宽,安装过程最多需要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


添加一组控制台应用程序,例如mcneofetch



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终端中,再次选择Windows PowerShell选项卡,然后输入以下命令:



wsl --export Ubuntu-20.04 c:\wsl\Ubuntu-plasma-desktop


创建的映像将帮助我们自动执行已配置的Ubuntu 20.04的启动/重新安装操作,如有必要,它将使我们能够轻松地将其传输到另一台计算机。



准备bat文件和Windows桌面的快捷方式



使用记事本++编辑器,创建bat文件(在OEM-866编码中需要正确显示西里尔字母字符):

文件Install-Ubuntu-20.04-plasma-desktop.bat-用于在具有WSL2子系统和X服务器的计算机上自动初始化创建的Ubuntu 20.04映像的初始安装。如果用户名和密码与示例中指示的用户名和密码不同,则需要对此蝙蝠文件进行适当的更改:



@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如下所示:







启动KDE Plasma桌面



我们检查所有准备工作是否已完成,我们尝试启动快捷方式Plasma-desktop出现密码请求,输入帐户密码,然后...窗口关闭。第一次没关系。再试一次,我们看到了熟悉的KDE Plasma任务栏。我们配置任务栏所需的外观,例如,为了易于使用,将面板移至屏幕的右侧并居中。我们检查本地化设置,必要时添加俄语:







如有必要,在KDE Plasma任务栏上放置已安装Linux应用程序的快捷方式。



如果Ubuntu 20.04要求您注销用户帐户以将更改应用于设置,或者您需要重新启动操作系统,请在Windows Terminal中输入以下命令:



wsl -d Ubuntu20.04 --shutdown


使用快捷方式Plasma-desktop或者,Konsole您可以启动KDE Plasma Ubuntu 20.04 GUI。例如,让我们使用KonsoleGIMP图形编辑器进行安装





安装完成后,从Konsole图形编辑器运行GIMP图形编辑器:





GIMP有效,这就是您要检查的内容。

以下是各种Linux应用程序如何在WSL2的KDE Plasma中工作:





自定义的KDE Plasma任务栏位于屏幕的右侧。并且Firefox窗口中的视频会播放声音。









如有必要,您可以通过SSH配置对Ubuntu20.04的访问RDP,为此,您需要使用以下命令安装适当的服务:



sudo apt install ssh xrdp -y


注意:要通过软件启用密码访问,SSH需要编辑文件/etc/ssh/sshd_config,即PasswordAuthentication no必须将参数设置为value PasswordAuthentication yes,保存更改并重新启动Ubuntu20.04。



每次启动Ubuntu20.04时,内部ip地址都会更改,在配置远程访问之前,需要使用以下命令指定当前ip地址ip a





因此,在会话设置中SSHRDP启动之前需要ip地址

这是SSH使用MobaXterm进行远程软件访问的样子





这就是远程访问的样子RDP







使用vcxsrv X服务器而不是x410



启动并配置vcxsrv,仔细检查相应的框:











我们将配置的配置保存在\wsl\vcxsrv标准名称的目录中config.xlaunch



我们编辑蝙蝠文件Start-Ubuntu-20.04-plasma-desktop.bat,并Start-Ubuntu-20.04-terminal.bat按照他们提供的说明。



我们启动快捷方式Plasma-desktop,这就是我们得到的:





KDE Plasma桌面完全关闭了Windows桌面,我们使用众所周知的组合键在linux的Windows和Windows应用程序的窗口之间切换Alt+Tab,这不是很方便。

此外,还揭示了X服务器的一个令人不快的功能vcxsrv-启动某些应用程序(尤其是同一GIMP或LibreOffice Writer)时,它会崩溃。也许我们应该等待开发人员删除注意到的“错误”,但这并不确定。因此,为了获得可接受的结果,最好使用Microsoft X Server x410。



结论



尽管如此,我们必须向微软表示敬意,WSL2产品被证明是非常有效的,并且以我的简单意见,它非常成功。据我所知,开发人员将继续努力以“完成”它,也许-在一两年之内,该子系统将以其完整的功能出现。



All Articles