让Windows成为更好用的Linux发行版之WSL2折腾NFS
让Windows成为更好用的Linux发行版之WSL2折腾NFS
背景
生命不息,折腾不止。
前段时间,为了让WSL更好地来开发Linux和OH,折腾出了一系列文章:
上次把WSL2的网络弄好了,最近就准备将开发环境更进一步,开始折腾NFS。
以为和Ubuntu主机上搭建NFS一样(嵌入式Linux基础开发环境搭建),简单的一条命令加配置就搞定了,但后面发现根本不是那么一回事。而且网上也很少有完整实用的借鉴参考,只能自己摸索,实战出真知。
启用systemd
WSL2默认是没有启用systemd
,但很多程序是依赖它的,特别是需要开机启动的。
在发行版中添加配置文件/etc/wsl.conf
,并加入如下内容:
[boot]
systemd=true
安装配置NFS
sudo apt install nfs-common nfs-kernel-server rpcbind
新建一个目录(如这里的/home/xxx/nfs
),作为NFS的目录,修改/etc/export
,在最后添加如下一行:
/home/xxx/nfs *(rw,sync,no_root_squash,no_subtree_check)
全部重新export一下
sudo exportfs -rv
查看 Export list,看有没有成功:
sudo showmount -e
启动或重启相关服务:
sudo service rpcbind start
sudo /etc/init.d/nfs-kernel-server restart
遇到的问题
问题1
服务启动正常,但局域网的其他Linux电脑和板子都没法 mount
原因: Windows防火墙未配置。现在WSL2的网络和Windows的网络是镜像的,进出都需要走Windows防火墙,所以需要添加NFS相关端口的入站规则
解决: 防火墙和网络保护-》高级设置-》入站规则-》新建规则 (TCP 端口443,2049)
问题2
服务启动正常,局域网的其他Linux电脑可以使用如下命令 mount
:
sudo mount -t nfs 192.168.1.102:/home/xxx/nfs /mnt/
但板子不行,报错:
failed: Connection timed out
原因: NFS的版本不匹配,板子上默认的是3,服务器和电脑上默认的是4
解决: mount
的时候指定对应的版本即可。如下:
mount -t nfs -o nolock,nfsvers=4 192.168.1.102:/home/xxx/nfs /userdata/nfs
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DD'Notes!
评论