60 votes

Accès aux supports amovibles dans Bash sous Windows

Existe-t-il un moyen d'accéder aux supports amovibles (par exemple, les clés USB ou les cartes SD) à partir de Bash sous Windows ?

Bash sur Windows utilise DriveFs pour monter des disques fixes dans le /mnt mais il ne monte pas automatiquement les supports amovibles. Et on dirait qu'il ne les met pas dans le dossier /dev soit :

Aaron@MYPC:/$ ls /dev
block  fd  kmsg  lxss  null  ptmx  pts  random  shm  stderr  stdin  stdout  tty  tty0  tty1  urandom  zero

Existe-t-il un moyen de monter des disques amovibles ? Existe-t-il un moyen d'accéder au périphérique de bloc sous-jacent ?

73voto

user643011 Points 2199

Bonne nouvelle, il est désormais possible de monter des supports USB (y compris formatés en FAT) et des partages réseau avec drvfs sous Windows 10 :

Monter un support amovible : (par exemple D :)

$ sudo mkdir /mnt/d
$ sudo mount -t drvfs D: /mnt/d

Pour démonter en toute sécurité

$ sudo umount /mnt/d

Vous pouvez également monter des partages réseau sans smbfs :

$ sudo mount -t drvfs '\\server\share' /mnt/share

Vous avez besoin d'au moins la version 16176. Vous devrez donc vous inscrire au programme Windows Insider, puis mettre à jour Windows. Source : https://blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-improvements-to-the-Windows-subsystem-for-linux/

10voto

DavidPostill Points 140654

Existe-t-il un moyen d'accéder aux supports amovibles à partir de Bash sous Windows ?

Mise à jour :

Apparemment, c'est désormais possible à partir de Windows 10 Build 16176.

Véase https://superuser.com/a/1209701/337631 .


Non.

Pour l'instant, il y a des limitations sur les lecteurs qui peuvent être montés :

Pour qu'un disque apparaisse sous /mnt/, il doit répondre aux critères suivants critères suivants :

  1. Le lecteur doit être un lecteur fixe
  2. Le lecteur doit être formaté en NTFS.

Cette question a été soulevée : Les disques autres que C : ne sont pas montés dans /mnt #1079 . Il est toujours marqué comme "ouvert".

Pour faciliter l'interopérabilité avec Windows, WSL utilise le système de fichiers DrvFs. WSL monte automatiquement tous les lecteurs fixes avec des systèmes de fichiers supportés sous /mnt, comme /mnt/c, /mnt/d, etc. Actuellement, seuls les volumes NTFS et ReFS sont pris en charge.

Source : Support du système de fichiers WSL


Autres lectures

2voto

Jesse De Loore Points 21

Pour compléter les réponses existantes : si vous installez un pilote ext pour Windows (par exemple Ext2Fsd), vous pouvez monter un système de fichiers ext comme vous le feriez avec un système de fichiers NTFS. Cela peut être utile si vous voulez monter des cartes SDC de Raspberry Pi.

2voto

Shivani Gowda Points 21

J'ai finalement réussi à configurer WSL2 pour monter automatiquement ma carte SD en tant qu'utilisateur non-root et préserver les permissions owner:group et rwx sur la carte SDCard. Ma carte SD est au format NTFS.

Étape 1. Activez l'automount. Créez /etc/wsl.conf avec ce contenu

$cat /etc/wsl.conf
[automount]
enable = true
options = "defaults,user"
mountFsTab = true

Étape 2 : créer mnt/d où nous voulons monter notre disque

mkdir /mnt/d

Etape 3 : Activez l'entrée fstab pour que la SDCard soit montée dans /mtn/d. Dans mon cas, le lecteur D : (sur surface pro 7)

$ cat /etc/fstab
LABEL=cloudimg-rootfs   /        ext4   defaults        0 1
D:      /mnt/d  drvfs   defaults,user,metadata,exec  0       0

Note :

  1. il y a deux lignes, la première était déjà là. J'ai ajouté la deuxième ligne.
  2. options user est nécessaire, sinon il se monte comme root utilisateur. et option metadata est nécessaire, sinon il ne pourra pas préserver les permissions des utilisateurs, des groupes, etc.
  3. exec est nécessaire, sinon vous risquez de ne pas pouvoir exécuter les fichiers dans le système de fichiers monté. (Je n'ai pas été en mesure d'exécuter des fichiers sous Windows 11).

Etape 4 : redémarrer wsl

#exit bash or linux, go to dos/windows prompt
wsl --shutdown
wsl # or bash

0voto

timotree Points 938

Si l'appareil n'est pas en /dev il est probable que votre installation ne détecte même pas le disque.

La commande lsblk doit répertorier tous les périphériques de bloc connectés (lecteurs). S'il n'apparaît pas dans cette liste, votre meilleure chance est d'essayer de brancher le périphérique avant de lancer bash.

Je ne vois dans votre question aucune mention de la méthode d'utilisation de bash sous Windows que vous avez trouvée, mais pour la plupart, il ne devrait pas être trop difficile de redémarrer bash.

Si lsblk vous montre votre lecteur, puis trouvez le chemin qu'il liste et tapez mount <path shown by lsblk> <path you want the drive to be mounted to>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X