一、 前言
交叉编译之后,主机与开发板之间的文件拷贝方式有许多种,wget、scp、ftp、tftp等,我觉得最方便的一种应该是nfs,当然前提是需要网络的支持。
二、client端
开发板一般是作为nfs的client端,需要使能应用层和内核的相关套件。
1. 应用层
应用层需要mount命令,mount命令则是busybox的一个小程序,所以需要确认一下busybox是否支持nfs,在busybox源码目录下执行
make menuconfig
在Linux System Utilities -> mount 下选中Support mounting NFS file systems on Linux < 2.6.23
重新编译busybox
2. 内核
在内核源码根目录下执行
make menuconfig
在File systems -> Network File Systems下选中NFS client support,并且至少选中NFS client support下的NFS client support for NFS version 2,NFS client support for NFS version 3。
重编内核
3. 重烧镜像
三、server端
主机系统为debian9
sudo apt-get install nfs-kernel-server
编辑/etc/exports,添加一个nfs目录
/path/of/yourDir xx.xx.xx.xx/24(rw,sync)
重启nfs服务器
sudo service nfs-kernel-server restart
配置目录选项
sudo chmod go+w /path/of/yourDir
四、应用
在开发板挂在nfs系统
mount -t nfs -o nolock hostIpAddr:/yourDir /path/of/your/local/dir
例如我在/etc/exports中添加
/home/baicai/nfs 172.16.16.0/24(rw,sync)
挂载时则运行
mount -t nfs -o nolock 172.16.16.114:/home/baicai/nfs /media
访问/media目录即可访问主机的/home/baicai/nfs目录
五、遇到的问题
Q1: svc failed to register lockdv1 rpc service “errno 5”
A1:需要加 -o nolock选项