Montar sistemas de archivos ext4 en Windows a través de WSL2

Así es, por trabajo he tenido la necesidad de montar uno de mis discos duros externos, que siempre suelo tener formateados como ext4, en un sistema Microsoft Windows. Obviando el que para muchos será un crimen y una blasfemia, con un poco de humor, creo que los pasos que he realizado, buscando siempre ser lo más nativo posible, para poder usar el sistema de archivos tradicional de Linux y Unix puede ayudar a más de uno que lo necesite.

Como bien sabeis muchos, existen distintos sistemas de archivos, que indican la estructura en la que se organizan y gestionan los datos en un dispositivo de almacenamiento. Los típicos de Windows son FAT32 o NTFS, tal y como están formateados por defecto la mayor parte de discos duros, pendrives, etcétera. Que encontramos en el mercado. Las distribuciones de Linux suelen ser completamente compatibles con ellos, de tal forma que uno no suele darse cuenta que está usando un sistema no nativo de Unix. Sin embargo, cuando el caso es al revés, como en el mío en el que mis discos duros y dispositivos de almacenamiento suelen estar en ext2, ext3 o ext4; la incompatibilidad con Windows es palpable.

Entonces, ¿cómo puedo utilizar mi disco ext4 en un sistema Windows incompatible? Hay softwares de terceros que se pueden buscar e instalar, pero de primeras lo evitaría. Primero, por seguridad; ya bastante inseguro es Windows como para que le metamos más códigos cerrados y obtusos para pequeas funcionalidades; además que crea aun más basura en un sistema tan sucio, estructural y organizativamente hablando. Por ello, he optado por utilizar WSL o Windows Subsystem Linux, que para quien no lo sepa, es una implementación de Windows relativamente reciente que permite ejecutar un entorno, más o menos virtualizado, de Linux en una máquina Windows.

  1. WSL debe estar en la versión 2. El equipo donde he hecho estaba en versión 1, lo sé por:
C:\>wsl --mount PATH

Esta operación solo es compatible con WSL2

Entonces, lo actualizo:

C:\>wsl.exe --update

Instalando: Subsistema de Windows para Linux
Se ha instalado Subsistema de Windows para Linux.
  1. También parece necesario habilitar la característica Virtual Machine Platform.
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. Instalación de distribución, hay varias disponibles, en mi caso he optado por Debian:
C:\>wsl.exe --list --online

A continuación, se muestra una lista de las distribuciones válidas que se pueden instalar.
Instalar con "wsl.exe --install <Distro>".

NAME                            FRIENDLY NAME
AlmaLinux-8                     AlmaLinux OS 8
AlmaLinux-9                     AlmaLinux OS 9
AlmaLinux-Kitten-10             AlmaLinux OS Kitten 10
Debian                          Debian GNU/Linux
SUSE-Linux-Enterprise-15-SP5    SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
Ubuntu                          Ubuntu
Ubuntu-24.04                    Ubuntu 24.04 LTS
kali-linux                      Kali Linux Rolling
openSUSE-Tumbleweed             openSUSE Tumbleweed
openSUSE-Leap-15.6              openSUSE Leap 15.6
Ubuntu-18.04                    Ubuntu 18.04 LTS
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_7                 Oracle Linux 8.7
OracleLinux_9_1                 Oracle Linux 9.1

C:\>wsl.exe --install Debian

Descargando: Debian GNU/Linux
[========================= 43,4%                           ]
  1. Descubrimos el disco, es como el equivalente a un lsblk:
C:\> wmic diskdrive list brief
Caption                         DeviceID            Model                           Partitions  Size
KBG50ZNS512G NVMe KIOXIA 512GB  \\.\PHYSICALDRIVE0  KBG50ZNS512G NVMe KIOXIA 512GB  3           512105932800
sobetter EXT SCSI Disk Device   \\.\PHYSICALDRIVE1  sobetter EXT SCSI Disk Device   1           500105249280
  1. Y montamos el disco:
C:\Windows\System32>wsl --mount \\.\PHYSICALDRIVE1 --partition 1

El disco se montó correctamente como "/mnt/wsl/PHYSICALDRIVE1p1".
Nota: La ubicación será diferente si ha modificado la configuración de automount.root en /etc/wsl.conf.
Para desmontar y desasociar el disco, ejecute "wsl.exe --unmount \\.\PHYSICALDRIVE1".

Y con esto, podemos usar nuestros discos en Windows de forma prácticamente nativa, sin necesidad de instalar software a parte.

¡Un saludo a todos!

8 Me gusta

Sirva de resumen, que he necesitado consultar este post para realizar el montaje de nuevo en otro equipo, una vez configurado sólo serían necesarios 3 comandos para montar y desmontar:

wmic diskdrive list brief
wsl --mount \\.\PHYSICALDRIVE1 --partition 1
wsl --unmount \\.\PHYSICALDRIVE1
3 Me gusta

De nuevo, he necesitado montar un dispositivo de almacenamiento externo con formato ext4 en un PC Windows.Pero esta vez no era un disco duro, sino un pendrive… ¿Y cuál ha sido mi sorpresa? ¡que este procedimiento no sirve con pendrives!

Por lo que hay que buscar otra alternativa… Me hablan de usbipd-win, una utilidad para compartir USB entre la máquina Windows anfitriona, Hyper-V y WSL 2.0.

De esta forma, puedo listar los USB conectados:

PS C:\WINDOWS\system32> usbipd.exe list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
2-6    0bda:5570  Integrated Webcam, Integrated IR Webcam, Camera DFU Device    Not shared
2-8    0a5c:5843  Dell ControlVault w/ Fingerprint Touch Sensor, Lector de ...  Not shared
2-10   8087:0033  Intel(R) Wireless Bluetooth(R)                                Not shared
2-15   346d:3281  Dispositivo de almacenamiento USB                             Not shared
3-2    05e3:0754  Dispositivo de almacenamiento USB                             Not shared
4-1    413c:301a  Dispositivo de entrada USB                                    Not shared
4-3    2109:0100  USB 2.0 BILLBOARD                                             Not shared
4-4    03f0:0324  Dispositivo de entrada USB                                    Not shared
4-5    2109:8888  USB Billboard Device                                          Not shared

Identifico mi pendrive:

2-15   346d:3281  Dispositivo de almacenamiento USB                             Not shared

Y, mediante el BUSID, lo comparto y lo paso a WSL:

usbipd bind --busid 2-15
usbipd attach --wsl --busid 2-15

usbipd: info: Using WSL distribution 'Debian' to attach; the device will be available in all WSL 2 distributions.
usbipd: info: Loading vhci_hcd module.
usbipd: info: Detected networking mode 'nat'.
usbipd: info: Using IP address 172.27.32.1 to reach the host.

Ahora, en el Linux embebido de WSL, aparece como dispositivo en /dev/sde:

lsblk
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0 364.8M  1 disk
sdb    8:16   0 144.5M  1 disk
sdc    8:32   0     2G  0 disk [SWAP]
sdd    8:48   0     1T  0 disk /mnt/wslg/distro /
sde    8:64   1 231.1G  0 disk

Esto ya es territorio Linux, por lo que simplemente debo montarlo y usarlo como de costumbre.

Lo siento por la entrada heterodoxa que consiste en explicar algo de Windows, pero a veces tenemos que ponernos guantes quirúrgicos y usar estos sistemas demoniacos, y qué mejor que contar atajos para poder usar nuestros discos y particiones ext2, ext3 o ext4 y salir rápidamente del sistema…

4 Me gusta

El soporte para el sistema operativo para esclavos Windows, es algo fuera de la temática del foro, “debería” ir en Offtopic.

3 Me gusta

Podría ser, pero no opino de la misma forma: no estoy hablando propiamente de Windows, sino de la unión de dos elementos de Linux, como lo son:

a. los formatos de sistema de archivos transaccionales ext2, ext3 o ext4, pertenecientes nativamente al kernel de Linux desde la introducción en 1993 de ext2, y
b. WSL2, que no es si quiera una capa de compatibilidad con el kernel, como era WSL, sino que ofrece un kernel de Linux a través de virtualización, con llamadas a la API del kernel.

Si hubiera alguna categoría para ello creo que las más adecuadas serían compatibilidad o virtualización. ¿A caso la compatibilidad de sistemas Linux y/o la virtualización del núcleo de Linux merece estar en Off Topic en un foro que tiene precisamente el nombre Linux?

2 Me gusta

Puedes hacer lo que quieras, total tienes privilegios de moderador.