Cómo solucionar el problema de WSL2 que ignora los comandos de arranque de wsl.conf

Así que añadiste un comando de arranque a wsl.conf. Guardaste el archivo, reiniciaste la terminal y esperabas que la configuración de red funcionara. Pero no, WSL actúa como si ese archivo no existiera y tus cambios no surten efecto. Es bastante frustrante porque parece que lo has hecho todo bien. Créeme, no eres el único que se siente así.¿Lo raro? WSL puede ser muy astuto al leer las configuraciones, y el paso de «reiniciar» no siempre apaga todo correctamente. A veces se queda en segundo plano, ejecutando la configuración anterior. Por eso, incluso después de reiniciar, sigues teniendo los mismos problemas. Así que, si tus comandos de arranque no funcionan, esto es lo que podría estar pasando y cómo solucionarlo. Asegúrate de editar los archivos correctos y de que WSL esté completamente apagado antes de volver a probar.

Cómo solucionar el problema de que los comandos de arranque y la configuración de red de WSL no se apliquen.

¿Por qué sucede esto?

Aquí está el problema: WSL2 tiene dos archivos de configuración diferentes, y no hacen lo mismo. Uno es wsl.conf, que se encuentra dentro de tu distribución de Linux, normalmente en /etc/wsl.conf. El otro es .wslconfig, que se encuentra en tu carpeta de usuario de Windows, como C:\Users\YourName\.wslconfig. Si por casualidad pones una configuración en el archivo incorrecto, WSL simplemente la omite silenciosamente, no advierte ni muestra ningún error. Porque, claro, Windows tiene que hacerlo deliberadamente confuso. Además, WSL sigue ejecutándose en segundo plano incluso después de que cierres la terminal, así que un «reinicio» no es realmente un reinicio. La sesión anterior simplemente permanece, ignorando tu nueva configuración. Además, los comandos de arranque se ejecutan muy pronto, a veces antes de que la red esté lista, así que si tu comando se ejecuta demasiado pronto, no hace nada. No estoy seguro de por qué, pero simplemente sucede.

Solución 1: Confirma que estás editando los archivos de configuración correctos.

Este es el error más común. La gente coloca sus comandos de arranque o parámetros de red en wsl.conf cuando deberían estar en .wslconfig, o viceversa. Así es como puedes comprobarlo:

  • Abre tu terminal de Linux.
  • Ejecuta esto cat /etc/wsl.conf. Esto imprime el contenido de ese archivo, para que puedas comprobar si tu configuración está ahí.
  • Si ves comandos o indicadores de arranquegenerateResolvConf como, están en el lugar correcto. De lo contrario, muévelos.
  • Pulsa Windows + R, escribe %UserProfile% y pulsa Intro; esto abrirá la carpeta de usuario de Windows.
  • Busca allí el archivo.wslconfig. Ahí es donde se encuentran las configuraciones de red y recursos (como memory, swap, networkingMode).

Si la configuración se encuentra en el archivo incorrecto, simplemente cópiela y péguela en el archivo correcto. Esto soluciona la mayoría de los fallos silenciosos.

Solución 2: Apague correctamente WSL antes de probar los cambios.

El siguiente punto es crucial: WSL sigue ejecutándose en segundo plano después de cerrar la ventana del terminal. Por lo tanto, si simplemente la vuelves a abrir y esperas que se apliquen los cambios, no tiene mucho sentido. La solución es cerrar WSL por completo.

  • Cierra todas las ventanas de la terminal de Linux.
  • Abre PowerShell. No te limites a reiniciar la terminal, hazlo desde PowerShell.
  • Escriba: wsl --shutdowny pulse Enter.
  • Espera unos 8 segundos ; la propia documentación de Microsoft recomienda esta pausa. Porque, por alguna razón, WSL necesita ese tiempo para apagarse por completo.

Esto puede sonar extraño, pero es necesario. A veces, con solo hacer esto se eliminan los ajustes antiguos que quedan. Repite el proceso y comprueba si los cambios se guardan al volver a abrir tu distribución.

Solución 3: Asegúrese de que WSL esté actualizado para admitir comandos de arranque.

La función de comandos [boot] no es antigua, pero requiere una versión específica. Si tu versión de WSL está desactualizada, simplemente omite esa sección sin avisarte.

  • Abra PowerShell.
  • Ejecutar: wsl --version. Si muestra algo inferior a 0.67.6, estás desactualizado.
  • Si recibe un error, es decir, si no reconoce el comando, significa que está utilizando una versión antigua e integrada de WSL que no es compatible con esta función.

Para actualizar, ejecute: wsl --update. Después, vuelva a apagar ( wsl --shutdown), espere 8 segundos y luego reinicie su distribución. En algunas configuraciones, esto realmente acelera el proceso.

Solución 4: Evitar que WSL sobrescriba la configuración de DNS.

A veces, los comandos de arranque se ejecutan correctamente, pero se sobrescriben porque WSL se reconstruye /etc/resolv.confcada vez que se inicia. Ese archivo generado automáticamente sobrescribe cualquier configuración DNS manual que hayas introducido.

  • En tu terminal de Linux, ejecuta: sudo nano /etc/wsl.conf.
  • Añade estas líneas al final:
[network] generateResolvConf = false
  • Guarda con Ctrl + O, pulsa Enter, y luego sal con Ctrl + X.
  • De vuelta en PowerShell, ejecuta: wsl --shutdown, y luego espera 8 segundos.
  • Elimine el generado automáticamente /etc/resolv.confcon: sudo rm /etc/resolv.conf.
  • Crea un nuevo archivo tiny resolv.confcon tu servidor DNS, por ejemplo, nameserver 8.8.8.8. Guárdalo como de costumbre.
  • Esto le indica a WSL que no haga /etc/resolv.confnada, para que su DNS personalizado permanezca activo.

    Solución 5: Compruebe su archivo wsl.conf en busca de errores de sintaxis silenciosos.

    Wsl.conf es extremadamente quisquilloso. Si cometes errores de sintaxis, faltan paréntesis o hay comandos duplicados, omite silenciosamente tu configuración.

    • Asegúrese de que el encabezado de la sección esté exactamente [boot]en su propia línea, entre corchetes.
    • Si tienes varias command=líneas, solo cuenta la última. Encadena comandos con &&en su lugar.
    • Recuerda: los comandos de arranque se ejecutan como root a través de /bin/sh, por lo que algunos trucos exclusivos de bash podrían fallar silenciosamente.
    • No pongas los comandos entre comillas; eso puede causar problemas.

    Después de corregir los problemas de sintaxis, ejecute: wsl --shutdown, espere 8 segundos y vuelva a probar.

    Solución 6: Utilice un servicio systemd si tiene systemd habilitado.

    Si habilitaste systemd en tu archivo wsl.conf (la systemd=truelínea correspondiente), entonces tus comandos de arranque se ejecutarán antes de que la red esté activa. El problema es que podrían fallar silenciosamente porque la red aún no está lista.

    ¿La solución? Mueva su comando a un servicio systemd que espere a que la red esté disponible:

    • En tu terminal de Linux, crea un nuevo archivo de servicio:
    sudo nano /etc/systemd/system/mynetwork.service
  • Pega esto, personalizándolo ExecStartcon tu comando real:
  • [Unit] Description=My network setup After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/path/to/your/command [Install] WantedBy=multi-user.target
  • Guarda con Ctrl + O, luego Enter, sal con Ctrl + X.
  • Habilita tu servicio:sudo systemctl enable mynetwork.service
  • Cuando ejecute wsl --shutdowny vuelva a abrir su sistema Linux, su comando esperará hasta que la red esté realmente lista.

    Consejos profesionales a tener en cuenta:

    • Mantén tus archivos de configuración separados: wsl.conf para Linux y.wslconfig para Windows. Esto evita mucha confusión.
    • Ejecútalo siempre wsl --shutdowndespués de cualquier cambio de configuración y espera unos 8 segundos a que se detenga por completo antes de reiniciarlo.
    • Ejecútalo wsl --updatecada dos meses; si usas una versión antigua, pueden producirse fallos silenciosos.
    • Prueba primero tus comandos de arranque con algo visible, como la creación de un archivo, para comprobar si se ejecutan correctamente antes de depender de la sincronización o de la configuración de red.

    La gente también pregunta

    ¿Por qué no se lee mi archivo wsl.conf?

    Principalmente porque WSL se ejecuta en segundo plano, por lo que los cambios no surten efecto hasta que lo cierres correctamente. Ejecútalo wsl --shutdowndesde PowerShell, espera 8 segundos y vuelve a abrirlo. Asegúrate también de que el archivo se encuentre /etc/wsl.confdentro de tu distribución, no en otro lugar.

    ¿Cuál es la diferencia entre wsl.conf y.wslconfig?

    Dos archivos distintos, dos funciones distintas.wsl.conf reside en cada distribución de Linux y gestiona aspectos como los comandos de arranque, DNS y puntos de montaje..wslconfig se encuentra en tu perfil de usuario de Windows y controla aspectos como la memoria, el modo de red y el archivo de intercambio. Asegúrate de editar el archivo correcto, o WSL ignorará tu configuración personalizada.

    ¿Necesito reiniciar Windows después de realizar cambios en la configuración?

    No necesariamente. Con wsl --shutdownesperar unos 8 segundos suele ser suficiente. Es más rápido que reiniciar el sistema por completo, pero sí, a veces hay que hacerlo para estar seguros.

    Esperemos que esto ayude a que los comandos de arranque se ejecuten correctamente y la configuración de red funcione como debería. Es un poco engorroso, pero una vez que todo está en su sitio y WSL se apaga por completo, la configuración suele mantenerse.¡Mucha suerte y que tu red sea siempre estable!