Resumen/X para WSL
Importar y usar X Linux en WSL
Esta guia explica como convertir el tarball generado por build-rootfs.sh en
una distribucion X Linux funcional bajo Windows Subsystem for Linux (WSL).
X Linux para WSL es headless: sin GUI, sin Hyprland/compositor. Usa systemd y
se maneja desde la terminal.
La via mas rapida es el importador PowerShell incluido install.ps1; los
comandos manuales se listan junto a el. Las referencias oficiales son los
comandos basicos de WSL (https://learn.microsoft.com/en-us/windows/wsl/basic-commands)
y la guia de configuracion (https://learn.microsoft.com/en-us/windows/wsl/wsl-config).
Requisitos
-
Windows 11 (o Windows Server 2022) con WSL habilitado. El soporte de
[boot] systemdque activa el rootfs necesita Windows 11/Server 2022 y la build de WSL de Microsoft Store. En Windows 10 el rootfs se importa y arranca, pero systemd no esta disponible. -
WSL desde Microsoft Store (no la version integrada). Instala WSL sin una distribucion incluida desde una consola de PowerShell elevada:
wsl --install --no-distributionComprueba la version y actualiza si hace falta:
wsl --version wsl --updateSi
wsl --versionno se reconoce, estas en la version integrada; instala la build de Store (https://apps.microsoft.com/detail/9P9TQF7MRM4R). -
El tarball del rootfs de este repositorio. Generalo en un host Arch con
sudo ./build-rootfs.sh, o descarga unout/x-wsl-rootfs.tar.gzpublicado.
1. Generar el rootfs
En un host Arch Linux (o basado en Arch), desde este repositorio:
sudo ./build-rootfs.sh
Esto produce out/x-wsl-rootfs.tar.gz (mas un fichero de checksums .sha256).
Puedes ver los comandos exactos sin tocar el sistema primero:
X_DRY=1 ./build-rootfs.sh
Copia el tarball a una ruta legible por Windows, por ejemplo
C:\Users\<tu-usuario>\Downloads\x-wsl-rootfs.tar.gz.
2. Importar la distribucion (recomendado)
Abre PowerShell en este repositorio y ejecuta el importador. Comprueba WSL
(build de Store), importa el rootfs como WSL 2, convierte x en la
distribucion por defecto e imprime la guia de .wslconfig del host y los
siguientes pasos:
.\install.ps1 -Rootfs .\out\x-wsl-rootfs.tar.gz
Si PowerShell bloquea la ejecucion de scripts en tu maquina, lanzalo con un bypass explicito:
powershell -ExecutionPolicy Bypass -File .\install.ps1 -Rootfs .\out\x-wsl-rootfs.tar.gz
Opciones: -Name (default x), -InstallDir (default una ruta por usuario
bajo %LOCALAPPDATA%), -NoDefault (saltar wsl --set-default) y
-CreateWslConfig (crear un %UserProfile%\.wslconfig inicial si no existe;
nunca sobrescribe uno existente). Ejecuta Get-Help .\install.ps1 para mas
detalle.
Alternativa manual
cd $HOME\Downloads
wsl --import x C:\WSL\x .\x-wsl-rootfs.tar.gz --version 2
wsl --set-default x
-
--version 2fuerza WSL 2 sin depender del default de la maquina. -
<UbicacionInstalacion>(C:\WSL\x) es la carpeta de Windows que albergara el VHD de la distribucion; usa cualquier carpeta, idealmente fuera del directorio del tarball. -
Comprueba que la distribucion esta registrada:
wsl --list --verbose
3. Arrancar la distribucion
wsl -d x
La primera sesion se abre como root: las distribuciones importadas arrancan
siempre como root hasta que se configura un usuario por defecto. El
/etc/wsl.conf incluido ya activa systemd; comprueba que esta corriendo:
ps -p 1 -o comm=
# imprime: systemd
systemctl is-system-running
# imprime: running (o degrading hasta configurar los servicios de usuario)
Si systemd no es el PID 1, reinicia WSL tras revisar /etc/wsl.conf:
wsl --shutdown
WSL tarda unos 8 segundos tras cerrar la ultima instancia en recoger un cambio
de configuracion; wsl --shutdown fuerza el reinicio.
4. Configurar tu usuario
El aprovisionamiento de usuario lo gestiona xlnux/wsl-scripts. Clonalo donde puedan leerlo tanto root como el futuro usuario y ejecuta el instalador guiado (dos partes):
git clone https://github.com/xlnux/wsl-scripts /opt/x-wsl-scripts
cd /opt/x-wsl-scripts
./install.sh # Parte 1 (sistema), como root
La fase de sistema pregunta por locale, keymap, zona horaria, usuario, shell y
politica de sudo, y luego fija el usuario creado como usuario por defecto de
las nuevas sesiones en /etc/wsl.conf (las distribuciones importadas no tienen
launcher de Windows, asi que /etc/wsl.conf es la unica via soportada para
cambiar el usuario por defecto). Al terminar, sal de la sesion y relanza para
que WSL aplique el nuevo default:
wsl --terminate x
wsl -d x
La nueva sesion se abre con tu usuario. Ejecuta el instalador una segunda vez para la fase de usuario (shell, entorno, carpetas):
cd /opt/x-wsl-scripts
./install.sh # Parte 2 (usuario), como tu usuario
Si prefieres no usar el instalador, un usuario manual se crea asi, desde dentro de la distribucion (como root):
useradd -m -G wheel -s /usr/bin/zsh <usuario>
passwd <usuario>
Arch Linux no otorga sudo al grupo wheel por defecto. Descomenta la linea de
wheel con EDITOR=nano visudo (la linea %wheel ALL=(ALL:ALL) ALL) o anade un
drop-in:
printf '%%wheel ALL=(ALL:ALL) ALL\n' > /etc/sudoers.d/10-wheel
chmod 440 /etc/sudoers.d/10-wheel
Despues, haz que ese usuario sea el de las nuevas sesiones de WSL editando
/etc/wsl.conf y fijando la seccion [user]:
[user]
default=<usuario>
Aplicalo reiniciando la instancia:
wsl --terminate x
wsl -d x
Tu siguiente sesion se abrira como <usuario>. Las plantillas wsl.conf y
.wslconfig en templates/ documentan todas las opciones usadas aqui.
5. Opcional: ajustes WSL 2 en el host
Crea %UserProfile%\.wslconfig (es decir, C:\Users\<tu-usuario>\.wslconfig)
a partir de templates/.wslconfig y adaptalo a tu hardware. Limita la memoria
y los procesadores de la VM, mantiene WSLg (soporte de GUI) desactivado porque
X Linux para WSL no tiene GUI, y habilita autoMemoryReclaim y sparseVhd
para Windows 11. No existe un .wslconfig por defecto; el importador solo
imprime guia y nunca sobrescribe uno existente (usa install.ps1 -CreateWslConfig para crear uno inicial si no hay). Windows tambien ofrece una
aplicacion "WSL Settings" que edita los mismos ajustes. Tras editar, ejecuta
wsl --shutdown.
Solucion de problemas
wsl --importfalla: verifica el checksum del tarball primero (sha256sum), asegurate de que la carpeta destino no contenga ya una distribucion registrada con el mismo nombre (wsl --unregister xelimina una) y ejecuta el comando desde una consola elevada si Windows bloquea la operacion de ficheros.- La instancia arranca pero falta
systemd: confirma quewsl --versionfunciona (build de Store), que el host es Windows 11/Server 2022, que/etc/wsl.confcontiene[boot] systemd=truey reinicia conwsl --shutdown. - Errores de usuario por defecto: WSL se niega a iniciar una sesion con un
usuario inexistente. Manten
default=rooto apuntalo a un usuario que hayas creado. pacmanse queja de las claves tras importar: ejecutapacman-key --init && pacman-key --populate archlinuxcomo root dentro de la distribucion.