index.html (8351B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 <title>Montaje de sistema de archivos ext4 a través de WSL2</title> 7 <link rel="icon" type="image/png" href="/favicon.png" /> 8 <link rel="stylesheet" type="text/css" href="../article.css" /> 9 </head> 10 <body> 11 <header> 12 <p class="title">Montaje de sistema de archivos ext4 a través de WSL2</p> 13 <p class="date">5 de junio de 2026 • fjbalon</p> 14 </header> 15 <p>En un artículo algo extraño para lo que suelo escribir, enfocado en el sistema de Microsoft Windows. Tranquilícese el lector, incluso encuadrando el artículo a través del sistema operativo ajeno a las buenas costumbres, no se trata de él mismo, sino que sigue tratándose de Linux por:</p> 16 <p>a. los formatos de sistemas de archivos transaccionales ext2, ext3 o ext4, pertenecientes nativamente al kernel de Linux desde la introducción en 1993 de ext2, y</p> 17 <p>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.</p> 18 <p>Si hubiera alguna categoría para ello creo que las más adecuadas sería 19 compatibilidad o virtualización. Ya que, por trabajo, he tenido la necesidad de montar un de mis discos duros externos, que suelo llevar formateados con el sistema de archivos ext4, en un sistema Windows.</p> 20 <p>Obviando la blasfemia, con un poco de humor, creo que los pasos a realizar pueden ser de interés para muchos. Ya que, no lo sabía, no existe compatibilidad nativa en Windows para montar estos sistemas de archivos. Y no basta, como en GNU/Linux, con instalar un paquete de compatibilidad para montar, por ejemplo, NTFS.</p> 21 <p>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 pequeñas 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. Como decía antes, de hecho, WSL2 ofrece directamente un núcleo de Linux optimizado por Microsoft.</p> 22 <p>De ahí, lo primero necesario es tener actualizado WSL2 con una distribución Linux, en mi caso, Debian:</p> 23 <pre><code>C:\>wsl --mount PATH 24 Esta operación solo es compatible con WSL2 25 26 C:\>wsl.exe --update 27 Instalando: Subsistema de Windows para Linux 28 Se ha instalado Subsistema de Windows para Linux. 29 30 C:\>wsl.exe --list --online 31 32 A continuación, se muestra una lista de las distribuciones válidas que se pueden instalar. 33 Instalar con "wsl.exe --install <Distro>". 34 35 NAME FRIENDLY NAME 36 AlmaLinux-8 AlmaLinux OS 8 37 AlmaLinux-9 AlmaLinux OS 9 38 AlmaLinux-Kitten-10 AlmaLinux OS Kitten 10 39 Debian Debian GNU/Linux 40 SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5 41 SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6 42 Ubuntu Ubuntu 43 Ubuntu-24.04 Ubuntu 24.04 LTS 44 kali-linux Kali Linux Rolling 45 openSUSE-Tumbleweed openSUSE Tumbleweed 46 openSUSE-Leap-15.6 openSUSE Leap 15.6 47 Ubuntu-18.04 Ubuntu 18.04 LTS 48 Ubuntu-20.04 Ubuntu 20.04 LTS 49 Ubuntu-22.04 Ubuntu 22.04 LTS 50 OracleLinux_7_9 Oracle Linux 7.9 51 OracleLinux_8_7 Oracle Linux 8.7 52 OracleLinux_9_1 Oracle Linux 9.1 53 54 C:\>wsl.exe --install Debian 55 56 Descargando: Debian GNU/Linux 57 [========================= 43,4% ]</code></pre> 58 <p>También es necesario habilitar la característica de Virtual Machine Platform, si no lo hubiera.</p> 59 <pre><code>dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart</code></pre> 60 <p>Entonces podemos descubrir el disco y lo montamos a través de WSL, para los unixeros, estamos haciendo el equivalente de Windows a lsblk y mount:</p> 61 <pre><code>wmic diskdrive list brief 62 Caption DeviceID Model Partitions Size 63 KBG50ZNS512G NVMe KIOXIA 512GB \\.\PHYSICALDRIVE0 KBG50ZNS512G NVMe KIOXIA 512GB 3 512105932800 64 sobetter EXT SCSI Disk Device \\.\PHYSICALDRIVE1 sobetter EXT SCSI Disk Device 1 500105249280 65 66 C:\Windows\System32>wsl --mount \\.\PHYSICALDRIVE1 --partition 1 67 68 El disco se montó correctamente como "/mnt/wsl/PHYSICALDRIVE1p1". 69 Nota: La ubicación será diferente si ha modificado la configuración de automount.root en /etc/wsl.conf. 70 Para desmontar y desasociar el disco, ejecute "wsl.exe --unmount \\.\PHYSICALDRIVE1".</code></pre> 71 <img src="ext4-windows-wsl2.png" /> 72 <p>Y con esto, podemos usar nuestros discos en Windows de forma prácticamente nativa, sin necesidad de instalar software de terceros a parte.</p> 73 <p>Pero, ¿y si no queremos montar un disco duro sino un pendrive o memoria flash?</p> 74 <p>En un inicio intenté hacer lo mismo, ¿pero cuál fue mi sorpresa? resulta que el procedimiento ya descrito <a href="https://github.com/microsoft/WSL/issues/6011">no sirve con pendrives</a>.</p> 75 <p>Por lo que hay que buscar otra alternativa... Me hablan de <a href="https://github.com/dorssel/usbipd-win/releases">usbipd-win</a>, una utilidad para compartir USB entre la máquina Windows anfitriona, Hyper-V y WSL2.</p> 76 <p>De esta forma, puedo listar los USB conectados:</p> 77 <pre><code>PS C:\WINDOWS\system32> usbipd.exe list 78 Connected: 79 BUSID VID:PID DEVICE STATE 80 2-6 0bda:5570 Integrated Webcam, Integrated IR Webcam, Camera DFU Device Not shared 81 2-8 0a5c:5843 Dell ControlVault w/ Fingerprint Touch Sensor, Lector de ... Not shared 82 2-10 8087:0033 Intel(R) Wireless Bluetooth(R) Not shared 83 2-15 346d:3281 Dispositivo de almacenamiento USB Not shared 84 3-2 05e3:0754 Dispositivo de almacenamiento USB Not shared 85 4-1 413c:301a Dispositivo de entrada USB Not shared 86 4-3 2109:0100 USB 2.0 BILLBOARD Not shared 87 4-4 03f0:0324 Dispositivo de entrada USB Not shared 88 4-5 2109:8888 USB Billboard Device Not shared</code></pre> 89 <p>Identifico mi pendrive como si de <emb>/dev</emb> se tratara, siendo <emb>2-15, 346d:3281, Dispositivo de almacenamiento USB</emb>, y mediante el <emb>BUSID</emb> lo comparto y paso a WSL:</p> 90 <pre><code>usbipd bind --busid 2-15 91 usbipd attach --wsl --busid 2-15 92 93 usbipd: info: Using WSL distribution 'Debian' to attach; the device will be available in all WSL 2 distributions. 94 usbipd: info: Loading vhci_hcd module. 95 usbipd: info: Detected networking mode 'nat'. 96 usbipd: info: Using IP address 172.27.32.1 to reach the host.</code></pre> 97 <p>Ahora, en el Linux embebido de WSL, aparece como dispositivo en <emb>/dev/sde</emb>:</p> 98 <pre><code>lsblk 99 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS 100 sda 8:0 0 364.8M 1 disk 101 sdb 8:16 0 144.5M 1 disk 102 sdc 8:32 0 2G 0 disk [SWAP] 103 sdd 8:48 0 1T 0 disk /mnt/wslg/distro / 104 sde 8:64 1 231.1G 0 disk</code></pre> 105 <p>Esto ya es territorio Linux, por lo que simplemente debo montarlo y usarlo como de costumbre.</p> 106 <p>Lo siento por la entrada heterodoxa, pero a veces tenemos que ponernos guantes quirúrgicos y usar estos sistemas, y qué mejor que contar atajos para poder usar nuestros discos y particiones ext2, ext3 o ext4.</p> 107 <p>Sirva como resumen o gist:</p> 108 <pre><code># Montaje de disco duro ext4 109 wmic diskdrive list brief 110 wsl --mount \\.\PHYSICALDRIVE1 --partition 1 111 112 # Montaje de pendrive ext4 113 usbipd.exe list 114 usbipd bind --busid 2-15 115 usbipd attach --wsl --busid 2-15 116 lsblk</code></pre> 117 </body> 118 </html>