原创 ubuntu nfs配置

2008-12-28 22:35 2674 0 分类: MCU/ 嵌入式

    以前配置好了NFS,不过很久都没用.因我自己做的jffs2文件系统出了问题,经过多次的写-删除操作后不能再写入了,以前一直是在一个目录下下载/删除试验程序,每次下载的程序文件都会删除并下重新下载新编译的程序,也就是说开发板系统并没有增加文件,但是现在下载程序文件或mkdir时都提示没有空间了.可能是文件系统有点问题.


    所以觉得还是通过NFS连到主机开发测试方便,主机编译好的程序不需要下载到开发板,这样既方便不少,又减少了读写FLASH的次数,有利于延长FLASH的寿命.而且相对于下载到RAM里重启丢失,NFS的文件在主机不受影响.


    今天挂载NFS的时候没有成功,出现了各种错误,有网络连的问题,这一方面可能是我现在换了主板而虚拟机系统仍是另一台主板上安装的那个系统,因两个主板的网卡不同可能引起这些问题.另一方面以前是直接用网线连接主机可开发板,而现在是使用一个路由器连接,这样解决了主机连接开发板就不能上网的问题.但是因原来的IP是192.168.10.X,而现在的路由器设置的是192.168.1.X,网段不同了.主机系统的配置文件需要更改.


    由于上次配置的时间有点久了,都忘了怎么弄了.网上这方面的文章很多,于是把我的配置过程记录下来作为备忘吧,免得下次又要到处查文章.


1. sudo apt-get install nfs-kernel-server
会自动安装nfs-common和portmap

2. 配置portmap:
    2.1. 编辑/etc/default/portmap, 将 -i 127.0.0.1 去掉.
    2.2. 配置/etc/hosts.deny,禁止任何host能和你的NFS服务器进行NFS连接,加入:
        --------------------------------------------------
        ### NFS DAEMONS
        portmap:ALL
        lockd:ALL
        mountd:ALL
        rquotad:ALL
        statd:ALL
        --------------------------------------------------
    2.3. 配置/etc/hosts.allow,允许那些你想要的主机和你的NFS服务器建立连接。
    下列步骤将允许任何IP地址以192.168.1开头的主机(连接到NFS服务器上),也可以指定特定的IP地址。加入:
        --------------------------------------------------
        ### NFS DAEMONS
        portmap: 192.168.1.110
        lockd: 192.168.1.110
        rquotad: 192.168.1.110
        mountd: 192.168.1.110
        statd: 192.168.1.110
        --------------------------------------------------

3. 配置/etc/exports
    要将/work/armnfs目录让192.168.1.*的IP共享, 则在该文件末尾添加下列语句:
    /work/armnfs    *(rw,sync,no_root_squash)
    运行 $ sudo exportfs -r 更新。
    --------------------------------------------------
    这里如果指定ip范围,mount测试的时候得到"权限不够"的错误   
   /work/armnfs    192.168.1.*(rw,sync,no_root_squash)
    --------------------------------------------------
   
4. 运行 $ showmount -e 查看NFS server的export list.

5. 运行 $ sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务

6. 测试NFS
可以尝试一下挂载本地磁盘(假设本地主机IP地址为:192.168.1.100,将/work/armnfs挂载到/mnt)
$ sudo mount 192.168.1.100:/work/armnfs /mnt
运行 $ df 看看结果
$ sudo umount /mnt

注意被拷贝文件的读/写权限!
另外, 可以使用一定的参数:
使用加参数的办法:mount -o nolock,rsize=1024,wsize=1024,timeo=15 192.168.2.130:/tmp/ /tmp/


    我用开发板挂载的时候发现需要加上-o nolock参数,使用如下命令:


mount -o nolock -t nfs 192.168.1.101:/work/armnfs /tmp


挂载时的一些错误如下:


[root@(none) /]# mount -t nfs 192.168.1.101:/work/armnfs /tmp
mount: 192.168.1.101:/work/armnfs fanfs warning: mount version older than kernel


NFS: mount program didn't pass remote address!
iled, reason given by server: Permission denied
mount: nfsmount failed: Bad file descriptor
mount: Mounting 192.168.1.101:/work/armnfs on /tmp failed: Invalid argument
[root@(none) /]# mount -t nfs 192.168.1.101:/work/armnfs /tmp
nfs warning: mount version older than kernel
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
lockd_up: makesock failed, error="-5"
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
[root@(none) /]# mount -t nfs 192.168.1.101:/work/armnfs /tmp
nfs warning: mount version older than kernel
mount: Mounting 192.168.1.101:/work/armnfs on /tmp failed: Device or resource bu
sy


 


最后还是成功了,好像就是加了-o nolock参数的原因:


[root@(none) /]# ifconfig eth0 192.168.1.110
[root@(none) /]# mount -o nolock -t nfs 192.168.1.101:/work/armnfs /tmp
nfs warning: mount version older than kernel


用df命令查看:


[root@(none) tmp]# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/root                31744     31624       120 100% /
tmpfs                    31192         0     31192   0% /dev/shm
192.168.1.101:/work/armnfs  9282016   1095352   7715160  12% /var/tmp

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
0
关闭 站长推荐上一条 /2 下一条