Montaje de un disco Linux en WSL 2

Si quiere acceder a un formato de disco Linux que no es compatible con Windows, puede usar WSL 2 para montar el disco y acceder a su contenido. En este tutorial se tratarán los pasos para identificar el disco y la partición que se van a adjuntar a WSL 2, cómo montarlos y cómo acceder a ellos.

Si está conectando una unidad externa y no tiene éxito con estas instrucciones de montaje, puede probar las instrucciones para Conectar dispositivos USB. El wsl --mount comando no admite actualmente USB, unidades flash ni lectores de tarjetas SD (obtenga más información sobre este problema).

Nota:

Se requiere acceso de administrador para adjuntar un disco a WSL 2. El comando WSL 2 mount no admite el montaje de un disco (o particiones que pertenecen al disco) que se está usando actualmente. wsl --mountsiempre adjunta todo el disco aunque solo se solicite una partición. No se puede montar el disco de instalación de Windows.

Requisitos previos

Tendrá que estar en Windows 11 compilación 22000, una posterior o ejecutar la versión de Microsoft Store de WSL. Para comprobar la versión de WSL y Windows, use el comando: wsl.exe --version

Diferencias entre el montaje de una unidad externa con formato de Windows y el formato de Linux

Las unidades externas con formato para Windows suelen usar el formato del sistema de archivos NTFS. Las unidades externas con formato para Linux suelen usar el formato del sistema de archivos Ext4.

Si ha montado una unidad con formato NTFS en el sistema de archivos de Windows, puede acceder a esa unidad desde la distribución de Linux mediante WSL. Para ello, cree un directorio montado (sudo mkdir /mnt/d, reemplace "d" por cualquier letra de unidad que quiera usar) y, luego, use el complemento de interoperabilidad del sistema de archivos drvfs, con el comando:

sudo mount -t drvfs D: /mnt/d

Más información sobre los escenarios de montaje.

Si tiene una unidad con formato Ext4, no puede montarla en el sistema de archivos de Windows. Para montar una unidad con formato Ext4 en la distribución de Linux con WSL, puede usar el comando wsl --mount siguiendo las instrucciones siguientes.

Montaje de un disco sin particiones

Si tiene un disco que no tiene particiones, puede montarlo directamente mediante el comandowsl --mount. En primer lugar, debe identificar el disco.

  1. Identificar el disco : para enumerar los discos disponibles en Windows, ejecute:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Las rutas de acceso de los discos están disponibles en las columnas 'DeviceID'. Normalmente bajo el formato\\.\PHYSICALDRIVE*.

  2. Montar el disco : con PowerShell puede montar el disco mediante la ruta de acceso detectada anteriormente, ejecute:

    wsl --mount <DiskPath>
    

    Montaje de una unidad en WSL

Montaje de un disco con particiones

Si tiene un disco del que no está seguro sobre el formato de archivo en el que se encuentra o cuántas particiones tiene, puede seguir los pasos que se indican a continuación para montarlo.

  1. Identificar el disco : para enumerar los discos disponibles en Windows, ejecute:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Las rutas de acceso de los discos se muestran después de 'DeviceID', normalmente en el formato \\.\PHYSICALDRIVE*.

  2. Enumere y seleccione las particiones que se van a montar en WSL 2: una vez identificado el disco, ejecute:

    wsl --mount <DiskPath> --bare
    

    Esto hará que el disco esté disponible en WSL 2. En el caso de nuestro ejemplo, <DiskPath> es \\.\PHYSICALDRIVE*.

  3. Una vez adjuntada, la partición puede ser enumerada ejecutando el siguiente comando dentro de WSL 2:

    lsblk
    

    Se mostrarán los dispositivos de bloque disponibles y sus particiones.

Dentro de Linux un dispositivo de bloque se identifica como /dev/<Device><Partition>. Por ejemplo, /dev/sdb3, es el número de partición 3 del disco sdb.

Ejemplo:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0    1G  0 disk
├─sdb2   8:18   0   50M  0 part
├─sdb3   8:19   0  873M  0 part
└─sdb1   8:17   0  100M  0 part
sdc      8:32   0  256G  0 disk /
sda      8:0    0  256G  0 disk

Identificación del tipo de sistema de archivos

Si no conoce el tipo de sistema de archivos de un disco o partición puede usar este comando:

blkid <BlockDevice>

Esto generará el tipo de sistema de archivos detectado (con el formato TYPE="<Filesystem>").

Montaje de las particiones seleccionadas

Una vez que haya identificado las particiones que desea montar, ejecute este comando en cada una:

wsl --mount <DiskPath> --partition <PartitionNumber> --type <Filesystem>

Nota:

Si desea montar todo el disco como un único volumen (es decir, si el disco no tiene particiones), --partition se puede omitir.

Si se omite, el tipo de sistema de archivos predeterminado es "ext4".

Acceso al contenido del disco

Una vez montado, se puede acceder al disco en la ruta de acceso a la que apunta el valor de configuración: automount.root. El valor predeterminado es /mnt/wsl.

Desde Windows, se puede acceder al disco desde Explorador de archivos; para ello, vaya a: \\wsl$\\<Distro>\\<Mountpoint> (elija cualquier distribución de Linux).

Desmontaje de los discos

Si desea desmontar y desasociar el disco de WSL 2, ejecute:

wsl --unmount <DiskPath>

Montar un VHD en WSL

Nota:

WSL de Microsoft Store presenta un nuevo argumento para montar directamente un VHD: wsl --mount --vhd <pathToVHD>

También puede montar archivos de disco duro virtual (VHD) en WSL mediante wsl --mount. Para ello, primero debe montar el VHD en Windows mediante el comando Mount-VHD en Windows. Asegúrese de ejecutar este comando con privilegios de administrador. A continuación se muestra un ejemplo en el que usamos este comando y también se genera la ruta de acceso del disco. Asegúrese de reemplazar <pathToVHD> con la ruta de acceso del VHD real.

Write-Output "\\.\PhysicalDrive$((Mount-VHD -Path <pathToVHD> -PassThru | Get-Disk).Number)"

Puede usar la salida anterior para obtener la ruta de acceso de este VHD y montarlo en WSL siguiendo las instrucciones de la sección anterior.

También puede usar esta técnica para montar e interactuar con los discos duros virtuales de otras distribuciones de WSL, ya que cada distribución de WSL 2 se almacena a través de un archivo de disco duro virtual denominado: ext4.vhdx. De forma predeterminada, los VHD de las distribuciones de WSL 2 se almacenan en esta ruta de acceso: C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName], tenga cuidado al acceder a estos archivos del sistema, este es un flujo de trabajo para usuario avanzado. Asegúrese de ejecutar wsl --shutdown antes de interactuar con este disco para estar seguro de que no está en uso.

Montaje de un VHD en WSL

Referencia de línea de comandos

Montaje de un sistema de archivos específico

De forma predeterminada, WSL 2 intentará montar el dispositivo como ext4. Para especificar otro sistema de archivos, ejecute:

wsl --mount <DiskPath> -t <FileSystem>

Por ejemplo, para montar un disco como fat, ejecute:

wsl --mount <Diskpath> -t vfat

Nota:

Para enumerar los sistemas de archivos disponibles en WSL 2, ejecute: cat /proc/filesystems
Cuando un disco se ha montado a través de WSL 2 (sistema de archivos Linux), ya no está disponible para montarse a través de un controlador ext4 en el sistema de archivos de Windows.

Montaje de una partición específica

De forma predeterminada, WSL 2 intenta montar todo el disco. Para montar una partición específica, ejecute:

wsl --mount <Diskpath> -p <PartitionIndex>

Esto solo funciona si el disco es MBR (registro de arranque maestro) o GPT (tabla de particiones GUID). Obtenga información sobre los estilos de partición: MBR y GPT.

Especificación de opciones de montaje

Para especificar las opciones de montaje, ejecute:

wsl --mount <DiskPath> -o <MountOptions>

Ejemplo:

wsl --mount <DiskPath> -o "data=ordered"

Nota:

Solo se admiten las opciones específicas del sistema de archivos en este momento. No se admiten opciones genéricas, como ro, rw, noatime, ....

Adjuntar el disco sin montarlo

Si el esquema de disco no es compatible con ninguna de las opciones anteriores, puede adjuntar el disco a WSL 2 sin montarlo ejecutando:

wsl --mount <DiskPath> --bare

Esto hará que el dispositivo de bloque esté disponible dentro de WSL 2 para que se pueda montar manualmente desde allí. Use lsblk para enumerar los dispositivos de bloque disponibles dentro de WSL 2.

Especificación del nombre del montaje

Nota:

Esta opción solo está disponible con WSL desde Microsoft Store

De forma predeterminada, el nombre del punto de montaje se genera en función del disco físico o el nombre del VHD. Esto se puede invalidar con --name. Ejemplo:

wsl --mount <DiskPath> --name myDisk

Desasociar un disco

Para desasociar un disco de WSL 2, ejecute:

wsl --unmount [DiskPath]

Si Diskpath se omite, todos los discos adjuntados se desmontan y desasocian.

Nota:

Si un disco no se puede desmontar, WSL 2 puede ser forzado a salir mediante la ejecución de wsl --shutdown, que desasociará el disco.

Limitaciones

  • En este momento, solo se pueden adjuntar discos completos a WSL 2, lo que significa que no es posible adjuntar solo una partición. Concretamente, esto significa que no es posible usar wsl --mount para leer una partición en el dispositivo de arranque, ya que ese dispositivo no se puede desasociar de Windows.

  • Solo los sistemas de archivos que se admiten de forma nativa en el kernel se pueden montar mediante wsl --mount. Esto significa que no es posible usar controladores de sistema de archivos instalados ( por ejemplo: ntfs-3g) mediante una llamada a wsl --mount.

  • Los sistemas de archivos no compatibles directamente con el kernel se pueden montar a través de una conexión --bare y, a continuación, invocar al controlador FUSE correspondiente.