首先 mkdir /home/a123/nfsroot 建立一个nfsroot共享目录
1)nfs 安装
apt-get install nfs-kernel-server
(2)
编辑/etc/exports
/home/a123/nfsroot *(insecure,rw,async,no_root_squash)
/home/a123/nfsroot 是共享目录的路径
括号中的4个参数都是说明共享目录的属性
(3)
关掉防火墙
sudo iptables -F
(4)
重启nfs
sudo /etc/init.d/nfs-kernel-server restart (网上有人说这两个启动顺序不能相反。要先启动下面)
sudo /etc/init.d/rpcbind restart
(5)
在ubuntu测试
sudo mount 192.168.2.101:/home/a123/nfsroot /mnt
这里的IP地址为nfs服务器的地址,就是ubuntu虚拟机的IP地址
(备注:/home/a123/nfsroot 是共享目录的路径
/mnt 共享目录的挂载点)
(6)
开发板上挂载:
1 设置虚拟机与本地机的网络模式为桥接
2 开发板与本地机的连接用交叉网线
3 设置本地机,虚拟机,开发板的网络在同一个网段中
ping一下能通
4.mkdir /mnt/nfs
挂载命令:(开发板上操作)
# mount -o nolock,rw -t nfs 192.168.2.101:/home/a123/nfsroot /mnt/nfs
(备注:192.168.1.200 是ubuntu的ip地址,/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
今天,用开发板通过nfs挂载主机,想从主机上面拷贝一些资料,可是竟然出现:nfs:server is not responding,still trying , 我用的是友善之臂的mini2440,操作系统使用的是Ubuntu8.04。
本来还以为是nfs出了故障,但是google了一下发现原来不是nfs的原因,而是由于传送的数据太大,出现数据包丢失现象。
NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。可用的解决方案是:在客户端改用TCP协议,使用下面的命令,
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.0.121:/主机nfs目录 /挂载路径
注意:中间使用的是逗号,而非英文中的句号。
---------------------------------------------------以下方法也可以解决-----------------------------------------------------------------------
原来nfs默认是用udp协议传输的,所以你在主机复制很多或者很大的文件给目标板时,很可能做成包的丢失。
解决方法
目标板下:mount -t nfs -o nolock -o tcp 192.168.1.121:/root/share /host
以后复制文件一般都很稳定了