持续创作,加快生长!这是我参与「日新计划 10 月更文应战」的第29天,点击检查活动详情

嵌入式 Linux入门 环境篇第五课,建立 NFS 环境   ......  by 矜辰所致

前言

咱们在前面的 Linux 入门环境篇中,开发环境根本建立好了,可是为了方便后续的学习开发,咱们还得学会运用网络同享文件夹。

完结网络同享文件夹的方法,一般有 NFS 和 TFTP 两种方法。

所以本文就介绍一下 在 Ubuntu 上建立 NFS 服务以及在 开发板上挂载 Ubuntu 虚拟机中同享的 NFS 同享目录。

我是矜辰所致,尽量用心写好每一系列文章,不虚浮,不将就,认真对待学知识的咱们,矜辰所致,金石为开!

一、NFS 简介

NFS (Network File System 简称:NFS) 是 linux 系统和网络存储文件管理器。

能使运用者拜访网络上别处的文件就像在运用自己的计算机一样。经过网络快速、无缝地同享文件。

简略来说就是:经过 NFS 咱们能够在开发板上直接经过网络拜访 Ubuntu 虚拟机上的文件,而且就相当于自己本地的文件一样,能够操作。

那么为什么嵌入式 Linux 开发需求运用网络同享文件?

在咱们进行嵌入式 Linux 开发的时分,咱们是需求通凭借 PC 进行程序的编译,编译完结以后才拷贝到开发板进行程序的运转,咱们需求手动的将文件拷贝到 SD 卡,然后再将 SD 插至开发板进步行程序运转。

凭借网络同享文件夹,咱们每次修正编译以后的程序就无需手动的进行文件的拷贝。

比方,咱们在 Ubuntu 上制作开发板的根文件系统,然后运用 NFS 来加载根文件系统到开发板的 DDR 上。

二、NFS、TFTP、FTP、SSH

关于刚接触嵌入式 Linux 开发的新朋友来说,NFS、TFTP、FTP、SSH 这些概念往往会傻傻分不清楚,他们都与网络有关,可是用处又各有不同,而且往往嵌入式 Linux 根本的开发环境,这些东西又是必须的。

所以在本文中,咱们来简略的理一理他们各自的用处。

SSH 与 FTP

关于 SSH 与 FTP ,咱们其实在环境篇前面几篇文章中现已讲过了,其实现已比较过 SSH 与 FTP 了:

嵌入式 Linux NFS 环境搭建实战
在 Linux 中它们的用法,也能够查阅前面的几篇文章。

NFS 与 TFTP

至于本文咱们要将的 NFS 和下一篇文章要将的 TFTP 其实是类似的东西:

NFS 是网络文件系统,上面咱们介绍过,经过网同享文件,将东西下载到 DDR 中。

TFTP 是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简略文件传输的协议 ,也能够完结网络挂载。

在咱们的嵌入式 Linux 开发中,能够运用 NFS 和 TFTP 经过网络来挂载 PC 端的同享文件。

FTP 与 TFTP

咱们留意到 FTP 与 TFTP 都是文件传输协议,那么他们有啥差异呢?

只需求简略记住 2 点:

1、交互运用 FTP(比方 windows 与 Ubuntu 虚拟机文件交互)。 TFTP 答应仅单向传输的文件(开发板运用 TFTP 挂载 Ubuntu 虚拟机的文件)。

2、FTP 是完好、面向会话、惯例用处文件传输协议。而 TFTP 用作 bones bare – 特殊意图文件传输协议。

当然他们的差异并不只有上面 2 点,这里咱们把他们当成开发工具,只需求记住这两点就足以让咱们差异他们。

三、建立 NFS 环境

这里说明一下,如果看过前面的文章,应该能够明白, NFS 有服务器端,也有客户端。 比方要使得 Ubuntu 虚拟机能够挂载 windows 主机上的网络文件,咱们需求在 Ubuntu 上装置 NFS 客户端。

本文的意图是为了使得开发板能够经过网络拜访 Ubuntu 下的同享文件,所以咱们需求在 Ubuntu 下装置的是 NFS 服务器。

下面咱们一步一步来进行。

3.1 Ubuntu 装置 NFS 服务器

在终端中运用sudo apt-get install nfs-kernel-server -y 指令装置 NFS 服务器。

嵌入式 Linux NFS 环境搭建实战

等候装置完结即可。

3.2 创立同享文件夹

创立一个文件夹,当做 NFS 的同享目录,并给予 NFS 目录可读可写可执行权限,如下图:

嵌入式 Linux NFS 环境搭建实战

3.3 装备 NFS 服务

完结上述步骤,咱们需求对 NFS 服务进行装备,咱们需求修正/etc/exports 文件,在文件末尾添加上装备信息。

留意,需求运用 sudo 修正,然后运用 :wq! 保存退出,如下图:

嵌入式 Linux NFS 环境搭建实战

上图中装备指令 *(rw,sync,no_root_squash) 的含义如下 : *号 :表明答应一切的网络段拜访同享文件夹 rw :表明拜访者具有可读写权限 sync :表明将缓存写入设备中,能够说是同步缓存的意思,实时写入 no_root_squash :表明拜访者具有 root 权限。

3.4 更新检查装备信息

运用 sudo exportfs -arv 更新装备信息 :

嵌入式 Linux NFS 环境搭建实战

或许运用 sudo /etc/init.d/nfs-kernel-server restart 指令重启 NFS 服务器:

嵌入式 Linux NFS 环境搭建实战

接着运用showmount -e检查 NFS 同享文件夹状况:

嵌入式 Linux NFS 环境搭建实战

3.5 开发板挂载 NFS 文件系统

首要确保开发板与 Ubuntu 虚拟机的网络是能够彼此 ping 通的,这个在前面的文章

嵌入式 Linux 入门 环境篇(三、开发板和 PC 的网络互通) 现已说明过:

嵌入式 Linux NFS 环境搭建实战

咱们能够运用showmount -e 指令在开发板检查主机的同享文件夹:

嵌入式 Linux NFS 环境搭建实战

博主运用的正点原子的开发板内核应该是默认装置了 NFS 客户端,如果读者运用的是其他开发板,可能需求手动在开发板装置一下 NFS 客户端。

运用 sudo apt install nfs-common -y 指令装置 NFS 客户端。

开发板挂载

运用

mount -t nfs -o nolock,nfsvers=3 192.168.2.139:/home/qzh/linux/nfs /mnt

指令进行挂载,如下图:

嵌入式 Linux NFS 环境搭建实战

还是由于运用的开发板的问题,需求加上nfsvers=3 这个条件,其他的开发板视状况而定。

现在咱们这个文件夹中是空的,没有任何文件,如下图:

嵌入式 Linux NFS 环境搭建实战

咱们在开发板上创立一个文件,能够在 Ubuntu 虚拟机中看到,如下图:

嵌入式 Linux NFS 环境搭建实战

相同的咱们在 Ubuntu 虚拟机中创立一个文件,也能够在 开发板中看到,如下图:

嵌入式 Linux NFS 环境搭建实战

当然,在任一地方进行文件的改动,都能够实时的检查到:

嵌入式 Linux NFS 环境搭建实战

卸载 NFS 目录

运用 umount [挂载目录] 指令卸载挂载的 NFS 目录:

嵌入式 Linux NFS 环境搭建实战

结语

本文介绍了 NFS 的相关知识,也学习了开发板上怎么挂载 PC 端 Ubuntu 虚拟机上的同享文件夹。

咱们后期的学习中,会经常运用到网络文件同享的方法进行开发。

下一篇文章,咱们还要来学习说明一下 TFTP 环境的建立,当然关于新手来说,NFS 和 TFTP 知道其中一种方法就行了。

好了,本文就到这里,谢谢大家!