当前位置: 首页 > 工具软件 > BeagleBoard > 使用案例 >

ubuntu下beagleboard-XM 挂载NFS服务

井学
2023-12-01

     进行嵌入式 Linux 开发,NFS(Network FileSystem)方式应该是最常用的开发方式了。主机开启 NFS 服务,作为 NFS 服务器,目标板作为 NFS 客户端,目标板通过 NFS 方式,将主机 NFS 服务器目录挂载到本地系统,像操作本地文件一样操作远程机器的文件。对主机的要求,硬件方面,要求有串口和网口;软方面,操作系统推荐使用主流发行版,如 ubuntu 等,还需要安装开发相关的软件,同时还需要其它的软件如交叉编译器等。

    NFS 即网络文件系统(Network File-System),可以通过网络,让不同机器、不同系统之间可以实现文件共享。通过NFS,可以访问远程共享目录,就像访问本地磁盘一样。NFS只是一种文件系统,本身并没有传输功能,是基于 RPC(远程过程调用)协议实现的,采用C/S架构。

    嵌入式 Linux 开发中,通常需要在主机上配置 NFS 服务器,将某系统特定目录共享给目标系统访问和使用。通过 NFS,目标系统可以直接运行存放于主机上的程序,可以减少对目标系统FLASH 的烧写,既减少了对 FLASH 损害,同时也节省了烧写 FLASH 所花费的时间。 

一、ubuntu中设置NFS服务器

1、安装NFS软件包
如果用户的 Linux 系统上未安装有 NFS 相关软件包,则可以在系统联网的情况下通过下面的终端命令进行安装:
sudo apt-get install nfs-kernel-server 安装NFS服务

sudo apt-get install nfs-common 安装NFS客户端

2、添加beagleboard-XM的NFS目录 添加NFS目录 

在/home/li/文件下新建一个共享目录bbxm

mkdir bbxm-nfs

安装完 NFS 服务器等相关软件后,需要指定用于共享的 NFS 目录,其方法为在/etc/exports 文件里面设置对应的目录及相应的访问权限,每一行对应一个设置。下面介绍如何添加NFS 目录。

sudo gedit /etc/exports 可通过gedit打开/etc/exports文件。
修改/etc/exports 文件,在其中增加 NFS 目录并指定访问主机的IP 以及访问权限。 如增加/home/li/bbxm-nfs 目录。
在最后一行添加:/home/li/bbxm-nfs *(rw,sync,no_root_squash,no_subtree_check)

前面那个目录是与nfs服务客户端共享的目录,*代表允许所有的网段访问(也可以使用具体的IP)
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:客户机用root访问该共享文件夹时,不映射root用户。(root_squash:客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户)
no_subtree_check:不检查父目录的权限。

3、启动NFS服务
sudo /etc/init.d/nfs-kernel-server start或者 restart命令,可以启动或者重新启动NFS 服务:
sudo /etc/init.d/nfs-kernel-server start
在NFS 服务已经启动的情况下,如果修改/etc/exports了文件,可以重启NFS 服务,刷
新NFS 共享目录,或者输入 exports -rv命令重新导出 NFS 共享目录。
chenxibing@linux-compiler: ~$ sudo exportfs -rv

4、测试NFS服务器
首先可以在主机上进行自测,将已经设定好的NFS共享目录mount到另外一个目录下(既可以是Linux主机的目录也可以是目标板 Linux 系统的目录),看能否成功。

1) Linux 主机自测试
假定Linux主机IP为 192.168.1.4,NFS共享目录为/home/li/bbxm-nfs
可使用如下命令进行测试: 

sudo mount -t nfs 192.168.1.4:/home/li/bbxm-nfs /mnt
如果指令运行没有出出错,则 NFS 挂载成功,在/mnt 目录下应该可以看到/home/li/bbxm-nfs目录下的内容。 

2) beagleboard  Linux 系统挂载 NFS 测试
      在 Linux 主机上测试通过后,则可以在beagleboard Linux 系统上进行测试,若用户在目标板上挂载成功 NFS,则用户以后可以轻松地使用此方法来验证所开发的 Linux 应用程序。在目标板上测试 NFS 的步骤如下:
首先,在目标板掉电的条件下,给目标板接上调试串口线、网线以及 USB 鼠标。将beagleboard板的 DUART 通过串口线与 PC 机的串口相连,在 PC 机中打开串口终端监听串口数据,通过 DUART 可以在串口终端上配置目标 Linux 系统的相关参数。将beagleboard板通过网线与 Linux 主机相连或接入局域网,当目标板与 Linux 主机直接相连时,
若 Linux 主机网卡不支持以太网端口 MDI/MDIX 自适应特性,则需要采用交叉网线来连接。USB 鼠标需要在系统启动前接入目标板,否则可能导致进入 QT 界面后无法使用鼠标(Linux 系统支持 USB 鼠标的热插拔,但目前移植到目标板上的 QT 还不支持 USB 鼠标的热插拔)。然后给目标板上电,再设定目标板的 IP 地址并检查网络是否畅通。启动工控板并进入Linux。将目标板接入局域网或者通过交叉网线与主机直连,设定目标板的IP,使之与主机在同一网段,然后进行远程mount操作。

     在目标板 Linux 系统上挂载 NFS,要求目标板 Linux 系统的 IP 地址和 NFS 服务器(即Linux 主机)的 IP 地址能互相 ping 通,并且没有防火墙禁止 NFS 连接,为简单起见,建议将两个 IP 放在通一个局域网网段中。给beagleboard板系统上电后,登录后通过如下命令配置beagleboard Linux系统的IP地址(掉电不保存):

ifconfig eth0 192.168.1.100

在进行远程挂载之前,最好先用 ping命令检查网络通信是否正常,只有在能ping 通的情况下,才能进行正常挂载,否则请检查网络。如果在已经 ping 通的情况下,远程挂载出现错误,请检查主机和目标机的其它设置。IP 地址配置成功后可以通过如下命令检查目标系统与 Linux 主机的网络连接是否畅通:
 ping 192.168.1.4

注意:网络畅通后才能进行下一步操作,若网络不通,则需要检查相关网络设置。网络畅通时,可以在串口终端中看到 Linux 主机对 ping 命令的响应,按“Ctrl+C”组合键可以退出ping 命令测试。
接着,在目标 Linux 系统上挂载 NFS。beagleboard板与 Linux 主机系统网络畅通后,在beagleboard的串口终端中输入如下命令可将主机的 NFS 共享目录“”挂载到beagleboard系统的“/mnt”目录下:
mount -t nfs 192.168.1.4:/home/li/bbxm-nfs /mnt -o nolock
注意,执行mount命令时的当前路径(当前路径为主目录“~”)不能与挂载的目标路径相同,否则可能导致挂载失败。

NFS 在目标系统上挂载成功后,可以在串口终端中查看/mnt 目录下的文件信配置目标板息。

5、卸载已经挂载的目录

umount /home/li/bbxm-nfs

 类似资料: