番外篇一——Ubuntu20.04和uboot之间nfs设置
在搞nfs的时候卡了比较久,现在把调试过程列下来:
首先,安装nfs服务是直接通过apt-get安装的,安装版本可以通过下面的命令查看
sudo cat /proc/fs/nfsd/versions
由于我修改过配置文件,这里从网上截个图
可以看出来支持的版本。
创建两个新文件夹
sudo mkdir -p /opt/nfsv4/data sudo mkdir -p /data/nfs
第二个文件夹主要用来测试第一个路径的挂载效果的。为了方便,修改两个文件夹的权限,给777,过程略。
修改/etc/fstab,加上最后一行命令
在/opt/nfsv4/data里随便新建一个文件,里面打些字符串,挂载试一下
sudo mount -a
这样就可以发现挂载是没问题的。下面修改共享目录/etc/exports
主要是下面两行,/home那一行是用来和uboot通讯的,先不管,修改完成后重启服务
sudo service nfs-kernel-server restart
新启用个设备(我用的是树莓派),新建个文件夹后直接用下面的命令挂载
sudo mkdir nfsdata sudo chmod -R 777 nfsdata sudo mount 192.168.3.114:/opt/nfsv4/data
这个时候一直报错,提示的是连接超时。在网上查的原因是防火墙的作用,关闭防火墙以后就OK了。
这个时候重新挂载,OK
挂载完成也可以卸载
但是这个方法在Ubuntu重启后好像就不行了,需要重新关闭防火墙。并且也不太安全。可以绑定端口
这里按理说直接用sudo vim就可以了,但是一直提示无法保存,所以新建个文件夹
sudo mkdir -p /etc/sysconfig vim /etc/sysconfig/nfs
添加下面的内容
RQUOTAD_PORT=30001 LOCKD_TCPPORT=30002 LOCKD_UDPPORT=30002 MOUNTD_PORT=30003 STATD_PORT=30004
这样重启以后就可以直接使用了。
但是在uboot里测试会报错
查了一下原因,因为uboot里使用的NFS版本为V2,而我们用的NFS版本是不支持V2的。要修改相应配置
sudo vim /etc/default/nfs-kernel-server
要注释并修改第3、14、21行(我是直接复制粘贴上一行然后注释掉,然后粘贴以后修改)
重启服务
sudo service nfs-kernel-server restart
搞定