环境:win10
开发板:全志A33
Ubuntu版本:ubuntu-gnome-16.04-desktop-amd64,gnome版
-------------------------------------------------------------------------------------
IP地址:
PC:169.254.247.140
A33:169.254.247.139
Ubuntu:169.254.247.138
首先保证开发板和Ubuntu能互ping,具体配置见:A33-通过网线连接PC(Ubuntu、PC、A33).note
NFS(Network FileSystem,网络文件系统)是由SUN公司发展,并于1984年推出的技术,用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。NFS设计之初就是为了在不同的系统间使用,所以它的通讯协议设计与主机及操作系统无关。
NFS分服务器和客户机,当需要使用远端文件时,只要用mount命令就可把远端NFS服务器上的文件系统挂载在本地文件系统之下,操作远程文件与操作本地文件没有不同。NFS服务器所共享文件或目录记录在/etc/exports文件中。
嵌入式Linux开发中,会经常使用NFS,目标系统通常作为NFS客户机使用,Linux主机作为NFS服务器。在目标系统上通过NFS,将服务器的NFS共享目录挂载到本地,可以直接运行服务器上的文件。在调试系统驱动模块以及应用程序,NFS都是十分必要的,并且Linux还支持NFS根文件系统,能直接从远程NFS root启动系统,这对嵌入式Linux根文件系统裁剪和集成也是十分有必要的。
1. Ubuntu端启用NFS
1)安装NFS
执行:sudo apt-get install nfs-kernel-server
2)配置NFS
修改/etc/exports文件,在其中增加需要共享的NFS服务器目录。 一个NFS服务器可以共享多个NFS目录,在/etc/exports文件中,每个目录的设置独占一行。
格式:NFS共享目录路径 客户机IP或者名称(参数1,参数2,...,参数n)
参数:
参数 |
说明 |
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 |
这里设置/home/baoli/nfs 为共享目录,修改/etc/exports文件,增加:
/home/baoli/nfs *(rw,sync,no_subtree_check,no_root_squash,insecure)
保存退出。
重启portmap,执行:sudo service portmap restart
重启nfs,执行:sudo service nfs-kernel-server restart
2. 本机测试
执行:sudo mount -t nfs 127.0.0.1:/home/baoli/nfs /mnt
在nfs下执行:touch test
在/mnt下可看到新建的test文件。
3. 开发板测试
开发板通过网线连接到PC,配置好IP,且超级终端连接开发板。
1)挂载NFS共享目录
先在/mnt/下新建baoli_nfs 目录
执行:mount -t nfs 169.254.247.138:/home/baoli/nfs /mnt/baoli_nfs -o nolock
提示错误如下:
mount: mounting 169.254.247.138:/home/baoli/nfs on /mnt/baoli_nfs failed: Protocol not supported
原因:内核没有配置支持NFS client。
解决:配置内核重新烧录。
File systems ---> [*] Network File Systems --->NFS client support
烧写完内核镜像后,再次测试
执行:mount -t nfs 169.254.247.138:/home/baoli/nfs /mnt/baoli_nfs -o nolock
执行:ls /mnt/baoli_nfs 可查看到test文件。
2)测试:
在超级终端下:
切换到 /mnt/baoli_nfs ,执行vi test
输入hello world ,保存退出
在Ubuntu下:
切换目录到/home/baoli/nfs,执行vim test
可看到hello world