xzy610030

一起探讨,一起进步,一起分享!

zedboard--网络文件系统NFS的使用(二十五)

0
阅读(2897)

使用本开发板做开发,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的一些博客。