介绍
本文旨在引起在运行 Windows 10 的计算机上准备典型工作场所的系统管理员(包括软件开发人员)的注意。
应该注意的是,存在与无法集成从 Microsoft Store 在线商店获得的软件以用于自定义 Windows 10 映像相关的特定问题。无需详细说明,我将澄清此问题与以下事实相关:从 Microsoft Store 安装的程序与管理员服务帐户通信,以及自定义图像创建由实用程序完成时 sysprep
由于这种情况而发生错误。
本文中讨论的方法在准备带有预配置 WSL10 子系统的 Windows 2 操作系统映像以及带有 KDE Plasma GUI 的预先准备和配置的 Ubuntu 20.04 操作系统映像时避免了这个问题,后者又可以有自己的一套定制软件。
Internet 上有很多用于设置 WSL 子系统(即 WSL1 和相对较新的 WSL2)的示例和教程,以及为从 Ubuntu 16.04 到 Ubuntu 20.04 的基于 linux 的操作系统设置 GUI 界面,但这主要涉及基于桌面的在所谓的。 “轻量级”xfce4,在用户设置方面有可以理解的限制。 但就 Ubuntu 20.04 的 KDE Plasma GUI 而言,网上找不到太多信息。 但正是这个选项为最终用户提供了几乎无限的系统外观和硬件设置设置,当然,考虑到当前在 WSL2 子系统中实现的 linux 系统的集成能力。
安装所需的软件集并配置 WSL2
我们检查当前的 Windows 版本,为此,在 Windows 搜索栏中输入命令 winver
我们得到这样的东西:
重要的是操作系统版本为1903或1909(指定操作系统版本必须安装累积更新KB4566116)或2004(内部版本号不低于19041),其余信息无关紧要。 如果版本号低于该版本号,建议您升级到最新版本的 Windows 以正确重现本文中的结果。
为了便于进一步操作,请使用 Microsoft Store 安装免费的 Windows 终端(也可以从其他来源下载):
我们通过同一个Microsoft Store安装X Server X410,这个软件是付费的,但是有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 终端并通过按键选择命令提示符模式 Ctrl+Shift+2
.
首先,我们设置 WSL2 操作模式,为此我们输入命令:
wsl --set-default-version 2
更改为 Ubuntu 20.04 独立引导加载程序目录,在我的例子中是 wslUbuntu-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
安装最多需要 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
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
,见截图:
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:wslUbuntu-plasma-desktop
创建的映像将帮助我们自动执行启动/重新安装已配置的 Ubuntu 20.04 的操作,如有必要,它将使我们能够轻松地将其传输到另一台计算机。
准备Windows桌面的bat文件和快捷方式
使用 Notepad++ 编辑器,创建 bat 文件(需要 OEM-866 编码才能正确输出西里尔字符):
文件 Install-Ubuntu-20.04-plasma-desktop.bat
- 设计用于在已配置 WSL20.04 子系统和 X 服务器的计算机上自动初始安装 Ubuntu 2 创建的映像。 如果用户名和密码与示例中指定的不同,那么您需要对此 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 终端中输入命令:
wsl -d Ubuntu20.04 --shutdown
用捷径 Plasma-desktop
или Konsole
你可以运行 KDE Plasma Ubuntu 20.04 GUI。 例如,安装 Konsole
GIMP 图形编辑器:
GIMP 有效,这正是我想要检查的。
以下是各种 Linux 应用程序在 WSL2 中的 KDE Plasma 中的工作方式:
自定义的 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:
使用 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。
结论
尽管如此,我们还是要向微软致敬,WSL2 产品结果证明非常有效,并且在我没有经验的情况下,非常成功。 据我所知,开发人员继续集中“完成”它,也许 - 在一两年内,这个子系统将显示其所有功能完整性。
来源: habr.com