nfs网络文件系统挂载(虚拟机&开发板)

NFS 概要

网络文件系统,常被称为 NFS(Network File System),它是一种非常便 捷的在服务器与客户端通过网络共享文件的方式,
 开启了 NFS 服务后,客户端访问服务器共享的文件时如同访问本地存储器(磁盘/SD卡/NAND FLASH等)上的文件一样,对于上层应用来说没有任何差别,在嵌入式开发时,我们常常利用这个特性在主机上共享文件,主要应用场景如下:

  • 在 NFS 服务器上编译应用软件,客户端(开发板)通过 NFS 访问并运行应用程序进行测试。
  • 把 NFS 作为根文件系统来启动
ubuntu虚拟机配置
网络配置

NFS服务器程序安装在虚拟机中,虚拟机的网络配置改成 “桥接网卡” 模式,并配置虚拟机静态ip,保证虚拟机、主机、开发板三个设备在同一网段并能相互ping通,但是这种配置无法联网,本次配置网络ip如下:

  • 开发板:192.168.1.230
  • 主机: 192.168.1.105
  • 虚拟机:192.168.1.10
创建共享目录
mkdir /mnt/nfs-shared
安装 NFS 服务

Ubuntu 系统默认没有安装 NFS 服务,需要使用如下命令安装 NFS 服务端软件:

sudo apt install nfs-kernel-server
查看用户 id

在配置 NFS 时需要使用到用户 uid 和组 gid,可使用 id 命令查看,在Ubuntu的终端输入如下命令:

id

使用 id 命令得到用户 id 和组 id在下面的配置文件中将会使用到。

配置 NFS
sudo vim /etc/exports

在 / etc/exports 文件末尾添加如下语句并保存,注意如下语句写到 / etc/exports 文件是在同一行。

/mnt/nfs-shared 192.168.1.230/24(rw,sync,all_squash,anonuid=1000,anongid=1000,no_subtree_check)

注意具体的配置需要根据自己的环境进行配置:

  • /mnt/nfs-shared :要共享的开发主机目录,注意使用空格与后面的配置隔开。

  • 192.168.1.0/24:配置谁可以访问,其中的 / 24 是掩码,此处表示 24 个 1,即 11111111.11111111.11111111.00000000, 即掩码是 255.255.255.0。结合前面 192.168.1.0 表示此处配置 IP 为 192.168.1.* 的主机均可以访问该目录,即局域网上的所有主机。

  • 若局域网是其它网段,请参考此处的配置,不能直接用星号表示,如欲配 置 192.168.0.* 的局域网下所有机器都可以访问,则配置为 192.168.0.0/24。

  • 这个配置域也可以直接写可访问的主机名

  • rw: 表示客户机的权限,rw 表示可读写,具体的权限还受文件系统的 rwx 及用户身份影响。

  • sync:资料同步写入到内存与硬盘中。

  • anonuid=1000:将客户机上的用户映射成指定的本地用户 ID 的用户,此处 1000 是开 发主机 embedfire 用户的 uid,此处请根据具体的主机用户 uid 进行配置。

  • anongid=1000: 将客户机上的用户映射成属于指定的本地用户 组 ID,此处 998 是开发主机 embedfire 用户组 gid,此处请根据具体的主机用户组 gid 进行配置。

  • no_subtree_check:不检查子目录权限,默认配置。

本配置中的 anonuid 和 anongid 把客户机的用户映射成本地 uid/gid 为 1000 的用户,即开发 主机的 embedfire,那么当在开发板上使用与开发主机不同的用户访问 NFS 共享目录时,都会 具有 embedfire 的权限,方便互相访问。如开发板上的 root 用户创建文件,在开发主机上会被认为是 embe dfire 创建的;在开发主机上仅 embedfire 能读写的文件,在开发板上的 root 或其它用户也 能对该文件进行读写(被当成了 embedfire)。当然这并不是一种安全的访问设置方式,不过 这用在我们的开发中是非常方便的配置。

更新 exports 配置

修改完 / etc/exports 文件并保存后,可使用 exportfs 命令更新配置:

sudo exportfs -arv

该命令的参数说明如下:

  • -a:全部 mount 或 umount 文件 / etc/exports 中的内容。

  • -r:重新 mount 文件 / etc/exports 中的共享内容。

  • -u:umount 目录。

  • -v:在 exportfs 的时候,将详细的信息输出到屏幕上。

查看 NFS 共享情况
showmount -e
开发板配置
安装 NFS 客户端

开发主机开启 NFS 服务后,我们还需要在开发板安装 NFS 客户端,来让开发板使用 NFS 服务。
执行安装 NFS 客户端命令:

sudo apt install nfs-common -y

查看 NFS 服务器共享目录
 在开发板上执行 “showmount -e +“NFS 服务器 IP”” 命令。注意在不同网络环境下,NFS 服务器 IP 可能不一样,以实际情况为准。

showmount -e 192.168.1.10
临时挂载 NFS 文件系统
mount -t nfs 192.168.1.10:/mnt/nfs-shared /mnt

以上命令使用的各个参数如下:(运行有错误 “mount.nfs: an incorrect mount option was specified
”)

  • -t nfs:指定挂载的文件系统格式为 nfs。

  • 192.168.1.10:指定 NFS 服务器的 IP 地址。

  • /mnt/nfs-shared:指定 NFS 服务器的共享目录。

  • /mnt:本地挂载目录,即要把 NFS 服务器的共享目录映射到开发板的 / mnt 目录下。

需要修改为这样才可以正常的临时挂载:

mount -t nfs -o nolock,nfsvers=3 192.168.1.10:/mnt/nfs-shared /mnt

使用这种方式挂载目录只是临时的,开发板在重启后需要重新挂载该 NFS 目录才能访问。

取消挂载

当客户机在网络上无法找到 NFS 共享的目录时,如开发主机关机时,在 NFS 的客户机 的终端常常会输出一些提示,或在使用 ls 命令查看共享目录会导致长时间等待,这时可以对目录使用 umount 命令取消挂载,示例如下:

umount /mnt

使用该命令时以要取消挂载的目录作为参数即可,没有输出表示执行正常。如果 在当前挂载的目录进行 umount 操作,会提示 “device is busy”。建议取消挂 载时,先切换到家目录 “~”,在进行 umount 操作。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在开发板上使用 NFS 挂载,需要进行以下步骤: 1. 在开发板上安装 NFS 客户端软件。 2. 在开发板上创建一个本地目录,用于挂载远程 NFS 服务器的共享目录。 3. 在 NFS 服务器上设置共享目录,并配置允许开发板的 IP 地址访问该目录。 4. 在开发板上使用 mount 命令,将远程共享目录挂载到本地目录。 具体的步骤如下: 1. 安装 NFS 客户端软件。 在 Ubuntu 系统上,可以使用以下命令安装 NFS 客户端软件: ``` sudo apt-get update sudo apt-get install nfs-common ``` 2. 创建本地目录。 可以使用 mkdir 命令创建一个本地目录,用于挂载远程共享目录。例如: ``` sudo mkdir /mnt/nfs ``` 3. 设置共享目录。 在 NFS 服务器上,需要设置共享目录,并允许开发板的 IP 地址访问该目录。 假设 NFS 服务器的 IP 地址为 192.168.1.100,共享目录为 /nfs_share,可以在 NFS 服务器上使用以下命令设置共享目录: ``` sudo vi /etc/exports ``` 在文件末尾添加以下内容: ``` /nfs_share 192.168.1.0/24(rw,sync,no_subtree_check) ``` 其中,rw 表示允许读写访问,sync 表示同步写入,no_subtree_check 表示禁用子树检查。 4. 挂载远程共享目录。 在开发板上,使用 mount 命令将远程共享目录挂载到本地目录。例如: ``` sudo mount 192.168.1.100:/nfs_share /mnt/nfs ``` 其中,192.168.1.100 是 NFS 服务器的 IP 地址,/nfs_share 是共享目录的路径,/mnt/nfs 是本地目录的路径。 完成以上步骤后,就可以在开发板上访问远程共享目录了。可以使用 ls 命令查看挂载的目录内容,使用 umount 命令卸载挂载的目录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carson.Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值