zoukankan      html  css  js  c++  java
  • Ubuntu 12.04 LTS 及ubuntu14.10 -- NFS安装

    在Linux 服务器上配置好NFS 根文件系统后,在单板侧挂载NFS 文件系统,具体操作
    如下:
    ifconfig eth0 hw ether 00:10:85:18:01:84 /*配置MAC地址*/
    ifconfig eth0 10.85.180.184 netmask 255.255.254.0 /*配置IP地址和子网掩码*/
    route add default gw 10.85.180.1 /*配置默认网关*/
    mount -t nfs -o nolock 10.85.180.133:/home/c54122/glibc-nfs /mnt /*挂
    载NFS目录至JFFS2文件系统的mnt目录下*/
     
    参考文档:
    http://www.cnblogs.com/hicjiajia/archive/2012/07/09/2583683.html
    http://www.54xue.com/w/96/n-34196.html
    http://blog.csdn.net/michaelyue526/article/details/7668008
    1.安装NFS
         nfs原理是通过网络,将远程主机共享的文件系统,挂载到本机。Ubuntu 12.04上默认是没有安装NFS服务器的,首先要安装NFS服务程序:
       #  sudo apt-get install nfs-kernel-server
    (安装nfs-kernel-server时,apt会自动安装nfs-common和portmap) 这样,宿主机就相当于NFS Server。

    2   宿主机NFS的配置
       2.1  修改配置文件/etc/exports
              在终端下用 # vi  /etc/exports打开exports文件。
              如果你没有配置过这个文件的话此文件应该是空的。
          在开始部分写入 /opt/nfsroot * (rw,sync,no_root_squash)
          /opt/nfsroot/  -- 与客户机共享的目录;
         *        -- 表示允许任意用户使用,也可以使用具体IP;
        (rw,sync,no_root_squash)  -- rw,挂载此目录的客户机对此目录有读写权利;
        sync,……;
        no_root_squash,挂载此目录的客户机享有主机root的权利;
        我是将主机的根目录设置为共享目录  /  *(rw,sync,no_root_squash)
        OK,保存,退出。
        修改完成之后输入:#  exportfs –rv来使配置文件生效
      2.3   启动宿主机NFS服务
             安装完NFS服务后就可以通过 #  /etc/init.d/nfs-kernel-server restart(/etc/init.d/nfs-kernel-server                start)来重新开启网络文件系统服务,以便后面的开发板挂载。也可以通过#  /etc/init.d/nfs-kernel-server          stop来停止。

    3   目标板的挂载操作
          目标机上电,目标板上的Linux操作系统起来以后,在PC机上Ubuntu操作系统上打开minicom,通过串口向目       标板发送shell命令。
          像主机操作一样,首先检查目标板(宿主机)的IP是否与宿主机的IP再同一个地址段上,否则用上面用过的命令         进行检查和设置本地IP。
         设置完IP之后可以ping一下检查网卡、网线是否连接正确。
         既在minicom中输入# ping 192.168.1.101 (宿主机IP地址)连接成功会不断的打印信息。
         接下来就是在开发板上进行挂载mount
        # mount  -onolock 192.168.1.101:/opt/nfsroot    /mnt 
        其中:/opt/nfsroot 是 宿主机的共享目录;  /mnt是开发板的挂载目录

        如果你想取消挂在可以使用命令# umount  /mnt就可以了

    其它nfs常用的参数有:

    ro 
    只读访问 
    rw 读写访问sync 所有数据在请求时写入共享 
    async 
    nfs在写入数据前可以响应请求 
    secure 
    nfs通过1024以下的安全TCP/IP端口发送 
    insecure 
    nfs通过1024以上的端口发送 
    wdelay 
    如果多个用户要写入nfs目录,则归组写入(默认) 
    no_wdelay 
    如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。 
    hide 在nfs共享目录中不共享其子目录 
    no_hide 
    共享nfs目录的子目录 
    subtree_check 
    如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认) 
    no_subtree_check 
    和上面相对,不检查父目录权限 
    all_squash 
    共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 
    no_all_squash 
    保留共享文件的UID和GID(默认) 
    root_squash 
    root用户的所有请求映射成如anonymous用户一样的权限(默认) 
    no_root_squas 
    root用户具有根目录的完全管理访问权限 
    anonuid=xxx 
    指定nfs服务器/etc/passwd文件中匿名用户的UID 
    anongid=xxx 
    指定nfs服务器/etc/passwd文件中匿名用户的GID

    3、重启服务 
    $sudo /etc/init.d/portmap restart 
    $sudo /etc/init.d/nfs-kernel-server restart

    4、测试nfs 
    此时可以运行以下命令来显示一下共享出来的目录: 
    $showmount -e

    关于NFS配置错误

     

    ubuntu测试本机nfs出错:mount.nfs:access denied by server while mounting...

    相信出现这种错误的应该有一些人吧,没关系,一会就帮你搞定。 
    首先运行:sudo vim /etc/exports 
    在其文本后添加 
    /home/work 192.168.1.*(rw,sync,no_root_squash) 
    然后保存退出。

    注意,上面的主机IP可能不能使用*来通配,否则在客户机上会出现访问拒绝,但是如果我们要设置局域网访问呢?怎么办,使用子网掩码例如:10.1.60.0/255.255.254.0即可让10.1.60.*和10.1.61.*都可以访问,还可以使用10.1.60/23这种方式类确定子网。

    上面设置了只要在192.168.1.*这个网段的所有IP地址用户都可以访问共享目录,但我只想让一个IP地址访问,比如 192.168.1.101(把刚才192.168.1.*直接换成192.168.1.101不行么?应该可以吧,没试过),那么就可以这样设置了。 
    可以通过设定/etc/hosts.deny和/etc/hosts.allow文件来限制网络服务的存取权限。 
    ***/etc/hosts.deny*** 
    portmap:ALL 
    lockd:ALL 
    mountd:ALL 
    rquotad:ALL 
    statd:ALL 
    ***/etc/hosts.allow*** 
    portmap:192.168.1.101 
    lockd:192.168.1.101 
    mountd:192.168.1.101 
    rquotad:192.168.1.101 
    statd:192.168.1.101 
    同时使用这两个文件就会使得只有ip为192.168.1.101的机器使用NFS服务。你的target 
    board的ip地址设定为192.168.1.101,这样就可以了。
     
     
    启用新的配置

      exportfs 指令主要的三个作用:

      1. exportfs -rv 重新读取共享配置文件,马上生效

      2. exportfs -auv 马上停止所有本机上的NFS共享,并不改变 /etc/exports 文件的内容,只是当前停止共享

      3. exportfs -av 显示所有当前机器上的NFS共享目录信息

    我的/etc/exports 文件:
    # /etc/exports: the access control list for filesystems which may be exported
    #        to NFS clients.  See exports(5).
    #
    # Example for NFSv2 and NFSv3:
    # /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
    #
    # Example for NFSv4:
    # /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
    # /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
    #/home/yingc/work *(rw,async,no_root_squash)

    /home/yingc/work/durian/solution/output *(rw,async,no_root_squash)
    /home/yingc/work/durian1/solution/output *(rw,async,no_root_squash)
    /home/yingc/work/durian/buildroot/package/netscript/sbin1 *(rw,async,no_root_squash)
    #
     
    开发板中自启动脚本挂载文件:
    ############################################################                    
    # mount host dir                                                                
    ############################################################                    
    mount -t nfs -o rw,nolock,udp 192.168.110.10:/home/yingc/work/durian/solution/ob
                                                                                    
    mount -t nfs -o rw,nolock,udp 192.168.110.10:/home/yingc/work/durian/buildroot/t
         
     
    ubuntu14.10的相关配置:
    yingc@yingc:~$ sudo apt-get install portmap
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    注意,选取 rpcbind 而非 portmap
    
    sudo apt-get install nfs-kernel-server
    sudo vim /etc/exports
    
    添加:
    /opt/nfs  *(rw,sync,all_squash,no_subtree_check)
    注意:使用上面这个,碰到了权限问题,开发板上不能创建文件等,
    但是在pc的对应目录上可以直接创建(不需要sudo权限)
    此时可以使用:
    /opt/nfs *(rw,async,no_root_squash)
    
    再restart即可:
    sudo /etc/init.d/nfs-kernel-server restart
    
    一个奔跑的程序员
  • 相关阅读:
    第七章 心得体会
    第六章心得体会
    第五章心得体会
    学习第四章Android移植环境搭建心得体会
    学习Android移植平台工具介绍的心得体会
    第二章安卓系统与嵌入式开发的心得体会
    学习第一章 Android系统的编译和移植实例后的心得体会
    嵌入式Linux的调试技术
    让开发板发出声音:蜂鸣器驱动
    硬件抽象层:HAL
  • 原文地址:https://www.cnblogs.com/jingzhishen/p/3163742.html
Copyright © 2011-2022 走看看