使用本开发板做开发,NFS 服务并不是必须的,因为 NFS 主要是用于通过网络远程
共享文件,我们使用常见的ftp或者 SD卡,基本上也可以达到同样的目的。但是他的方便性也是显而易见的。
转载请注明来自xzyfeixiang的专栏:
http://blog.csdn.net/xzyiverson/article/details/15683379
一.在linux的pc机下配置网络文件系统NFS服务
1、安装Ubuntu nfs
Ubuntu上默认是没有安装Ubuntu nfs服务器的,因此我们首先安装Ubuntu nfs服务器端:
apt-get install nfs-kernel-server
2、配置/etc/exports
Ubuntu nfs允许挂载的目录及权限在文件/etc/exports中进行了定义例如,我们要将根目录下的/nfs目录共享出来,那么我们需要在/etc/exports文件末尾添加如下一行:
/nfs *(rw,sync,no_root_squash)
其中:/nfs是要共享的目录,*代表允许所有的网络段访问,rw是可读写权限,sync是资料同步写入内存和硬盘,no_root_squash是Ubuntu nfs客户端分享目录使用者的权限,如果客户端使用的是root用户,那么对于该共享目录而言,该客户端就具有root权限,记住要mkdir /nfs并在这个目录下新建一些文件帮助我们测试是否成功。
本人的配置如下:
/nfs *(rw,sync,no_subtree_check)
注意:在使用之前请将挂载的目录权限全部设置成777即执行 chmod777 /nfs。另外请把/rootfs替换成你希望挂载的目录
3、关闭Ubuntu的防火墙
ufw disable 防火墙在系统启动时自动禁用 (启用就是enable)
4、Ubuntu nfs重启服务
$sudo service portmap restart
$sudo service nfs-kernel-server restart
5、测试Ubuntu nfs
此时可以运行以下命令来显示一下共享出来的目录:
$showmount -e
或者可以使用以下命令把它挂载在本地磁盘上,例如将/rootfs挂载到/mnt下:
$ sudo mount -t nfs localhost:/nfs /mnt
查看后可以使用以下命令卸载:
umount /mnt
二:在开发板上挂接使用网络文件系统NFS,之前的arm开发板的内核是支持NFS的,只要开启
#mount –t nfs –o nolock 192.168.1.111: :/rootfs /mnt,但是zedboard提供的demo系统的内核并没有开启NFS的支持具体可以通过/proc/filesystems中有没有nfs相关的内容,执行cat /proc/filesystems | grep nfs,没有找到nfs相关的内容证明内核没有开启对nfs的支持,接下来我们就需要手动配置一下内核,开启nfs支持:
内核下载地址https://github.com/Digilent/linux-digilent/releases,3.3版本的。
1:解压源码:
tar -xvzf linux-digilent-3.3.0-digilent-12.07-zed-beta.tar.gz
2.配置内核源码
进入解压的目录,在arch/arm/configs/目录下有这个配置文件 digilent_zed_defconfig (不用我们设置,执行下面的命令他会自己寻找。)
make ARCH=arm digilent_zed_defconfig
必须在这个文件的基础上进行修改,
make menuconfig 报错
这是因为make menuconfig是要调用libncurses5-dev这个库的,安装这个库,
apt-get install libncurses5-dev 完成后,make menuconfig
你可以看下.config,他是没有关于NFS的信息的,就是没有开启。
退出保存后 vim .config ,查找CONFIG_NFS可以看到,这个就是刚刚新增加的。
Make menuconfig所做的修改会保存在.config文件中。
编译成功后,在arch/arm/boot下找到zImge,有2.72m,果然是大了很多。拷贝到sd卡,启动系统,执行cat /proc/filesystems |grep nfs, 可以看到:
mount -t nfs 202.38.214.215:/nfs /mnt -oproto=tcp -o nolock
解挂载的时候输入
umount /mnt注意,这里pc机是nfs服务的提供者,zedboard上的nfs是客户端,所以是把pc机上的目录挂载到zedboard上的linux文件系统中的目录。
上面的命令就是电脑的ip是202.38.214.215 提供的挂载路径是/nfs,我们需要把电脑上的路径挂载到板子上的/mnt目录下。于是,在/mnt下可以看到挂载路径的东西了。
本次主要参考tiny6410的手册和openhw12的一些博客。