如何在Windows 10的WSL2 Ubuntu 20.04中禁止特定驱动器自动挂载
如何在Windows 10的WSL2 Ubuntu 20.04中禁止特定驱动器自动挂载
嘿,这个问题我之前也碰到过!WSL默认会一股脑自动挂载所有Windows盘符,碰到Google Drive(B:)这种网络驱动器或者Bitlocker加密的R:时,确实会因为访问权限或连接问题抛出那些9pnet_virtio错误。别担心,有几种靠谱的方法能解决你的问题:
方法一:修改wsl.conf(推荐,一劳永逸)
这是官方认可的配置方式,可以直接指定WSL忽略特定盘符:
- 打开WSL的Ubuntu终端,用sudo权限编辑
/etc/wsl.conf文件:sudo nano /etc/wsl.conf - 在文件中添加或修改
[automount]区块的内容:
注意:盘符大小写不敏感,写成[automount] enabled = true # 保持自动挂载其他正常的驱动器 options = "metadata,umask=22,fmask=11,ignore=B,R" # 重点是ignore参数,逗号分隔要排除的盘符 mountFsTab = false # 避免和/etc/fstab的配置冲突b,r也没问题。 - 保存并退出编辑器:按
Ctrl+O确认保存,回车,再按Ctrl+X退出。 - 关闭所有WSL窗口,然后在Windows的命令提示符或PowerShell里执行:
重新启动WSL后,B:和R:就不会被自动挂载了,那些启动错误也会消失。wsl --shutdown
方法二:用启动脚本自动卸载(灵活备选)
如果wsl.conf的配置没生效,或者你需要更灵活的控制,可以用启动脚本在WSL启动时自动卸载这两个盘符:
- 在Ubuntu里创建一个启动脚本文件,比如
~/.wsl_cleanup.sh:nano ~/.wsl_cleanup.sh - 写入以下内容(如果挂载点存在就卸载,忽略错误信息):
#!/bin/bash # 尝试卸载可能被错误挂载的B和R驱动器 sudo umount /mnt/b 2>/dev/null sudo umount /mnt/r 2>/dev/null - 给脚本添加执行权限:
chmod +x ~/.wsl_cleanup.sh - 把脚本加入到你的shell启动配置里(比如用bash的话就编辑
~/.bashrc):
在文件末尾添加一行:nano ~/.bashrc
保存退出后,下次启动WSL终端时就会自动执行卸载操作。source ~/.wsl_cleanup.sh
额外说明
如果之后你需要手动挂载某个被排除的驱动器(比如临时访问Google Drive),可以用以下命令:
sudo mount -t drvfs B: /mnt/b
不过要注意:Bitlocker加密的R:必须先在Windows里解锁后,WSL才能正常挂载访问,否则还是会报错。
备注:内容来源于stack exchange,提问作者BillieM




