El Subsistema de Windows para Linux (WSL) es una característica del sistema operativo Windows que permite ejecutar un sistema de archivos Linux, junto con herramientas de línea de comandos y aplicaciones de GUI de Linux, directamente en Windows, junto con el escritorio y las aplicaciones tradicionales de Windows.
Consulta la página Acerca de para obtener más detalles.
Se trata principalmente de una herramienta para desarrolladores, especialmente desarrolladores web, aquellos que trabajan en proyectos de código abierto o implementaciones en entornos de servidor Linux. WSL es para cualquier persona que quiera usar Bash, herramientas comunes de Linux (sed
, awk
, etc.) y marcos de trabajo primero en Linux (Ruby, Python, etc.), pero también disfruta con herramientas de productividad de Windows.
WSL le permite ejecutar Linux en un shell de Bash con su elección de distribución (Ubuntu, Debian, OpenSUSE, Kali, Alpine, etc.). Con Bash, puedes ejecutar aplicaciones y herramientas de Linux de línea de comandos. Por ejemplo, escribe lsb_release -a
y presiona Entrar para ver los detalles de la distribución de Linux que se está ejecutando actualmente:
También puede acceder al sistema de archivos del equipo local desde el shell de Bash de Linux; encontrará las unidades locales montadas en la /mnt
carpeta . Por ejemplo, la unidad C:
se monta en /mnt/c
:
WSL va destinado a personas desarrolladoras y está pensado para usarse como parte de un bucle de desarrollo interno. Supongamos que Sam crea una canalización de CI/CD (integración & entrega continuas) y quiere probarla primero en una máquina local (portátil) antes de implementarla en la nube. Sam puede habilitar WSL (& WSL 2 para mejorar la velocidad y el rendimiento) y, después, usar una instancia original de Ubuntu Linux (en el portátil) con el comando y la herramienta de Bash que prefiera. Después de verificar localmente la canalización del desarrollo, Sam puede insertar esa canalización de CI/CD en la nube. Para ello, debe convertirla en un contenedor de Docker e insertar dicho contenedor en una instancia en la nube, que se ejecute en una máquina virtual Ubuntu preparada para producción.
Bash es un conocido shell basado en texto, que cuenta con un lenguaje de comandos. Es el shell predeterminado incluido en Ubuntu y otras distribuciones de Linux. Los usuarios pueden escribir comandos en un shell para ejecutar scripts o ejecutar comandos y herramientas para realizar varias tareas.
Consulte este artículo en el blog de la línea de comandos de Windows: Una profundización en cómo WSL permite que Windows acceda a archivos de Linux , que se detallan en detalle sobre la tecnología subyacente.
WSL necesita menos recursos (CPU, memoria y almacenamiento) que una máquina virtual completa. Asimismo, WSL también te permite ejecutar aplicaciones y herramientas de línea de comandos de Linux junto con la línea de comandos de Windows, aplicaciones de escritorio y de Store, así como la posibilidad de acceder a los archivos de Windows desde Linux. Esto te permite usar las aplicaciones de Windows y las herramientas de línea de comandos de Linux en el mismo conjunto de archivos, si así lo deseas.
Algunas herramientas multiplataforma se crearon suponiendo que el entorno en el que se ejecutan se comporta como Linux. Por ejemplo, algunas herramientas suponen que pueden obtener acceso a rutas de acceso de archivos muy largas o que existen archivos o carpetas específicos. Esto suele provocar problemas en Windows, que a menudo se comporta de forma diferente de Linux.
Muchos lenguajes como Ruby y Node.js a menudo se porscriben y ejecutan excelentes en Windows. Sin embargo, no todos los propietarios de bibliotecas Ruby Gem o node/NPM portan sus bibliotecas para que admitan Windows, y muchas tienen dependencias específicas de Linux. Esto a menudo puede dar como resultado que los sistemas que se crearon con herramientas y bibliotecas de este tipo sufran errores de compilación y, a veces, del entorno de ejecución o tengan comportamientos no deseados en Windows.
Estos son solo algunos de los problemas que han provocado que muchas personas pidan a Microsoft que mejore las herramientas de línea de comandos de Windows, lo que nos llevó a asociarnos con Canonical para permitir que las herramientas de línea de comandos nativas de Bash y Linux se ejecuten en Windows.
Al trabajar con proyectos de OSS, existen numerosos escenarios en los que es enormemente útil usar Bash desde un símbolo del sistema de PowerShell. La compatibilidad con Bash es complementaria y fortalece el valor de la línea de comandos en Windows, permitiendo que PowerShell y la comunidad de PowerShell aprovechen otras tecnologías populares.
Puedes leer más en el blog del equipo de PowerShell: Bash para Windows: por qué es impresionante y qué significa para PowerShell.
WSL admite CPU x64 y Arm.
Los puntos de montaje para unidades de disco duro en el equipo local se crean automáticamente y proporcionan un acceso fácil al sistema de archivos de Windows.
/mnt/<letra> de unidad/
Un ejemplo de uso sería cd /mnt/c
para acceder a c:\
¿Qué debo hacer para instalar el Administrador de credenciales de GIT? (¿Cómo puedo usar mis permisos de GIT de Windows en WSL?)
Consulte el tutorial Introducción al uso de Git en Subsistema de Windows para Linux, que incluye una sección sobre la configuración del Administrador de credenciales de Git y el almacenamiento de tokens de autenticación en el Administrador de credenciales de Windows.
Uno de los beneficios de WSL es que puedes acceder a tus archivos mediante aplicaciones o herramientas de Windows y Linux.
WSL monta las unidades fijas de la máquina que están en la carpeta /mnt/<drive>
en tus distribuciones de Linux. Por ejemplo, la unidad C:
se monta en /mnt/c/
Si usas tus unidades montadas, puedes editar el código (por ejemplo, C:\dev\myproj\
usando Visual Studio / o VS Code) y compilar o probar ese código en Linux accediendo a los mismos archivos a través de /mnt/c/dev/myproj
.
Obtenga más información en el artículo Trabajar en sistemas de archivos Windows y Linux .
Los archivos de la raíz de Linux (es decir,
/
) se controlan mediante WSL que se alinea con el comportamiento de Linux, incluidos, entre otros:- Archivos que contienen caracteres de nombre de archivo de Windows que no son válidos
- Vínculos simbólicos creados para usuarios que no son administradores
- La opción de cambiar atributos de archivo a través de chmod y chown
- Distinción de mayúsculas y minúsculas en archivos o carpetas
Los archivos de las unidades montadas se controlan mediante Windows y tienen los siguientes comportamientos:
- Compatibilidad para la distinción de mayúsculas y minúsculas
- Todos los permisos se establecen para reflejar mejor los permisos de Windows
Para quitar una distribución de WSL y eliminar todos los datos asociados a esa distribución de Linux, ejecute wsl --unregister <distroName>
donde <distroName>
es el nombre de la distribución de Linux, que se puede ver en la lista del wsl -l
comando.
Además, puede desinstalar la aplicación de distribución de Linux en la máquina igual que cualquier otra aplicación de la tienda.
Para más información sobre los comandos wsl, consulte el artículo Comandos básicos para WSL.
OpenSSH se incluye con Windows como una característica opcional. Consulte el documento Instalación de OpenSSH . Los privilegios de administrador en Windows son necesarios para ejecutar OpenSSH en WSL. Para ejecutar un servidor OpenSSH, ejecute la distribución de WSL (es decir, Ubuntu) o Terminal Windows como administrador. Hay varios recursos que abarcan escenarios ssh con WSL. Consulte los artículos de blog de Scott Hanselman: How to SSH into a Windows 10 Machine from Linux OR Windows OR anywhere (Cómo conectarse mediante SSH a WSL2 en Windows 10 desde una máquina externa), THE EASY WAY how to SSH into Bash and WSL2 on Windows 10 from an external machine ( Cómo usar OpenSSH integrado de Windows 10 para CONECTARSE automáticamente a una máquina Linux remota).
La instalación de WSL intentará cambiar automáticamente la configuración regional de Ubuntu para que coincida con la configuración regional de la instalación de Windows. Si no quieres que esto pase, puedes ejecutar este comando para cambiar la configuración regional de Ubuntu una vez finalizada la instalación. Tendrá que volver a iniciar la distribución de WSL para que este cambio surta efecto.
En el ejemplo siguiente se cambia la configuración regional a en-US:
sudo update-locale LANG=en_US.UTF8
Algunos usuarios han informado de problemas con aplicaciones de firewall específicas que bloquean el acceso a Internet en WSL. Los firewalls que dan error son:
- Kaspersky
- AVG
- Avast
- Symantec Endpoint Protection
- F-Secure
En algunos casos, si desactivas el firewall podrás acceder. En otros casos, simplemente tener instalado el firewall parece bloquear el acceso a Internet.
WSL comparte la dirección IP de Windows, ya que se ejecuta en Windows. Así pues, puedes obtener acceso a cualquier puerto en localhost; por ejemplo, si tienes contenido web en el puerto 1234, puedes obtener acceso https://localhost:1234 al explorador de Windows. Para obtener más información, consulte Acceso a aplicaciones de red.
¿Cómo puedo hacer una copia de seguridad de mis distribuciones de WSL o moverlas de una unidad a otra?
La mejor manera de realizar copias de seguridad o mover las distribuciones es a través de los comandos de exportación e importación disponibles en Windows versión 1809 y posteriores. Puedes exportar toda la distribución a un tarball mediante el comando wsl --export
. Después, puede volver a importar esta distribución en WSL mediante el wsl --import
comando , que puede asignar un nombre a una nueva ubicación de unidad para la importación, lo que le permite realizar copias de seguridad y guardar los estados de (o mover) las distribuciones de WSL.
Tenga en cuenta que los servicios de copia de seguridad tradicionales que hacen copia de seguridad de archivos en las carpetas de AppData (como Copias de seguridad de Windows) no dañarán los archivos de Linux.
WSL se ha diseñado y diseñado para usarse con flujos de trabajo de desarrollo de bucles internos. Hay características de diseño en WSL que lo hacen excelente para este propósito, pero puede hacer que sea difícil para escenarios relacionados con la producción en comparación con otros productos. Nuestro objetivo es dejar claro cómo WSL difiere de un entorno de máquina virtual normal, por lo que puede tomar la decisión sobre si se ajusta a sus necesidades empresariales.
Las principales diferencias entre WSL y un entorno de producción tradicional son:
- WSL tiene una máquina virtual de utilidad ligera que se inicia, detiene y administra automáticamente los recursos.
- Si no tiene identificadores de archivo abiertos para los procesos de Windows, la máquina virtual WSL se apagará automáticamente. Esto significa que, si lo usa como servidor web, conéctese mediante SSH para ejecutar el servidor y, a continuación, salir, la máquina virtual podría apagarse porque detecta que los usuarios han terminado de usarlo y limpiarán sus recursos.
- Los usuarios de WSL tienen acceso total a sus instancias de Linux. El usuario puede modificar la duración de la máquina virtual, las distribuciones de WSL registradas, etc..
- WSL proporciona automáticamente acceso a archivos de Windows.
- Las rutas de acceso de Windows se anexan a la ruta de acceso de forma predeterminada, lo que podría provocar un comportamiento inesperado para determinadas aplicaciones Linux en comparación con un entorno de Linux tradicional.
- WSL puede ejecutar ejecutables de Windows desde Linux, lo que también podría dar lugar a un entorno diferente al de una máquina virtual Linux tradicional.
- El kernel de Linux usado por WSL se actualiza automáticamente.
- El acceso a GPU en WSL se produce a través de un
/dev/dxg
dispositivo, que enruta las llamadas de GPU a la GPU de Windows. Esta configuración es diferente de una configuración tradicional de Linux. - Hay otras diferencias más pequeñas en comparación con Linux sin sistema operativo y se espera que surjan más diferencias en el futuro, ya que se prioriza el flujo de trabajo de desarrollo de bucles internos.
Hay varias maneras de realizar esta tarea:
- La manera más sencilla es usar el comando para exportar la
wsl --export --vhd
distribución de WSL a un archivo VHD. Después, puede copiar este archivo en otra máquina e importarlo mediantewsl --import --vhd
. Consulte el documento de comandos para obtener más información. - La implementación anterior requiere mucho espacio en disco. Si no tiene mucho espacio en disco, puede usar técnicas de Linux para mover los archivos:
- Use
tar -czf <tarballName> <directory>
para crear un tarball de los archivos. Después, puede copiar estos archivos específicos en la nueva máquina y ejecutarlostar -xzf <tarballName>
para extraerlos. - También puede exportar una lista de paquetes instalados mediante
apt
un comando como el siguiente:dpkg --get-selections | grep -v deinstall | awk '{print $1}' > package_list.txt
y volver a instalar esos mismos paquetes en otro equipo con un comando comosudo apt install -y $(cat package_list.txt)
después de transferir el archivo.
- Use
WSL 2 está disponible en todas las SKU de escritorio donde WSL está disponible, incluidos Windows 10 Home y Windows 11 Home.
La versión más reciente de WSL usa la arquitectura de Hyper-V para habilitar su virtualización. Esta arquitectura estará disponible en el componente opcional "Plataforma de máquina virtual". Este componente opcional estará disponible en todas las SKU. Pronto podrás ver más detalles sobre esta experiencia cuando se acerque el lanzamiento de WSL 2.
Actualmente no tenemos planes para dejar en desuso WSL 1. Puedes ejecutar distribuciones de WSL 1 y WSL 2 en paralelo, y puedes actualizar y degradar cualquier distribución en cualquier momento. La adición de WSL 2 como una nueva arquitectura presenta una plataforma mejor para que el equipo de WSL entregue características que convierten WSL en un método increíble para ejecutar un entorno de Linux en Windows.
Algunas aplicaciones de terceros, como VMware y VirtualBox, no pueden funcionar cuando Hyper-V está en uso, lo que significa que no podrán ejecutarse mientras WSL 2 esté habilitado. Sin embargo, VirtualBox y VMware han publicado versiones compatibles con Hyper-V y WSL2 recientemente. Puede obtener más información sobre los cambios de VirtualBox aquí y sobre los cambios de VMware aquí. Para solucionar problemas, eche un vistazo a las discusiones de problemas de VirtualBox en el repositorio de WSL en GitHub.
Trabajamos de forma constante en las soluciones para admitir la integración de terceros de Hyper-V. Por ejemplo, exponemos un conjunto de API llamado Hypervisor Platform que los proveedores de virtualización externos pueden usar para hacer que su software sea compatible con Hyper-V. Esto permite que las aplicaciones usen la arquitectura de Hyper-V para su emulación, como Google Android Emulator y VirtualBox 6 y versiones posteriores, que ahora son compatibles con Hyper-V.
Consulte el repositorio de problemas de WSL para obtener más información sobre problemas de WSL 2 con VirtualBox 6.1.
*Si busca una máquina virtual Windows, VMWare, Hyper-V, VirtualBox y Parallels vm downloads están disponibles en el Centro de desarrollo de Windows.
Hemos publicado compatibilidad para acceder a la GPU dentro de las distribuciones de WSL 2. Esto significa que ahora puede usar WSL para escenarios de aprendizaje automático, inteligencia artificial y ciencia de datos más fácilmente cuando hay involucrados conjuntos de macrodatos. Consulte el tutorial Introducción a la compatibilidad con GPU. A partir de ahora, WSL 2 no incluye compatibilidad de serie ni compatibilidad con dispositivos USB. Estamos investigando la mejor manera de agregar estas características. Sin embargo, la compatibilidad con USB ahora está disponible a través del proyecto USBIPD-WIN. Consulte Conexión de dispositivos USB para conocer los pasos necesarios para configurar la compatibilidad con dispositivos USB.
Sí, en general, las aplicaciones de red funcionarán mejor y serán más rápidas con WSL 2, ya que ofrece compatibilidad completa de llamadas del sistema. Sin embargo, la arquitectura de WSL 2 usa componentes de red virtualizados, lo que significa que WSL 2 se comportará de forma similar a una máquina virtual: las distribuciones de WSL 2 tendrán una dirección IP diferente a la máquina host (sistema operativo Windows). Para obtener más información, consulte Acceso a aplicaciones de red con WSL.
Sí. Debes asegurarte de que la máquina virtual tiene habilitada la virtualización anidada. Para habilitarlo en el host de Hyper-V primario, ejecuta el siguiente comando en una ventana de PowerShell con privilegios de administrador:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Asegúrate de reemplazar "<VMName>" por el nombre de tu máquina virtual.
WSL 2 admite el mismo archivo wsl.conf que se usa en WSL 1. Esto significa que todas las opciones de configuración que hayas establecido en una distribución de WSL 1, como el montaje automático de unidades de Windows, la habilitación o deshabilitación de la interoperabilidad, el cambio del directorio donde se montarán las unidades de Windows, etc., funcionarán en WSL 2. Puede obtener más información sobre las opciones de configuración de WSL en la página Administración de distribución . Obtenga más información sobre la compatibilidad con el montaje de unidades, discos, dispositivos o discos duros virtuales (VHD) en el artículo Montaje de un disco Linux en WSL 2 .
Los problemas del repositorio de productos de WSL le permiten:
- Buscar problemas existentes para ver si hay algún asociado que experimenta el mismo problema. Tenga en cuenta que, en la barra de búsqueda, puede quitar "is:open" para incluir los problemas que ya se han resuelto en la búsqueda. Considere la posibilidad de comentar o indicar que le gusta algún problema abierto para el que le gustaría expresar interés de seguir como una prioridad.
-
Presentación de un nuevo problema. Si ha experimentado un problema con WSL y parece que no existe, puede seleccionar el botón verde Nuevo problema y, a continuación, elegir WSL - Informe de errores. Deberá incluir un título para el problema, el número de compilación de Windows (ejecute
cmd.exe /c ver
para ver el número de compilación actual), tanto si ejecuta WSL 1 o 2, el número de versión actual del kernel de Linux (ejecutewsl.exe --status
ocat /proc/version
), el número de versión de la distribución (ejecutelsb_release -r
), cualquier otra versión de software implicada, los pasos de reproducción, el comportamiento esperado, el comportamiento real y los registros de diagnóstico si están disponibles y son adecuados. Para más información, consulte Contribución a WSL. - Para presentar una solicitud de característica, seleccione el botón verde Nuevo problema y, a continuación, seleccione Solicitud de característica. Tendrá que atender algunas preguntas de descripción de la solicitud.
También puede:
- Presentar un problema de documentación mediante el repositorio de documentos de WSL. Para contribuir a los documentos de WSL, consulte la guía para colaboradores de Microsoft Docs.
- Presentar un problema de Terminal Windows mediante el repositorio de productos de Terminal Windows si el problema está más relacionado con Terminal Windows, la consola de Windows o la interfaz de usuario de la línea de comandos.
Si quieres mantenerte al día con las últimas noticias de WSL, puedes hacerlo con:
- Nuestro blog del equipo de línea de comandos.
- Twitter. Siga @craigaloewen en Twitter para obtener información sobre noticias, actualizaciones, etc.