Configurar el inicio automático de xrdp en la máquina virtual Linux WSL2
Activar `systemd` es la forma más estándar y limpia de hacer las cosas de forma nativa en Linux.
Renderizando...
Porque WSL 2 no utiliza el proceso de inicialización tradicional `systemd` (por defecto), los servicios en segundo plano de Linux no se ejecutan automáticamente al iniciar el sistema como lo harían en una máquina física real.
Para **iniciar `xrdp` automáticamente** cada vez que inicies WSL o abras una terminal, existen varias soluciones muy elegantes y prácticas:
### Opción uno: Habilitar `systemd` dentro de WSL (recomendado oficialmente por Microsoft, la más conveniente)
En las versiones más recientes de WSL 2 (Windows 10/11 última versión), Microsoft ya ha añadido soporte nativo para `systemd`. Una vez habilitado, los servicios en segundo plano de Linux (incluyendo `xrdp`, Docker, etc.) **se ejecutarán automáticamente al iniciar WSL** como en un sistema Linux normal, sin necesidad de scripts adicionales.
#### Pasos a seguir:
1. **Modificar el archivo de configuración de WSL**: En la terminal de Ubuntu de WSL, ejecuta el siguiente comando para habilitar `systemd`:
Bash
```
sudo bash -c 'cat <<EOF > /etc/wsl.conf
[boot]
systemd=true
EOF'
```
2. **Configurar el servicio xrdp para que se inicie automáticamente al arrancar**: En la terminal de WSL, ejecuta:
Bash
```
sudo systemctl enable xrdp
```
3. **Configurar el inicio sin contraseña (para evitar que xrdp se bloquee por contraseña)**: Dado que `xrdp` requiere permisos de root para iniciarse, para asegurar un inicio fluido en segundo plano, simplemente permite que el usuario actual inicie `xrdp` sin contraseña (después de habilitarlo, systemd lo ejecutará como root durante la inicialización del sistema).
4. **Reiniciar WSL para que los cambios surtan efecto**: En PowerShell de Windows, ejecuta el comando para apagar WSL:
PowerShell
```
wsl --shutdown
```
Luego, vuelve a abrir la terminal de Ubuntu e introduce el siguiente comando para verificar el estado de `xrdp`:
Bash
```
sudo systemctl status xrdp
```
Si muestra **`active (running)`**, ¡la configuración ha sido exitosa! A partir de ahora, cada vez que WSL se inicie, `xrdp` se ejecutará automáticamente en segundo plano, y podrás conectarte en cualquier momento con el escritorio remoto.
### Opción dos: Configurar `sudoers` sin contraseña + inicio automático en `.bashrc` (adecuado para versiones antiguas de WSL)
Si no quieres habilitar `systemd`, o tu versión de WSL es antigua, puedes hacer que el sistema verifique y inicie automáticamente `xrdp` en segundo plano cada vez que abras una terminal de WSL.
#### Pasos a seguir:
1. **Configurar el servicio `xrdp` para que se ejecute sin contraseña**: En la terminal de WSL, introduce el siguiente comando para editar los permisos de sudoers:
Bash
```
sudo visudo
```
Añade la siguiente línea al final del archivo (reemplaza `your_username` con tu nombre de usuario de WSL):
Plaintext
```
your_username ALL=(ALL) NOPASSWD: /usr/sbin/service xrdp *
```
*Pulsa `Ctrl + O` para guardar, `Enter` para confirmar, `Ctrl + X` para salir.*
2. **Añadir el comando de inicio al archivo de configuración del usuario**: Edita el archivo `~/.bashrc`:
Bash
```
nano ~/.bashrc
```
Añade la siguiente lógica al **final** del archivo (su función es: si detecta que `xrdp` no está iniciado, lo inicia silenciosamente):
Bash
```
# Iniciar automáticamente el servicio xrdp
if ! service xrdp status > /dev/null 2>&1; then
sudo service xrdp start > /dev/null 2>&1
fi
```
*Guarda y sal.*
De esta manera, cada vez que inicies una terminal de WSL, el servicio `xrdp` se iniciará automáticamente en segundo plano, sin que necesites escribir manualmente `sudo service xrdp start`.
### Opción tres: Iniciar automáticamente y silenciosamente el servicio de escritorio de WSL al arrancar Windows
Si deseas que el **escritorio remoto de Linux esté directamente disponible tan pronto como Windows se inicie** (sin siquiera tener que abrir una terminal de WSL), puedes crear un script de inicio silencioso en el lado de Windows.
1. Pulsa `Win + R`, escribe `shell:startup` y presiona Enter (esto abrirá la carpeta "Inicio" de Windows).
2. En esa carpeta, crea un nuevo archivo de texto y renómbralo a `start-wsl-xrdp.vbs` (asegúrate de cambiar la extensión a `.vbs`).
3. Haz clic derecho para editar este archivo y escribe el siguiente código:
VBScript
```
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -u root service xrdp start", 0
```
4. Guarda y listo.
**Efecto**: A partir de ahora, cada vez que tu ordenador Windows se inicie y se inicie sesión, el sistema iniciará implícitamente el servicio `xrdp` de WSL en segundo plano con permisos de `root`, sin ninguna ventana emergente. ¡Puedes abrir la "Conexión a Escritorio Remoto" de Windows (`localhost:3390`) en cualquier momento para acceder directamente al escritorio de Linux!
### Resumen y recomendaciones
- **Opción preferida: 【Opción uno】**: Habilitar `systemd` es la forma más estándar y limpia de Linux nativo.
- **Combinar con 【Opción tres】**: Si quieres que esté listo para usar al arrancar, ¡combinarlo con el script de inicio de Windows te dará una experiencia completa!Comentario
Inicia sesión para ver y publicar comentarios
Ir a iniciar sesión