
Introducción
Este artículo está dirigido a administradores de sistemas que preparan estaciones de trabajo típicas en computadoras con el sistema operativo Windows 10, incluyendo a desarrolladores de software.
Cabe destacar que existe un problema relacionado con la imposibilidad de integrar software adquirido en la tienda en línea Microsoft Store para su uso en una imagen de usuario de Windows 10. Sin entrar en detalles, aclaro que este problema se debe a que los programas instalados desde Microsoft Store se vinculan con la cuenta de administrador, y al finalizar la creación de la imagen de usuario con la herramienta sysprep se producen errores causados por esta circunstancia.
El método discutido en este artículo permite evitar tal problema al preparar una imagen del sistema operativo Windows 10 con la subsistema WSL2 configurada previamente, así como con una imagen de Ubuntu 20.04 con GUI KDE Plasma que puede tener su propio conjunto de software personalizado.
En internet hay una gran cantidad de ejemplos y guías sobre la configuración de subsistemas WSL (es decir, WSL1 y el relativamente nuevo WSL2), con la configuración de interfaces GUI para sistemas Linux basados en versiones de Ubuntu desde la 16.04 hasta la 20.04, pero principalmente se ha tratado de escritorios basados en lo que se denomina «liviano» xfce4, que tiene limitaciones comprensibles en configuraciones de usuario. Pero en lo que respecta a GUI KDE Plasma para Ubuntu 20.04, no se encontró información sustancial en la red. Sin embargo, esta opción brinda al usuario final un conjunto prácticamente ilimitado de configuraciones tanto para la apariencia del sistema como para la configuración del hardware, por supuesto teniendo en cuenta las actuales capacidades de integración de sistemas Linux implementadas en el subsistema WSL2.
Instalación del conjunto de software requerido y configuración de WSL2
Verificamos la versión actual de Windows, para esto en la barra de búsqueda de Windows introducimos el comando winver y obtenemos algo como lo siguiente:
Es importante que el sistema operativo tenga la versión 1903 o 1909 (las versiones mencionadas deben tener instalada la actualización acumulativa KB4566116), o 2004 (número de compilación no menor que 19041), el resto de la información no es relevante. Si el número de versión es menor, se recomienda actualizar a la última versión de Windows para reproducir correctamente los resultados expuestos en este artículo.
Para facilitar las acciones posteriores, instalamos el Windows Terminal gratuito utilizando Microsoft Store (también se puede descargar de otras fuentes):
Instalamos X Server X410 a través del mismo Microsoft Store, este software es de pago, pero tiene un período gratuito de 15 días, lo cual es suficiente para realizar diversas pruebas.
Como alternativa gratuita a X410 e instalamos el servidor X VcXsrv.
En cualquier lugar conveniente en el disco, creamos un directorio donde almacenaremos nuestros archivos. Como ejemplo, crearemos el directorio C:wsl.
y instalamos el instalador autónomo de Ubuntu 20.04, descomprimimos el archivo obtenido con un descompresor (por ejemplo, 7-zip). Renombramos el directorio descomprimido con un nombre largo Ubuntu_2004.2020.424.0_x64 a algo más razonable, por ejemplo, Ubuntu-20.04 y lo copiamos al directorio C:wsl (en adelante simplemente wsl).
y descomprimimos en el directorio wsl servidor de sonido multiplataforma PulseAudio v.1.1., también hacemos modificaciones a sus archivos de configuración.
En el archivo wslpulseaudio-1.1etcpulsedefault.pa en la sección Cargar controladores de audio de forma estática editamos la línea:
load-module module-waveout sink_name=output source_name=input record=0
y en la sección Acceso a la red editamos la línea:
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
En el archivo wslpulseaudio-1.1etcpulsedaemon.conf descomentamos y cambiamos la línea
exit-idle-time = -1
Configuramos la subsistema WSL2 de acuerdo con Microsoft. La única observación es que ya hemos descargado la distribución de Ubuntu, y la instalaremos en el siguiente paso. Principalmente, la configuración se reduce a habilitar los componentes adicionales 'Subsistema de Windows para Linux' y 'Plataforma de máquina virtual', y reiniciar para aplicar los cambios en la configuración del ordenador:
Si es necesario y instalamos el paquete de actualizaciones para el núcleo de Linux en WSL2.
Iniciamos el Windows Terminal y elegimos el modo de operación del Símbolo del sistema presionando las teclas Ctrl+Shift+2.
Primero, establecemos el modo de operación WSL2, para ello introducimos el comando:
wsl --set-default-version 2
Pasamos al directorio con el cargador de arranque autónomo Ubuntu 20.04, en mi caso es wslUbuntu-20.04 y ejecutamos el archivo ubuntu2004.exe. Al aparecer la solicitud de nombre de usuario, indico el nombre engineer (puedes introducir cualquier otro nombre), ingreso mi contraseña y confirmo la contraseña ingresada para la cuenta especificada:
Apareció la línea de invitación del terminal, el núcleo de Ubuntu 20.04 está instalado. Verificaremos la configuración del modo WSL2, para ello en el Windows Terminal seleccionamos la pestaña Windows PowerShell e ingresamos el comando:
wsl -l -v
el resultado debe ser el siguiente:
Configuramos el firewall de Microsoft Defender, es decir, lo desactivamos para la red pública:
Configuración de Ubuntu 20.04
En el Windows Terminal nuevamente seleccionamos la pestaña Command Prompt e instalamos actualizaciones para Ubuntu 20.04. Para ello en la línea de comandos ingresamos:
sudo apt update && sudo apt upgrade -y
Instalamos el escritorio KDE Plasma:
sudo apt install kubuntu-desktop -y
la instalación tarda hasta 30 minutos dependiendo del rendimiento del computador y el ancho de banda de la conexión a Internet, al aparecer un aviso del instalador confirmamos OK.
Instalamos la localización y diccionarios en ruso para Ubuntu 20.04. Para ello en la línea de comandos ingresamos:
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 # nota: seleccionamos ru_RU.UTF-8 UTF-8, consulte las capturas de pantalla a continuación.
sudo apt-get install --reinstall locales
Agregamos la última versión del escritorio KDE Plasma:
sudo add-apt-repository ppa:kubuntu-ppa/backports
sudo apt update && sudo apt full-upgrade -y
Agregamos nuestro conjunto de aplicaciones de consola, por ejemplo mc y neofetch:
sudo apt install mc neofetch -y
Verificamos lo que obtenemos, ingresamos en la línea de comandos neofetch, consulte la captura de pantalla:
Editamos el archivo de configuración de WSL /etc/wsl.conf:
sudo nano /etc/wsl.conf
en la ventana vacía del editor de texto copiamos el texto:
[automount]
enabled = true
root = /mnt
options = "metadata,umask=22,fmask=11"
mountFsTab = true
[network]
generateHosts = true
generateResolvConf = true
[interop]
enabled = true
appendWindowsPath = true
guardamos los cambios (Ctrl+O), confirmamos la operación y salimos del editor de texto (Ctrl+X).
Exportamos la imagen de Ubuntu-20.04 configurada en el directorio que hemos creado wsl. Para ello en el Windows Terminal nuevamente seleccionamos la pestaña Windows PowerShell e ingresamos el comando:
wsl --export Ubuntu-20.04 c:wslUbuntu-plasma-desktop
la imagen creada nos ayudará a automatizar las operaciones de inicio/reinstalación de Ubuntu 20.04 configurado, y si es necesario permitirá trasladarlo fácilmente a otro computador.
Preparación de archivos bat y accesos directos en el escritorio de Windows
Con el editor Notepad++ creamos archivos bat (obligatoriamente en codificación OEM-866 para la correcta visualización de caracteres cirílicos):
Archivo Install-Ubuntu-20.04-plasma-desktop.bat — está destinado a automatizar la instalación inicial de la imagen creada de Ubuntu 20.04 en una computadora con el subsistema WSL2 ya configurado y un servidor X. Si el nombre de usuario y la contraseña son diferentes a los indicados en el ejemplo, se deben realizar los cambios correspondientes en este archivo bat:
@echo off
wsl --set-default-version 2
cls
echo Espere a que finalice la instalación de la distribución Ubuntu-20.04...
wsl --import Ubuntu-20.04 c:wsl c:wslUbuntu-plasma-desktop
wsl -s Ubuntu-20.04
cls
echo ¡La distribución Ubuntu-20.04 se ha instalado correctamente!
echo No olvide cambiar la cuenta predeterminada «root» por una cuenta de usuario existente,
echo o usar la cuenta preinstalada «engineer», contraseña: «password».
pause
Archivo Reinstall-Ubuntu-20.04-plasma-desktop.bat — está destinado a reinstalar la imagen preparada de Ubuntu 20.04 en la computadora.
@echo off
wsl --unregister Ubuntu-20.04
wsl --set-default-version 2
cls
echo Espere a que finalice la reinstalación de la distribución Ubuntu-20.04...
wsl --import Ubuntu-20.04 c:wsl c:wslUbuntu-plasma-desktop
wsl -s Ubuntu-20.04
cls
echo ¡La distribución Ubuntu-20.04 se ha reinstalado correctamente!
pause
Archivo Set-default-user.bat — para establecer el usuario «predeterminado».
@echo off
set /p answer=Ingrese la cuenta existente en Ubuntu (engineer):
c:wslUbuntu-20.04ubuntu2004.exe config --default-user %answer%
cls
echo ¡La cuenta de usuario %answer% en Ubuntu-20.04 se ha establecido como predeterminada!
pause
Archivo Start-Ubuntu-20.04-plasma-desktop.bat — el propio lanzamiento del entorno de escritorio KDE Plasma.
@echo off
echo ===================================== ¡Atención! ============================================
echo Para el correcto funcionamiento de la GUI de Ubuntu 20.04 en WSL2 es necesario utilizar un servidor X.
echo Nota: en caso de utilizar VcXsrv Windows X Server, es necesario descomentar
echo las líneas en el archivo Start-Ubuntu-20.04-plasma-desktop.bat que contienen "config.xlaunch" y
echo "vcxsrv.exe", y comentar todas las líneas que contienen "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
Archivo Start-Ubuntu-20.04-terminal.bat — lanzamiento de la terminal gráfica sin el entorno de escritorio KDE Plasma.
@echo off
echo ===================================== ¡Atención! ============================================
echo Para un funcionamiento correcto de la GUI de Ubuntu 20.04 en WSL2 es necesario usar un X Server.
echo Nota: si usas VcXsrv Windows X Server, debes descomentar
echo las líneas en el archivo Start-Ubuntu-20.04-plasma-desktop.bat que contienen "config.xlaunch" y
echo "vcxsrv.exe", y comentar todas las líneas que contienen "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
También para facilitar su uso, en el directorio wsl preparamos accesos directos que apuntan a los archivos bat correspondientes. Después, el contenido del directorio wsl se ve de la siguiente manera:
Iniciar el escritorio de KDE Plasma
Verificamos que todas las acciones preparatorias se hayan realizado, intentamos iniciar el acceso directo Plasma-desktop. Aparece un aviso de contraseña, introducimos la contraseña de la cuenta y… la ventana se cierra. La primera vez es normal. Intentamos de nuevo — y vemos la familiar barra de tareas de KDE Plasma. Personalizamos la apariencia de la barra de tareas, por conveniencia trasladamos la barra a la parte derecha de la pantalla y la centramos. Verificamos la configuración de localización, si es necesario añadimos el idioma ruso:
Si es necesario, colocamos accesos directos para las aplicaciones de linux instaladas en la barra de tareas de KDE Plasma.
Si Ubuntu 20.04 requiere cerrar la sesión del usuario para aplicar cambios en la configuración, o necesitas reiniciar el sistema operativo, ingresa el comando en Windows Terminal:
wsl -d Ubuntu20.04 --shutdown
Con el acceso directo Plasma-desktop o Konsole se puede iniciar la GUI de KDE Plasma de Ubuntu 20.04. Por ejemplo, instalemos usando Konsole el editor gráfico GIMP:
Después de completar la instalación, ejecutamos desde Konsole el editor gráfico GIMP:
GIMP funciona, que es lo que se quería comprobar.
Así es como funcionan varias aplicaciones de linux en KDE Plasma en WSL2:
la barra de tareas configurada de KDE Plasma se encuentra en la parte derecha de la pantalla, y el video se reproduce con sonido en la ventana de Firefox.
Si es necesario, se puede configurar el acceso a Ubuntu20.04 a través de SSH y RDP, para ello es necesario instalar los servicios correspondientes con el comando:
sudo apt install ssh xrdp -y
nota: para habilitar el acceso por contraseña, SSH es necesario editar el archivo /etc/ssh/sshd_config, a saber, el parámetro PasswordAuthentication no debe establecerse en el valor PasswordAuthentication yes, guarda los cambios y reinicia Ubuntu 20.04.
Cada vez que se inicia Ubuntu 20.04 se cambia la dirección IP interna, antes de configurar el acceso remoto es necesario verificar la dirección IP actual con el comando ip a:
Por lo tanto, esta dirección IP debe incluirse en la configuración de las sesiones SSH y RDP antes de iniciar.
Así es como se ve el acceso remoto a través de SSH con MobaXterm:
Y así es como se ve el acceso remoto a través de RDP:
Uso del servidor X vcxsrv en lugar de x410
Iniciamos y configuramos vcxsrv, estableciendo cuidadosamente las casillas correspondientes:




Guardamos la configuración establecida en el directorio wslvcxsrv con el nombre estándar config.xlaunch.
Editamos los archivos bat Start-Ubuntu-20.04-plasma-desktop.bat y Start-Ubuntu-20.04-terminal.bat de acuerdo con las instrucciones que contienen.
Iniciamos el acceso directo Plasma-desktop, y esto es lo que obtenemos:
El escritorio KDE Plasma cubre completamente el escritorio de Windows, para alternar entre las ventanas de aplicaciones linux y windows utilizamos la conocida combinación de teclas Alt+Tab, lo que no es del todo conveniente.
Además, se descubrió una característica desagradable del servidor X vcxsrv – se ‘cierra’ al iniciar algunas aplicaciones, en particular GIMP o LibreOffice Writer. Puede que debamos esperar a que los desarrolladores solucionen los ‘bugs’ observados, pero no es seguro… Así que para obtener resultados aceptables es mejor usar el X Server Microsoft x410.
Conclusión
Sin embargo, hay que reconocer que la compañía Microsoft, el producto WSL2 es bastante funcional, y a mi inexperto parecer — muy exitoso. Y hasta donde sé, los desarrolladores continúan mejorándolo intensamente, y es posible que dentro de un año o dos, este subsistema se presente en toda su plenitud funcional.
Fuente: habr.com
