nfs实现开发板与虚拟机linux系统间文件共享

来源:互联网 发布:python去除空格 编辑:程序博客网 时间:2024/04/20 21:32

为实现宿主机上交叉编译后的应用程序能方便的下载到嵌入式开发板上运行,一般通过在开发板上采用网络挂载虚拟机nfs文件系统实现,虚拟机充当nfs server,目标板充当nfs client。

实验环境:宿主机是虚拟机centos5.6,目标机是mini2440上的linux,这里我用交叉网线来连接。

一 要在虚拟机安装nfs服务器

1 需要安装下面两个文件
# rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm portmap-4.0-54.i386.rpm

若没有安装包这可以:

yum install   nfs-utils   portmap
portmap监控程序只是定向RPC通信数据流,使NFS客户机找到从NFS服务器共享的目录。

2  配置nfs,设置输出的共享目录

#mkdir /home/chen/mini2440share

# vim /etc/exports 
这里我只是简单的设置

/home/chen/mini2440share   *(rw,sync,no_root_squash)

然后,生效配置文件

# exportfs -rv
exporting *:/home/chen/mini2440share

起动nfs 

# /etc/init.d/portmap restart
       # /etc/init.d/nfs restart

注意起动顺序不可乱,先起动portmap再起动nfs

二 实现虚拟机与开发板连接

1 设置虚拟机与本地机的网络模式为桥接

2 开发板与本地机的连接用交叉网线

3 设置本地机,虚拟机,开发板的网络在同一个网段中

在这里我设置为(本地机:192.168.2.105  虚拟机:192.168.2.119  开发板:192.168.2.118)

ping一下,能通,嗯,成功在向你招手

三 从超级终端里连接开发板,然后挂载nfs文件系统:

# mount -o nolock,rw -t nfs 192.168.2.119:/home/chen/mini2440share    /mnt/nfs

要加参数:-o nolock(一开始,我没加,就挂载不了,老是提示超时)

注意事项:

【1】 NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。则终端会出现:nfs:server is not responding,still trying提示信息

解决方案是:在客户端改用TCP协议,使用下面的命令,
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.0.121:/主机nfs目录 /挂载路径 

下面是一些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_squash:root用户具有根目录的完全管理访问权限 
anonuid=xxx:指定NFS服务器/etc /passwd文件中匿名用户的UID 
anongid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的GID


参考文章

关于mount nfs时-o nolock的问题
0 0