Ubuntu搭建NFS,在Smart210挂载

嵌入式技术

1367人已加入

描述

在实验室里找到了一个主控是s5pv210的智能车,主板是友善之臂的早期产品smart210

里面介绍了一种通过nfs挂载,来传输文件的方式

通常传送文件一般是通过 ftp 传送文件,或者串口传送文件

不过所谓NFS(Network File System)是网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

他可以节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。

下面我来介绍一下我的挂载过程。

打开虚拟机

如果有必要可以先获取root权限

Ubuntu

首先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)

Ubuntu


这一行的含义是:

/opt/FriendlyARM/mini210/linux/rootfs_mini210:与nfs服务客户端共享的目录,这个路径必须和你前面设置的文件的路径一致!

*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权限

如果还希望共享其他目录可以在后面添加
例如
 

Ubuntu



这里多了个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之间有一个空格

Ubuntu



可以通过umount解除挂载

Ubuntu


可以看到nfs中已经没有之前的文件了

如果显示 device busy
可输入

umount -l /mnt/nfs
选项 –l 并不是马上umount,而是在该目录空闲后再umount。




这样nfs挂载就搭建好了,但是这样个情况下并不能用smart210正常挂载
因为你可能并没有将电脑 开发板 虚拟机三者ping通

首先相互ping一定是在统一网段内
Ping之前请关闭电脑防火墙和杀毒软件

我的笔记本只有一个网口,所以将他与开发板通过网线连接

我们先看一下目前的ip地址,一般你的也是192.168.1.x

Ubuntu


这个是通过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网络连接
 

Ubuntu


 

Ubuntu



 

Ubuntu



 

Ubuntu


 

设置ip地址为192.168.2.2

别忘了要关闭你的防火墙哦

Ubuntu


 

设置开发板的IP地址
Smart在烧录好系统后有现成的软件,可以直接更改
 

Ubuntu



 

设置虚拟机ip
 

Ubuntu



更改设置
 

Ubuntu



还原为默认设置后,再进行相关设置
 

Ubuntu




虚拟机设置中将网络设置为vmnet0

Ubuntu




进入虚拟机

Ubuntu



 

Ubuntu



设置虚拟机IP、子网掩码、网关,最后点击Apply应用
 

Ubuntu



设置完成后通过ifconfig查看当前的ip地址
 

Ubuntu


别忘了通过

ufw disable

关闭防火墙


在smart210上也有现成的ping测试软件
可以试一下是否能ping通


如果能ping通就可以尝试挂载了
连接通过网线和串口线连接开发板

 

Ubuntu



虚拟机已经重启过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 标识
 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分