Starting with Windows 10’s Fall Creators Update, the Windows Subsystem for Linux now allows you to manually mount drives. It still automatically mounts all internal NTFS drives. However, you can now manually mount external drives and network folders using the Linux
DrvFs now allows you to mount external drives like USB sticks, CDs, and DVDs. These devices must use a Windows file system like NTFS, ReFS, or FAT. You still can’t mount devices formatted with a Linux file system like ext3 or ext4.
Like with internal drives, these external drives will still remain accessible in Windows after you’ve mounted them in the Linux environment. Mounting them just also makes them accessible from the shell environment, too.
Let’s say you have an external drive G: that represents either a USB drive or an optical disc drive. To mount it, you’d run the following commands:
sudo mkdir /mnt/g sudo mount -t drvfs G: /mnt/g
You don’t actually have to mount the drive at
/mnt/g , of course. You can mount it wherever you want. Just replace both instances of
/mnt/g in the commands with your desired path.
To unmount the drive later so you can safely remove it, run the standard
sudo umount /mnt/g/
When working with an external device formatted with a FAT file system or any network file system, there are some limitations. The file system will not be case sensitive and you can’t create symbolic links or hard links on it.
You can also mount network locations. Any network location you can reach from within Windows, you can mount from the Linux shell.
Network locations can be mounted in one of two ways. If you map a network drive to a drive letter, you can mount it using the same options as above. This would give you an opportunity to easily sign into the network share and enter your credentials in File Explorer. For example, if your mapped network drive is F:, you could run the following commands to mount it:
sudo mkdir /mnt/f sudo mount -t drvfs F: /mnt/f
You can also specify a drive using its UNC (Universal Naming Convention) path. For example, if the path to the network share is
\\server\folder , you’d run the following command. Again, use whatever mount point you like in place of
sudo mkdir /mnt/folder
sudo mount -t '\\server\folder' /mnt/folder
The Windows Subsystem for Linux environment does not provide any way to specify the credentials you want to use. You can specify the credentials by navigating to the folder in File Explorer in Windows, entering them via the Credential Manager, or by using the net use command.
You can run the
net use command from within the Linux environment, as the Windows Subsystem for Linux allows you to launch Windows software from the Linux command line. Just run the command like so:
For example, the following command would connect to
\\server\folder with the username
Bob and the password
LetMeIn and map it to your F: drive. Here’s the command you’d run:
net.exe use f: \\server\folder /user:Bob LetMeIn
After you connect once, Windows would remember this username and password and automatically use them, even when you use the
mount command within the Linux environment.
To unmount a network location, you can use the standard
umount command, once again:
sudo umount /mnt/folder
DrvFs doesn’t set the Linux permissions accurately when you mount a network location. Instead, all files on the network file system appear to have the full access permission (0777) and you can only see if you have access to a file by trying to open it. The file system will also not be case sensitive and you can’t create symbolic links on them.