起因
实验室的许多文件都是通过NAS或者其他人电脑的共享文件夹共享的,在Windows下可以很方便地根据路径访问文件,但是WSL并不会帮你做这一点,WSL默认只会挂载Windows默认盘符的盘,即便对共享文件夹做映射也是这样的,因此需要自己想办法挂载
手动方法
网上大部分的方法都是手动方法,也就是直接通过命令进行挂载,命令如下:
# 假设\\192.168.1.139\docker是Windows下访问的路径,想要把它挂载为WSL下的z盘
# 首先需要在/mnt下创建这个文件夹,记得改一下文件夹权限
sudo mkdir /mnt/z
sudo chmod 777 /mnt/z
# 挂载
sudo -S mount -t drvfs '\\192.168.1.139\docker\' /mnt/z
通过上述方法可以把\\192.168.1.139\docker\
挂载到WSL下的/mnt/z
下,但是这种方法不持续,下次重启就没了,之前想了一个很蠢的方法,就是把挂载脚本写在~/.zshrc
之类的启动文件里,让shell自动做这件事,这里还要把明文密码写进去(好不安全…)
# 写到shell里的文件,还是在这里记录一下just in case
# XXXXXX是你的sudo明文密码
sudo echo -e "XXXXXX\n" | sudo -S mount -t drvfs '\\192.168.1.139\docker\' /mnt/z
自动方法
今天刚发现,WSL下(或者是Linux下)有一个文件叫/etc/fstab
,本来就是写了文件挂载点,感觉自己好蠢…最原始的文件如下:
LABEL=cloudimg-rootfs / ext4 discard,errors=remount-ro 0 1
把自己想挂载的文件夹按上述格式写进去就好了,注意这里把最后的0 1
改成了0 0
,是因为不想让每次挂载的时候扫描检查整个盘,具体这两个数字是干什么的参见/etc/fstab文件的详解
改过后的/etc/fstab
:
LABEL=cloudimg-rootfs / ext4 discard,errors=remount-ro 0 1
\\192.168.1.139\docker\ /mnt/z drvfs defaults 0 0
注意这里还是要先创建/mnt/z
并且sudo chmod 777 /mnt/z
的,里面的drvfs
是文件系统,可能是wsl自己的一种文件系统吧,反正其他地方没见过
update:今天还发现
WSL自己有一个启动时配置文件/etc/wsl.conf
,改这个也可以,参见Automatically Configuring WSL
参考
credit: https://www.public-health.uiowa.edu/it/support/kb48568/