zoukankan      html  css  js  c++  java
  • 嵌入式uClinux和Ubuntu9.10上NFS实验

    经历了两天的时间的NFS文件系统工作,终于在我的FPGA开发板DE2上的uClinux和Ubuntu9.10上做好了NFS文件系统,现在总结一下,便于以后自己的学习。

    一、理论篇

    1、什么是NFS?

         NFS是Network File System(网络文件系统)的缩写,最初是由Sun公司开发出来的分布式文件系统。提供NFS服务的一方是NFS Server(远程主机),使用NFS服务的一方是NFS Client(客户机)。利用它,客户机可以将远程主机提供的共享目录挂载到自己的目录上,在本地的操作如同对远程主机的操作。

    2、NFS的原理

         NFS有自己的协议与端口号(2049),它本身并没有提供传输资料的协议,但是NFS却能通过网络进行资料的共享。这是因为在资料传送或者其它相关数据交互的时候,NFS用远程过程调用(Remote Procedure Call, RPC)的传输协议。RPC服务portmap负责管理服务与相关端口映射的工作。因此,使用NFS服务必须先激活RPC服务portmap,在主机和目标机上都要实现RPC服务,才可以使用NFS。

    二、实践篇

    1、服务器(主机)上的配置

    参考的资源如下:

    简单介绍在Ubuntu 9.10 上成功配置NFS 过程

    Ubuntu 9.10 下ARM开发板的NFS挂载

    1.1、root下,配置NFS需要的软件包,命令如下:

         sudo apt-get install nfs-kernel-server nfs-common portmap

    1.2、配置portmap(其实这一步在Ubuntu里面可以省略),命令如下:

         sudo dpkg-reconfigure portmap 出现界面,选“否”

    1.3、配置挂载目录和权限,如下图所示:增加自己挂载的目录,这里为/home/nios2(当然之前你需要mkdir /home/nios2)

     

    rw:读写权限   ro:只读权限

    no_root_squash:如果是root使用共享目录,那么他的权限将被压缩成匿名者。

    sync:资料同步写入内存与硬盘中

    async:资料会暂存于内存当中,而不会直接写入硬盘

    前面的*表示任何ip段的客户机都可以访问共享文件。

    1.4、刷新重载一下exports文件

         sudo exportfs –r

    1.5、重新启动NFS服务

            /etc/init.d/portmap  restart

            /etc/init.d/ nfs-kernel-server restart

    1.6 、测试能否挂载本地的目录

            mount –t –nfs 192.168.1.110:/home/nios2 /mnt

            ls /mnt

    2

    同时,你也可以运用df命令来观察挂载的内容

    3

    你就可以发现/mnt目录下挂载了/home/nios2的内容。至此,主机上的配置就完成。

    2、目标机(嵌入式开发板FPGA开发板的配置)

    参考资源如下:

    嵌入式uClinux应用程序的NFS开发

    NFS File System(WIKI)

         由于我之前做过一个实验就是测试EtherNet的实验,在开发板和主机之前是相通的,并且开通了boa服务器,ftp服务器,所以硬件连接方面就没有问题。同时,由于我只是将主机和开发板直连,就不涉及到网关的概念啦!所以在开发板上就很容易就成功了!

    2.1、配置uClinux的内核,让它支持客户机NFS文件系统

    通过命令:make menuconfig进入内核配置界面,界面如下:

    4

    exit---exit---yes,进入到内核子界面,如下:进入File systems -> Network File Systems -->,选择如下图所示:

    5 

    之后,退出,进入下一个用户应用和库设定界面,Network Applications -->[*] portmap,如下图所示: 

    6

    之后,make,编译内核生成内核镜像,下载到开发板DE2上。

    2.2 下载开发板,挂载主机中的目录

    通过nios2-configure-sof DE2_NIOS2.sof和nios2-download –g zImage和nios2-terminal启动DE2开发板上的uClinux系统,关于开发板网络通信的实验稍后再写一篇文章吧!

    我们首先运行portmap命令和自己建立一个挂载的文件夹:

    portmap &

    mkdir /ff

    之后再将主机上/home/nios2的内容挂载到新建立的文件中,表示NFS文件系统挂载成功。如下图所示

    7

    可以看到新建立的ff里面有了/home/nios2里面的东西,说明成功啦!但是,我们第一次的命令出现RPC错误,可能是硬件上碰了一下吧,一般都会成功的。

    2.3、测试软件代码是否运行成功。

    上面的hi.c就是在Ubuntu里面利用下面命令生成的hi可执行文件,这个文件在Ubuntu里面是执行不了,引用用的编译命令是nios2-linux-uclibc-gcc,不是linux下的命令,是一种

    交叉命令。

    nios2-linux-uclibc-gcc hi.c -o hi –elf2flt

    8 

    总结:

    1、理论上其实没有多少难点,关键在于首先要虚心看懂理论,切勿盲目开始做,因为你很有可能网上搜到的资料都不适合你的开发环境,所以理论知识很重要,需要静下心来学习。

    2、内核编译切勿乱添加东西,之前,我添加了一个客户机根目录NFS系统文件,后来,发现连/etc/rc里面的网卡配置都不好用,让我弄了一个多晚上,最终找到原因啦。这里,如果你想一启动就挂在的话,就把上面的命令添加到/etc/rc里面,就可以啦!

    3、linux之路还有很长的路,下次准备做一下web服务器的实验,boa好像自带就有,希望自己搭建一个socket的服务器。

  • 相关阅读:
    商业智能领域需要了解的数据库优化理论
    动态监听与静态监听(转载)
    Oracle查看表结构的几种方法
    PLSQL Developer使用技巧整理
    Oracle数据库的三种验证机制
    EAV模型
    三门问题
    第一个python实例程序
    type()
    pi
  • 原文地址:https://www.cnblogs.com/yingfang18/p/1985177.html
Copyright © 2011-2022 走看看