Monter un disque Linux dans WSL 2

Si vous souhaitez accéder à un format de disque Linux non pris en charge par Windows, vous pouvez utiliser WSL 2 pour monter votre disque et accéder à son contenu. Ce tutoriel décrit les étapes permettant d’identifier le disque et la partition à attacher à WSL2, comment les monter et comment y accéder.

Si vous connectez un lecteur externe et que vous n’avez pas réussi à suivre ces instructions de montage, vous pouvez essayer les instructions de connexion des périphériques USB. La commande wsl --mount ne prend actuellement pas en charge les lecteurs de carte USB/flash/SD (en savoir plus sur ce problème).

Remarque

Un accès administrateur est requis pour attacher un disque à WSL 2. La commande WSL 2 mount ne prend pas en charge le montage d’un disque (ou de partitions appartenant au disque) en cours d’utilisation. wsl --mount attache systématiquement le disque entier, même si une seule partition est demandée. Vous ne pouvez pas monter le disque d’installation de Windows.

Prérequis

Vous devez être sur le build 22000 ou ultérieure de Windows 11, ou vous devez exécuter la version Microsoft Store de WSL. Pour vérifier votre version WSL et Windows, utilisez la commande : wsl.exe --version

Différences entre les mises en forme Windows et Linux pour le montage d’un lecteur externe

Les lecteurs externes mis en forme pour Windows utilisent généralement la mise en forme du système de fichiers NTFS. Les lecteurs externes mis en forme pour Linux utilisent généralement la mise en forme du système de fichiers Ext4.

Si vous avez monté un lecteur au format NTFS sur votre système de fichiers Windows, vous pouvez accéder à ce lecteur à partir de votre distribution Linux à l’aide de WSL en créant un répertoire monté (sudo mkdir /mnt/d, en remplaçant « d » par la lettre de lecteur que vous souhaitez utiliser), avant d’utiliser le plug-in d’interopérabilité du système de fichiers drvfs, avec la commande :

sudo mount -t drvfs D: /mnt/d

En savoir plus sur les scénarios de montage.

Si vous avez un lecteur au format Ext4, vous ne pouvez pas le monter sur votre système de fichiers Windows. Pour monter un lecteur au format Ext4 sur votre distribution Linux avec WSL, vous pouvez utiliser la commande wsl --mount en suivant les instructions ci-dessous.

Monter un disque non partitionné

Si vous avez un disque sans partitions, vous pouvez le monter directement à l’aide de la commande wsl --mount. Vous devez d’abord identifier le disque.

  1. Identifier le disque – pour répertorier les disques disponibles dans Windows, exécutez :

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Les chemins d’accès des disques sont disponibles sous les colonnes « DeviceID ». Généralement sous le format \\.\PHYSICALDRIVE*.

  2. Monter le disque – vous pouvez monter le disque à l’aide du chemin d’accès de disque découvert ci-dessus, en exécutant la commande suivante avec PowerShell :

    wsl --mount <DiskPath>
    

    Mounting a drive in WSL

Monter un disque partitionné

Si vous avez un disque dont le format de fichier est incertain, ou dont les partitions sont incertaines, vous pouvez suivre les étapes ci-dessous pour le monter.

  1. Identifier le disque – pour répertorier les disques disponibles dans Windows, exécutez :

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Les chemins d’accès des disques sont répertoriés après « DeviceID », généralement au format \\.\PHYSICALDRIVE*.

  2. Répertorier et sélectionner les partitions à monter dans WSL 2 – une fois le disque identifié, exécutez :

    wsl --mount <DiskPath> --bare
    

    Cela rend le disque disponible dans WSL 2. (Pour notre exemple, le <DiskPath> est \\.\PHYSICALDRIVE*.

  3. Une fois attachée, la partition peut être répertoriée en exécutant la commande suivante dans WSL 2 :

    lsblk
    

    Cela affiche les dispositifs de bloc disponibles et leurs partitions.

Dans Linux, un dispositif de bloc est identifié en tant que /dev/<Device><Partition>. Par exemple, /dev/sdb3 est le numéro de partition 3 du disque sdb.

Exemple de sortie :

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

Identifier le type de système de fichiers

Si vous ne connaissez pas le type de système de fichiers d’un disque ou d’une partition, vous pouvez utiliser la commande suivante :

blkid <BlockDevice>

Cette opération affiche le type de système de fichiers détecté (sous le format TYPE="<Filesystem>").

Monter les partitions sélectionnées

Une fois que vous avez identifié les partitions que vous souhaitez monter, exécutez la commande suivante sur chaque partition :

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

Remarque

Si vous souhaitez monter l’intégralité du disque en tant que volume unique (c’est-à-dire si le disque n’est pas partitionné), la commande --partition peut être omise.

Si elle est omise, le type de système de fichiers par défaut est « ext4 ».

Accéder au contenu du disque

Une fois monté, le disque est accessible sous le chemin d’accès indiqué par la valeur de configuration : automount.root. La valeur par défaut est /mnt/wsl.

Le disque est accessible dans Windows à partir de l’Explorateur de fichiers en accédant à : \\wsl$\\<Distro>\\<Mountpoint> (choisissez n’importe quelle distribution Linux).

Démonter le disque

Si vous souhaitez démonter et détacher le disque de WSL 2, exécutez :

wsl --unmount <DiskPath>

Monter un disque dur virtuel (VHD, virtual hard disk) dans WSL

Remarque

WSL dans le Microsoft Store introduit un nouvel argument pour le montage direct d’un VHD : wsl --mount --vhd <pathToVHD>

Vous pouvez également monter des fichiers VHD dans WSL à l’aide de wsl --mount. Pour ce faire, vous devez d’abord monter le VHD sur Windows à l’aide de la commande Mount-VHD dans Windows. Veillez à exécuter cette commande avec des privilèges d’administrateur. Vous trouverez ci-dessous un exemple dans lequel nous utilisons cette commande et affichons le chemin d’accès du disque. Veillez à remplacer <pathToVHD> par votre chemin réel de VHD.

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

Vous pouvez utiliser la sortie ci-dessus pour obtenir le chemin d’accès de ce VHD et le monter dans WSL en suivant les instructions de la section précédente.

Vous pouvez également utiliser cette technique pour monter et interagir avec les VHD d’autres distributions WSL, car chaque distribution WSL 2 est stockée via un fichier VHD appelé : ext4.vhdx. Par défaut, les VHD pour les distributions WSL 2 sont stockés dans ce chemin : C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName]. Soyez prudent lors de l’accès à ces fichiers système, car c’est un flux de travail d’utilisateur avancé. Veillez à exécuter wsl --shutdown avant d’interagir avec ce disque pour vous assurer que le disque n’est pas en cours d’utilisation.

Mounting WSL VHD

Informations de référence sur la ligne de commande

Monter un système de fichiers spécifique

Par défaut, WSL 2 tente de monter l’appareil en tant qu’ext4. Pour spécifier un autre système de fichiers, exécutez :

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

Par exemple, pour monter un disque en tant que disque FAT, exécutez :

wsl --mount <Diskpath> -t vfat

Remarque

Pour afficher les systèmes de fichiers disponibles dans WSL2, exécutez : cat /proc/filesystems
Lorsqu’un disque a été monté via WSL2 (système de fichiers Linux), il n’est plus disponible pour le montage via un pilote ext4 sur le système de fichiers Windows.

Montage d’une partition spécifique

WSL 2 tente de monter l’intégralité du disque par défaut. Pour monter une partition spécifique, exécutez :

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

Cela ne fonctionne que si le disque est au format d’enregistrement de démarrage principal (MBR, Master Boot Record) ou de table de partition d’identificateur global unique (GPT, Globally unique identifier Partition Table). En savoir plus sur les styles de partition : MBR et GPT.

Spécifier les options de montage

Pour spécifier les options de montage, exécutez :

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

Exemple :

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

Remarque

Seules les options spécifiques au système de fichiers sont prises en charge pour l’instant. Les options génériques, telles que ro, rw, noatime, ..., ne sont pas prises en charge.

Attacher un disque sans le monter

Si le schéma de disque n’est pas pris en charge par l’une des options précédentes, vous pouvez attacher le disque à WSL 2 sans le monter en exécutant :

wsl --mount <DiskPath> --bare

Cela rend le dispositif de bloc disponible dans WSL 2 afin qu’il puisse être monté manuellement à partir de là. Utilisez lsblk pour afficher les dispositifs de bloc disponibles dans WSL 2.

Spécifier le nom de montage

Remarque

Cette option est uniquement disponible avec WSL dans le Microsoft Store

Le nom du point de montage est généré en fonction du nom du disque physique ou du VHD. Ce paramètre peut être remplacé par --name. Exemple :

wsl --mount <DiskPath> --name myDisk

Détacher un disque

Pour détacher un disque de WSL 2, exécutez :

wsl --unmount [DiskPath]

Si Diskpath est omis, tous les disques attachés sont démontés et détachés.

Remarque

Si un disque ne parvient pas à être démonté, il se peut que WSL 2 soit forcé de quitter en exécutant wsl --shutdown, détachant ainsi le disque.

Limites

  • À ce stade, seuls des disques entiers peuvent être attachés à WSL 2. Cela signifie qu’il n’est pas possible d’attacher uniquement une partition. Concrètement, cela implique qu’il n’est pas possible d’utiliser wsl --mount pour lire une partition sur le périphérique de démarrage, car ce périphérique ne peut pas être détaché de Windows.

  • Seuls les systèmes de fichiers pris en charge en mode natif dans le noyau peuvent être montés par wsl --mount. Cela signifie qu’il n’est pas possible d’utiliser les pilotes de système de fichiers installés (comme ntfs-3g, par exemple) en appelant wsl --mount.

  • Les systèmes de fichiers qui ne sont pas directement pris en charge par le noyau peuvent être montés via un attachement --bare, puis en appelant le pilote FUSE approprié.