<p><em>Résolu via les commentaires, donc transfert des informations dans une réponse (avec quelques informations supplémentaires).</em></p>
<p>Les messages d’erreur WSL (relativement) récents ont été utiles dans ce cas. Le <code>Wsl/Service/AttachDisk/MountVhd/E_ACCESSDENIED</code> indiquait un problème de permissions d’<em>un certain</em> type.</p>
<p>Normalement, d’après ce que je peux constater, un fichier <code>.vhdx</code> créé via le Gestionnaire de disques sera possédé par le groupe Administrateurs local. Dans la plupart des cas, l’utilisateur local qui a installé et exécute WSL est membre de ce groupe, donc il n’y a pas de problèmes de permissions.</p>
<p>Cependant, dans ce cas, cela ne <em>semble</em> pas être le cas, puisque le changement de propriétaire du <code>.vhdx</code> a finalement résolu l’erreur <code>ACCESSDENIED</code>.</p>
<p>Quelques éléments supplémentaires :</p>
<ul>
<li></li>
</ul>
<p>Le disque virtuel <em>doit</em> être détaché du Gestionnaire de disques (Clic droit → <em>Détacher le VHD</em>) sinon l’erreur suivante se produira :</p>
<pre><code class="lang-auto">Failed to attach disk '<path_to>\wsl2-drive.vhdx' to WSL2: The process cannot access the file because it is being used by another process.
Error code: Wsl/Service/AttachDisk/MountVhd/0x80070020
</code></pre>
<ul>
<li></li>
</ul>
<p>Je recommande personnellement de créer le <code>.vhdx</code> depuis un compte PowerShell administratif en utilisant :</p>
<pre><code class="lang-auto">new-vhd -Dynamic -SizeBytes 100gb -BlockSizeBytes 1mb -path <path_to>/<name>.vhdx
</code></pre>
<p>La taille de bloc s’avère assez importante pour la vitesse de croissance du disque dynamique. La taille de bloc de 1 Mo est celle que WSL utilise pour ses disques virtuels intégrés.</p>
<ul>
<li></li>
</ul>
<p>Également, <code>--bare</code> est requis tant qu’il n’y a pas de système de fichiers sur le lecteur que WSL peut gérer. Votre prochaine étape sera de créer un système de fichiers sur ce disque virtuel depuis <em>l’intérieur</em> de WSL. Comme mentionné dans la <a href="https://learn.microsoft.com/en-us/windows/wsl/wsl2-mount-disk#attaching-the-disk-without-mounting-it">documentation WSL</a>, utilisez <code>lsblk</code> pour identifier le disque nouvellement monté.</p>
<p>Ce n’est pas une mauvaise idée de s’assurer complètement que vous formatez le bon périphérique en démontant, <code>lsblk</code>, puis remonter et <code>lsblk</code> à nouveau. Le nouveau périphérique sera évident dans ce cas. Bien entendu, une taille de disque unique est également un moyen valide de l’identifier.</p>
<p>Une fois le périphérique identifié, vous utiliserez quelque chose comme :</p>
<pre><code class="lang-auto">sudo mkfs.ext4 /dev/<device> # e.g. sde
</code></pre>
<ul>
<li></li>
</ul>
<p>Après avoir créé un système de fichiers sur le périphérique, tant que le système de fichiers est reconnu par WSL2 (<code>ext4</code>, <code>btrfs</code>, et probablement quelques autres), vous pouvez omettre l’option <code>--bare</code> pour les montages futurs.</p>
<p>À ce stade, c’est une bonne idée de passer à l’utilisation de <code>--name <name></code> afin que la partition/le système de fichiers soit monté à un emplacement connu. Par défaut, ce sera <code>/mnt/wsl/<name></code>.</p>
<ul>
<li></li>
</ul>
<p>Le <code>-d Ubuntu-22.04</code> dans ce cas est un no-op. Je suis un peu surpris que cela ne génère pas d’erreur, mais le périphérique est toujours monté dans <em>toutes</em> les distributions, que vous spécifiiez une distribution avec <code>wsl -d</code> ou non.</p>