嵌入式技术
在实验室里找到了一个主控是s5pv210的智能车,主板是友善之臂的早期产品smart210
里面介绍了一种通过nfs挂载,来传输文件的方式
通常传送文件一般是通过 ftp 传送文件,或者串口传送文件
不过所谓NFS(Network File System)是网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
他可以节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
下面我来介绍一下我的挂载过程。
打开虚拟机
如果有必要可以先获取root权限
首先Ubuntu是没有NFS的相关程序的,需要进行NFS安装
sudo apt-get install nfs-kernel-server
并建立一个nfs服务的专有的文件夹
mkdir -p /opt/FriendlyARM/mini210/linux/rootfs_mini210 设置读写权限
# chmod 777 /opt/FriendlyARM/mini210/linux/rootfs_mini210
建立好文件夹后,接着执行命令:
sudo vi /etc/exports
来配置nfs
在最后一行添加:
/opt/FriendlyARM/mini210/linux/rootfs_mini210 *(sync,rw,no_root_squash)
这一行的含义是:
/opt/FriendlyARM/mini210/linux/rootfs_mini210:与nfs服务客户端共享的目录,这个路径必须和你前面设置的文件的路径一致!
*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权限
如果还希望共享其他目录可以在后面添加
例如
这里多了个insecure,这个我们等一下再说
修改完上述配置文件保存退出。
我用的是zz的vi,按esc进入命令行模式,
:wq
保存退出
重启rpcbind服务。
# /etc/init.d/rpcbind restart
重启nfs服务。
# /etc/init.d/nfs-kernel-server restart
如果以后你增加了新的地址,rpcbind和nfs需要再次重启
可以通过本机挂载nfs来测试一下
# mkdir /mnt/nfs# mount 192.168.2.3:/opt/FriendlyARM/mini210/linux/rootfs_mini210 /mnt/nfs# ls /mnt/nfs
请注意opt/FriendlyARM/mini210/linux/rootfs_mini210和/mnt/nfs之间有一个空格
可以通过umount解除挂载
可以看到nfs中已经没有之前的文件了
如果显示 device busy
可输入
umount -l /mnt/nfs
选项 –l 并不是马上umount,而是在该目录空闲后再umount。
这样nfs挂载就搭建好了,但是这样个情况下并不能用smart210正常挂载
因为你可能并没有将电脑 开发板 虚拟机三者ping通
首先相互ping一定是在统一网段内
Ping之前请关闭电脑防火墙和杀毒软件
我的笔记本只有一个网口,所以将他与开发板通过网线连接
我们先看一下目前的ip地址,一般你的也是192.168.1.x
这个是通过wifi获得的,如果你和我一样用的是笔记本,
你不能使用这个网段,建议你换一个像 192.168.2.x ,
这是因为电脑的两个网卡都要工作,必须互不干扰。
我们假设使用 192.168.2.x 这个网段,
网关:192.168.2.1
电脑IP : 192.168.2.2
虚拟机:192.168.2.3
开发板:192.168.2.4
下面分配IP,分配ip要根据实际情况来,如果你的路由器还有其他人在使用的话可以选取靠后一点的ip,防止ip冲突。
先设置电脑的静态IP
控制面板网络和 Internet网络连接
设置ip地址为192.168.2.2
别忘了要关闭你的防火墙哦
设置开发板的IP地址
Smart在烧录好系统后有现成的软件,可以直接更改
设置虚拟机ip
更改设置
还原为默认设置后,再进行相关设置
虚拟机设置中将网络设置为vmnet0
进入虚拟机
设置虚拟机IP、子网掩码、网关,最后点击Apply应用
设置完成后通过ifconfig查看当前的ip地址
别忘了通过
ufw disable
关闭防火墙
在smart210上也有现成的ping测试软件
可以试一下是否能ping通
如果能ping通就可以尝试挂载了
连接通过网线和串口线连接开发板
虚拟机已经重启过nfs后
在开发板命令界面中输入
#mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.2.2:/tftpboot /mnt为什么如此复杂。。。因为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目录 /挂载路径
如果出现类于
mount.nfs: access denied by server while mounting 192.168.3.12:/home/lzgonline/rootfs
首先考虑权限设置有问题,需要将权限设为777
如果文件夹权限都设为777了,那权限上没问题
那是因为
如果端口号大于1024,则需要将 insecure 选项加入到配置文件(/etc/exports)相关选项中mount客户端才能正常工作
为什么不能大于1024呢?
secure 选项要求mount客户端请求源端口小于1024(然而在使用 NAT 网络地址转换时端口一般总是大于1024的),默认情况下是开启这个选项的,如果要禁止这个选项,则使用 insecure 标识
全部0条评论
快来发表一下你的评论吧 !