Búsqueda de sitios web

Mover WSL a otra unidad en Windows


El subsistema de Windows para Linux(WSL2) es ampliamente utilizado por desarrolladores, administradores y usuarios comunes para ejecutar diferentes distribuciones de Linux (Ubuntu, Debian, OpenSUSE, Kali Linux, Alpine), herramientas y aplicaciones en Windows sin usar virtualización ni arranque dual. En este artículo, le mostraremos cómo mover los archivos de una instalación de WSL existente a una unidad o computadora diferente.

Cuando instala WSL en Windows, todos los archivos de entorno se guardan en la unidad del sistema C:\. Si la unidad de su sistema no es lo suficientemente grande (por ejemplo, SSD), el tamaño del sistema de archivos WSL puede crecer significativamente y es posible que deba mover WSL a otra unidad o computadora. Puede mover su instalación de WSL de varias maneras.

Primero, obtenga el tamaño actual del sistema de archivos WSL en su disco actual. Enumere las distribuciones WSL instaladas en su computadora:

wsl --list --verbose

En este ejemplo, solo está instalado Ubuntu-20.04. Ejecute el siguiente comando de PowerShell para obtener el nombre de la aplicación UWP con sus distribuciones de Linux:

Get-AppxPackage -Name "*Ubuntu20*" | Select PackageFamilyName

En mi ejemplo, el nombre del paquete UWP es CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc. El sistema de archivos WSL de la imagen de Linux se encuentra en el archivo ext4.vhdx VHD en

%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

Para obtener un tamaño de archivo con PowerShell, ejecute el siguiente comando:


$path= $env:USERPROFILE+ "\AppData\Local\Packages\" + (Get-AppxPackage -Name "*Ubuntu20*").PackageFamilyName + "\LocalState\ext4.vhdx"
Get-ChildItem -Path $path | fl @{Label="SizeGb"; Expression={$_.Length / 1Gb}}

Puede intentar reducir el tamaño del archivo VHD con el cmdlet Optimize-VHD (del módulo Hyper-V PowerShell). A veces es suficiente:

optimize-vhd -Path <PATH_TO_VHD> -Mode full

La ruta al archivo VHD de la distribución WSL se almacena en el parámetro de registro BasePath debajo de la clave de registro.

HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss\{UUID}

Puede detener WSL, mover ext4.vhdx a otra unidad y cambiar la ruta al directorio en el registro. ¡Pero este escenario no se recomienda!

En las compilaciones actuales de Windows 10 y 11, puede migrar su entorno WSL correctamente mediante el procedimiento integrado de exportación e importación.

Ejecute el entorno WSL y verifique el nombre de usuario:

wsl
whoami

En nuestro ejemplo, es sysops.

Cierre todas las aplicaciones que se ejecutan en su entorno Linux y consola WSL:

wsl --shutdown

Para hacer una copia de seguridad (exportar) de su entorno WSL y guardarlo en una unidad E:, ejecute los comandos:

mkdir e:\backup
wsl --export Ubuntu-20.04 e:\backup\ubuntu.tar

Espere hasta que finalice la exportación de WSL (puede llevar mucho tiempo). Aparecerá un archivo TAR con su sistema de archivos WSL ext4 en el directorio de destino.

Luego, puede eliminar los archivos WSL en el disco de origen:

wsl --unregister Ubuntu-20.04

Cree un directorio para su imagen de Linux en una nueva unidad e importe el archivo TAR a WSL con este comando:

mkdir E:\WSL
wsl --import Ubuntu-20.04 E:\WSL\ E:\backup\ubuntu.tar

El inicio de sesión predeterminado en Ubuntu es root. Para cambiarlo a otro nombre de usuario (lo obtuvimos antes), ejecute:

cd $env:USERPROFILE\AppData\Local\Microsoft\WindowsApps
.\ubunt4.exe config --default-user sysops

Inicie el entorno WSL:

wsl -d Ubuntu-20.04

Consejo. Puede iniciar su distribución WSL desde la pestaña Terminal de Windows.

Puede usar el mismo escenario para mover una imagen WSL configurada a otras computadoras.

Puede usar una utilidad de terceros LxRunOffline (disponible en GitHub — https://github.com/DDoSolitary/LxRunOffline) para mover WSL en Windows. Puedes instalarlo usando Chocolatey:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco install lxrunoffline

Lista de imágenes WSL disponibles:

lxrunoffline list

Finalice todos los procesos de WSL:

wsl --shutdown

Para obtener el directorio actual, la imagen de WSL se encuentra en:

lxrunoffline get-dir -n Ubuntu-20.04

Para mover una imagen WSL a otro disco:

lxrunoffline move -n Ubuntu-20.04 -d d:\wsl2\Ubuntu-20.04

Una vez completada la migración, inicie WSL con este comando:

wsl -d Ubuntu-20.04

o

lxrunoffline run -n Ubuntu-20.04 -w

En Windows 11, también puede ejecutar Windows Subsystem for Andriod (WSA) junto con WSL.

Artículos relacionados