当前位置: 首页 > news >正文

Linux入门篇学习——NFS 服务器的搭建和使用和开发板固件烧录

目录

一、NFS 服务器的搭建和使用

1.什么是 nfs

2.同一个网段概念

3.开发板,windows,虚拟机 ubuntu 三者之间的连接

4.nfs 服务器的搭建

5.nfs 服务器的使用

二、开发板固件烧录


一、NFS 服务器的搭建和使用

        本章我们使用 nfs 服务器,使用 nfs 拷贝文件到开发板上。

1.什么是 nfs

        NFS 是 Network File System 的缩写,它可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

        NFS 服务器可以让 PC 将网络中的 NFS 服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;

        NFS 服务器我们一般是在 ubuntu 上搭建的。这里的客户端我们使用的是开发板,我们可以使用开发板A,挂载开发板 B,挂载开发板 C,我们可以挂载好几个客户端。框图只给大家画出来了一个。

        即/home/mnt 下的文件和/home/nfs 下的文件他们的文件是一样的。

        类比之前讲的 samba :

        Ubuntu 安装 samba 与 windows 电脑共享了一个文件夹。这个文件夹 win 电脑可以直接访问,ubuntu也可以直接访问。windows 可以直接访问这个文件夹把 ubuntu 里面的文件拖出来,ubuntu 也可以直接访问这个文件夹把 Windows 电脑上的文件拖出来。

        samba 共享的文件夹可以类比成 nfs 共享的文件夹 /home/nfs

        nfs 服务器是安装在 ubuntu 上的,所以 nfs 服务器可以类比成 ubuntu

        ubuntu 也可以访问 /home/nfs 这个目录,因为这个目录就是在 ubuntu 上,nfs 客户端也就是 windows电脑我们可以把它类比成 samba 服务中的 windows 电脑,所以说开发板也可以直接访问 /home/nfs 这个目录,这个目录下的内容我们可以拖到 ubuntu 上也可以拖到开发板上。

        开发板可以类比成 windows

        所以使用 nfs 服务器就轻松实现开发板和 ubuntu 之间互传文件。

2.同一个网段概念

        使用 nfs 之前,开发板、虚拟机 ubuntu、windows 电脑三者要互相 ping 通,这就涉及到了同一个网段的概念。

        概念:同一个网段是指 IP 地址和子网掩码相与得到的相同的网络地址。

快速判断同一个网段:

  1. 开发板、虚拟机 ubuntu、windows 子网掩码是不是相同。
  2. 开发板、虚拟机 ubuntu、windows IP 地址的前三段是不是相同。

        举例:

        Ubuntu:

        由上图可知,ubuntu 的 IP 为 192.168.1.11,子网掩码是 255.255.255.0

        Windows:

        由上图可知,windows 电脑的 IP 为 192.168.1.5 ,子网掩码是 255.255.255.0

        所以,ubuntu 和 windows 在同一个网段,因为子网掩码相同,都是 255.255.255.0,IP 地址前三段相同,都是 192.168.1。同理,判断开发板的网段是不是和 ubuntu 和 windows 在同一个网段下,我们也可以使用这个方法。

3.开发板,windows,虚拟机 ubuntu 三者之间的连接

  1. 虚拟机 ubuntu 要使用桥接模式,不能使用其他模式
  2. 开发板使用无线或者有线连接到路由器上,不能直接连接到电脑,不能连手机热点。
  3. windows 关闭防火墙,使用有线或者无线连接到和开发板连接的同一个路由器上。
  4. 如果 windows 使用的是无线连接到路由器,那么虚拟机 vm 要桥接到无线网卡,反之,桥接到有线网卡。
            虚拟机桥接模式是自动选择的,选择编辑,选择虚拟网络编辑器,点击一下更改设置,这个需要管理员的权限,桥接模式他这里是自动的,他下边有一个网卡,这个呢我使用的是有线,所以他是有线网卡,所以大家不能把有线连接到路由器,也不能把无线连接到路由器,这两个不能同时连,如果说你要同时连的话,那么就不知道自动连接到哪个网卡了,那么你就 ping 不通了。
  5. 保证虚拟机 ubuntu,Windows,开发板在同一个网段。
  6. 使用以上连接方法极大减少 ping 不通的概率。如果 ping 不通,请检查以上 5 条是否全部满足。

4.nfs 服务器的搭建

        (1)在 ubuntu 安装 nfs 服务:在管理员的身份下运行

        apt-get install nfs-kernel-server                                                                                                 

        (2) 在/home 下创建一个名为 nfs 的文件夹

        (3) 打开配置文件添加 nfs 共享目录

        vi /etc/exports                                                                                                                             

        在配置文件里面添加一下代码:

        /home/nfs/ *(rw,sync,no_root_squash)                                                                                      

        其中: /home/nfs/ 是 nfs 服务器要共享的目录

        rw:是可读写权限

        sync:是资料同步写入内存和硬盘

        no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为一名使用者,通常它的 UID 与 GID 都会变成 nobody 身份。

      (4)重启 nfs 服务

        /etc/init.d/nfs-kernel-server restart                                                                                             

        显示 ok 就说明 nfs 服务器搭建成功了。

5.nfs 服务器的使用

        (1)我们将开发板开发板烧写 yocto 文件系统,有线网口通过网线连接到路由器,系统起来后首先使用“ifconfig”查看开发板 ip。如下图所示:

        (2)在 Ubuntu 上输入“ifconfig”,查看一下 NFS 服务器(Ubuntu)的 ip 地址,如下图所示:

        (3)通过查询 ip 地址,查看到开发板和服务器在同一网段,如果不在同一网段,则需要修改开发板的

网络设置,重新设置 ip 地址并重启开发板使之生效。

        (4)开发板上使用 ping 命令测试网络,如下图所示,开发板和 ubuntu 服务器之间的网络是连通的。

        (5)挂载 nfs 服务器共享的目录,命令如下:

mount -t nfs -o nolock,nfsvers=3,vers=192.168.1.9:/home/nfs /mnt/                                                 

        这句话代码的意思是使用 nfs3 版本挂载 IP 为 192.168.1.9 中的 /home/nfs 到 mnt 文件夹下,IP 为ubuntu 的 IP.把这个 ip 改成自己 ubuntu 的 ip 就可以了,前提是开发板必须能够 ping 通 ubuntu ,如果没有 ping 通的话再检查下,复制命令,这样就挂载好了 nfs 服务。那么挂载好了之后要怎么用呢,我这里打开 ubuntu,然后进到我们平常做实验的目录,在这个目录下有一个 hello 的可执行文件,file hello 查看下,他是在开发板上运行的,架构是 arm 的,如果是借助 tf 卡或者 U 盘来拷贝会比较麻烦,我们可以直接使用nfs ,我现在把这个可执行文件拷贝到共享目录下,也就是 home/nfs 这个目录,

cp hello /home/nfs                                                                                                                              

        然后我们再进到共享目录看一下,在这个目录下有一个 hello 的可执行文件,现在我们是在 ubuntu 上操作的,然后我们在超级终端上看一下,我们这里是把共享的目录挂载到了 mnt 上,我们进到 /mnt 目录下,ls 看一下,在这里就可以看到 ubuntu 的 hello 文件了,我们来运行下,我们是可以运行成功的,所以说我们使用 nfs,我们可以很方便的把我们 ubuntu 上的文件拷贝到开发板,同理也可以把开发板上的文件拷贝到 ubuntu,比如说我在这个挂载的路径下,我创建一个 .c 文件,

touch nihao.c                                                                                                                                     

        然后打开 ubuntu ,同样在这个路径下,就可以看到 nihao.c ,我们可以直接把这个拷贝到 ubuntu 上,

我直接拷贝到 test 目录下,

cp nihao.c /home/topeet/test                                                                                                              

或者直接考到 samba 上

cp nihao.c /home/samba                                                                                                                    

        然后我们在打开电脑的 samba ,我们在 samba 上也可以看到这个 nihao.c ,然后我就把 nihao.c 拖到windows 上,这样就实现了开发板上的文件传到 windows 电脑上,非常的方便,就不用了 U 盘一个个拷了,我们开发板没有和任何一个设备连接,我们没有连接 U 盘或者其他的设备,只是我们无线上网了,我们就可以共享我们的文件,所以说他不仅神奇也非常的方便。

二、开发板固件烧录

步骤一:

        搞清楚手里的开发板是 EMMC 还是 NAND FLASH 。

        因为不同的开发板对应的固件不一样,所以我们要搞清楚手里的开发板是哪一个型号的,终结者 i.MX6ULL 开卡板分为工业级和商业级两种不同的开发板。大家可以通过外观就可以判断这两个开发板是哪种型号了。

        商业级的核心板,它的存储是 EMMC 的,EMMC 的存储是类似于正方形的芯片,旁边是 NAND FLASH的一个封装,因为我们这里要兼容 NAND FLASH ,这里是一个兼容的设计,如下图所示。        

             ·           

                                图 1 商业级核心板(EMMC 存储)        

        工业级的核心板,存储是 NAND FLASH ,而 NAND FLASH 的存储是一个长方形的,如图 2 所示。

                        

                              图 2 工业级核心板(NAND FLASH 存储)

        我们可以通过这个特点来判断我们手里的开发板是工业级的还是商业级的,即是 EMMC 的还是NANDFLASH 的。

步骤二:

        我们把下载器和固件从光盘资料里拷贝到电脑上,进到 i.MX6ULL 终结者光盘资料\01_开发及烧写工具\1.交叉编译器这个目录下,把 mfgtools_for_6ULL 这个文件夹拷贝到电脑上,如下图所示。

        然后作者进到 mfgtool 烧写工具的这个文件夹,一会我们把镜像全部拷贝到这个文件夹下的

“\Profiles\Linux\OS Firmware\files\linux”这个目录下。

        然后我们在回到光盘资料里,进到 i.MX6ULL 终结者光盘资料\08_开发板系统镜像目录下

        在清楚了手里的开发板是 EMMC 或者是 NAND FLASH 之后,我们这里要拷贝对应的镜像,如果说你的开发板是 EMMC 的,你就要进到 01 这个目录下,然后把 uboot 镜像拖到下载器进到的“\Profiles\Linux\OSFirmware\files\linux”这个目录下,因为作者的开发板是 EMMC 的,所以作者这里拖 01_EMMC 这里的镜像。如图 28.4 所示。如果你的开发板是 NAND FLASH 的,那你就要把 02 NAND FLASH 里面的 uboot 镜像拖到下载器的“\Profiles\Linux\OS Firmware\files\linux”目录下。

        然后我们进到 02_Linux 内核镜像,这里也是拖我们核心板对应版本的镜像,作者的核心板是 EMMC 的,所以拖 01_EMMC 核心板下的,然后把这些文件全部拖到我们下载器这个路径下,注意这里大家缺一个也不行,一定要全都拷贝过过来,如下图所示。

        如果你核心板是 NAND FLASH ,你就拷贝这两个到我们的文件夹就可以了,如下图所示。

        然后我们进到 03 文件系统镜像,在这里面有 4 个不同的文件系统,分别是 Busybox 、Buildroot、Yocto、Ubuntu 文件系统,如下图所示。

        我们默认带的镜像就是开发板出厂烧写的时候带的是 Yocto 的文件系统,所以作者这里还烧写 Yocto 到这个文件里面,然后把这个压缩包拖到这个路径下,当然你也可以烧写另外三个,烧写方法都是一样的,比如说你想烧写 Busybox ,就把 01_Busybox 这里面的拖过来,其他的保持不变就可以了,如下图是我们全部的镜像。

        镜像都放好了之后,我们就可以回到下载器的顶层目录了,然后我们就可以双击打开这个 exe 文件了,如下图所示。有一点要注意,一定要先把镜像拷贝到开发板,我们才可以成功打开这个镜像,如果你不把镜像拷贝进去,那么你打开这个 exe 文件是打不开的。

        我这里双击打开它,成功打开后就弹出了如下图所示的界面。

        我们要怎么关闭呢,正确的关闭方法是点击 Exit ,而不是点击这个 x 号,我们点一下就退出了,如下图所示。

        如果你不小心先打开了这个 exe 文件,然后显示报错了,把这些镜像都拷贝进去他还是报错,这时候可以重启下电脑试一下,重启完了之后应该就可以了。

        进行下一步之前我们需要配置下烧写工具,我们要把烧写工具配置成烧写 EMMC 启动的镜像或者是烧写 NAND FLASH 启动的镜像,因为我们镜像是分为这两种的。我们要怎么配置呢,我们打开烧写工具,然后我们找到顶层目录中 cfg.ini 这个文件,如下图所示。

        

        使用文本编辑工具打开这个文件,我们找到图中这行代码,这行代码就是设置烧写工具时下载 EMMC系统镜像或者是下载 NAND FLASH 系统镜像。作者想下载 EMMC 的,我这里就把它改成 EMMC ,后边有个空格,前边也有一个空格,空格不能丢,如下图所示。如果说想下载 NAND FLASH 的,就把 EMMC 改成 NAND ,注意这里一定是大写的,那么他下边的就是 NAND FLASH 的镜像。

                

        烧写工具这里的配置、拷贝的镜像都要和我们的开发板对应上。如果说你对应不上,那么你烧写的过程中就会出问题。设置好了之后我们点击保存。我们就可以进行下一步了。

步骤三:

        给开发板设置成 usb 串行模式,然后连接 OTG 线,注意尽量不要接到 hub ,可能会由于电流不够导致开发板烧写失败。

        开发板有 4 种启动模式,分别是 USB 串行启动,SD/TF 卡启动,EMMC 启动,NAND FLASH 启动,如下表所示。

        烧写我们使用的是第一种启动方式即 usb 串行模式,表格中的这 8 列分别对应拨码开关的 8 个拨码,拨到上面“ON”的位置就代表 1 ,拨到下边就是 0,然后我们按照这个表格来设置下,USB 串行启动要把第一个拨码设置成 0,第二个拨码设置成 1,其他位就可以不动了,USB 串行启动模式不管是 EMMC 版本或是 NAND FLASH 版本,都是按这样来设置的。如下图所示。

                

        作者现在手里的开发板是 EMMC 版本的,设置成串行下载模式我们设置的是 01,设置好了拨码开关后然后连接下 otg 线,otg 线就是我鼠标所圈的这个线,我们给大家准备了两根这个线,一根是用来连接我们的串口的,另外一根是用来烧写的,我们把开发板的小头连接到开发板标的 otg 这个座子上,另外一端连接到电脑上,连接 otg 线的时候有一点要注意下,在连接的时候,尽量不要把 otg 线另一头的 USB 端连接到我们的 usbhub 上,hub 就是我们买的 usb 扩展器。如果你直接连到 hub 上,那么供电电流可能不够,可能会造成烧写失败,这一点要注意下,最好是提前插到我们的 USB 口,连接好了之后我们就可以打开我们的

下载器了。

        我们双击打开这个 exe 文件,然后我们给开发板上电,我现在按下开关,这样我们的下载器就可以自动识别到我们的开发板,识别成功后,他这里就会显示符合 HD 标准的供应商定义设备,然后我们点击下start ,这样他就会自动的烧写了,如下图所示。

        在开发板烧写的过程中,我们可以看到打印信息,可以打开下超级终端,点击新建连接,然后选择 com6,可以看到烧写的时候终端是有打印信息的,同时我们要把串口线连上,不然你是看不到打印信息的,然后我们等待它烧写成功,烧写成功之后下载器会变成绿色,如下图所示。

        然后点击 stop 点击 exit 就可以正常退出下载器了。

步骤四:

        我们设置开发板的启动方式,要把开发板拨成 EMMC 启动或者是 NAND FLASH 启动,在拨之前要先给开发板断电,如果你是 EMMC 就按照 EMMC 启动设置,如果你是 NAND FLASH 就按照 NAND FLASH 来设置。

        设置好之后给开发板上电,如果启动方式设置的对,而且烧写也成功了,他就会有打印信息即可以成功启动。可以在超级终端上看到,进到了控制台敲两下回车,系统启动成功。如下图所示。

        即便系统已经启动成功了,但是我们的屏幕还是不显示的,我们要设置下屏幕的环境变量,如果没有屏幕,则不用设置。我们要按照下表来设置屏幕的环境变量,

        我们要进到开发板的 uboot 模式下。我们可以重启下开发板,然后我们在倒计时 321 的时候立刻敲回车,这样我们就进到了 uboot 模式,否则就进到了文件系统模式。我们可以先查看下现在的环境变量,输入 pri 敲回车,我们找到屏幕的类型,现在我的开发板屏幕类型默认是 hdmi ,我这里可以把它改成 4.3寸屏,可以接 4.3 寸屏幕,如果说你手里没有屏幕,那么你就可以不用设置这一步,保证默认的是 hdmi 就可以了,这里我把他设置成 4.3 寸屏,直接粘过来这个命令 setenv lcdtype 4.3,然后保存,使用 saveenv这样我们把 4.3 寸屏幕连接到开发板上,然后重启开发板就可以在 4.3 寸屏幕上显示了,启动下,然后我们再来查看下环境变量,我们输入 pri ,现在的屏幕类型就是 4.3 寸屏幕了,然后输入 reset 就可以重启开发板。

        大家可以试着给开发板更新下固件,设置下环境变量。

http://www.dtcms.com/a/288636.html

相关文章:

  • Spring Boot 第一天知识汇总
  • 【Java项目安全基石】登录认证实战:Session/Token/JWT用户校验机制深度解析
  • 相似度计算
  • 「Java案例」利用方法求反素数
  • Facebook 开源多季节性时间序列数据预测工具:Prophet 饱和预测 Saturating Forecasts
  • dynamic_cast的实现原理
  • Beamer-LaTeX学习(教程批注版)【6】
  • Elasticsearch 简化指南:GCP Google Compute Engine
  • GPT-4o mini TTS:领先的文本转语音技术
  • 随着GPT-5测试中泄露OpenAI 预计将很快发布 揭秘GPT-5冲击波:OpenAI如何颠覆AI战场,碾压谷歌和Claude?
  • prometheus 黑盒监控和docker检测
  • mysql第三次作业
  • 学习寄存器——GPIO(二)学习BSRR BRR ODR寄存器的原子性和在HAL库的应用
  • 【Go语言-Day 22】解耦与多态的基石:深入理解 Go 接口 (Interface) 的核心概念
  • 【详细笔记】两类曲线积分转换
  • 群组功能实现指南:从数据库设计到前后端交互,上班第二周
  • 【数据结构】揭秘二叉树与堆--用C语言实现堆
  • 人工智能之数学基础:随机实验、样本空间、随机事件
  • Docker Desktop 入门教程(Windows macOS)
  • 深度学习图像分类数据集—百种病虫害分类
  • Python绘图小工具开发:从零构建数据可视化利器
  • 股票及金融笔记
  • 如何升级Docker部署的Dify
  • Materials Studio学习笔记(二十九)——尿素的几何优化
  • 私有云新势力:Puter+CPolar如何低成本替代商业网盘?
  • 【Linux性能优化】常用工具和实战指令
  • 小架构step系列20:请求和响应的扩展点
  • 制作mac 系统U盘
  • macOs上交叉编译ffmpeg及安装ffmpeg工具
  • pages.json页面路由中,globalStyle的各个属性