百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

NFS挂载的2种方式(nfs挂载参数详解)

nanshan 2024-11-11 12:25 25 浏览 0 评论

来源:百问网

作者:韦东山

本文字数:3480,阅读时长:5分钟

仅用flash上的根文件系统启动后,手工MOUNT NFS

使用NFS作为根文件系统来启动

视频中只介绍了开发板这端uboot参数的设置,并未介绍Ubuntu端 NFS服务器的设置,这就导致很多学员学习时遇到难以逾越的问题:NFS挂载,从而影响学习进度和热情。此帖就是解决NFS相关的问题,希望对初学者有所帮助。先介绍:1 仅用flash上的根文件系统启动后,手工MOUNT NFS, 前提条件:

  1. 开发板上要烧写好文件系统
  2. 能正常开机进入Linux系统
  3. uboot中启动参数类似这种 bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0

大概说下步骤:

  1. 搭建(下载)、配置和重启NFS服务器
  2. Ping 通服务器
  3. 执行挂载命令

NFS是什么?
NFS:Network File System(网络文件系统),NFS只是一种文件系统,本身并没有传输功能,是基于RPC协议实现的,为C/S架构。也就是说,NFS也只是文件系统而已,如jffs2,yaffs,ext4等是一类东西。但是NFS的特殊之处在于,它可以通过网络来挂载,而不用烧写到设备上。这就跟网吧里使用PXE启动来搭建无盘系统一样:每台电脑并没有安装硬盘,而是直接通过PXE启动服务器上的系统,看起来每台电脑都有硬盘,其实都是挂载服务器上的硬盘。

NFS怎么用?
前边已经介绍过,NFS是C/S架构,也就是说,使用NFS需要搭建服务器和客户端。客户端很简单,自带的uboot已经添加了对NFS客户端的支持,我们只需要管NFS服务器。这个服务器其实跟TFTP、Samba服务器、Ftp服务器也是一类的东西,直接在Ubuntu上使用命令安装即可,
先下载NFS服务器,演示如下:
sudo apt-get install nfs-kernel-server

很显然,我已经安装过了,在提供的Ubuntu9.10里也安装过了,继续往下走——–配置NFS服务器
sudo vi /etc/exports

默认状态下是没有配置的,可以参考给出的例子或者百度来决定配置信息
例如,可以配置成这样:

就是在文件里添加了

/work/nfs               *(rw,sync,no_root_squash)
/var/lib/tftpboot       *(rw,sync,no_root_squash)

然后保存,重启NFS服务器或者Ubuntu(如果不重启,配置不会生效),命令如下:

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

简单解释各个参数的意义:
/work/nfs :允许客户端挂载的目录,可添加任意多个,如果不设置,服务器将不允许客户端挂载。
* :允许所有IP的主机挂载该目录
括号内的 :一些权限设置,比如是否能够读写(可百度,更详尽)
现在NFS服务器就可以用了。

1.查看开发板和Ubuntu的IP,设置开发板IP并ping通NFS服务器

2.把你想拷贝到开发板上的文件都复制到刚才设置的目录里,例如拷贝到 /work/nfs,然后在开发板上执行挂载命令
mount -t nfs -o nolock,vers=2 10.0.0.147:/work/nfs /mnt

解释一下:
mount :挂载命令
nfs :使用的协议
nolock :不阻塞
vers : 使用的NFS版本号
IP : NFS服务器的IP(NFS服务器运行在哪个系统上,就是哪个系统的IP)
/work/nfs: 要挂载的目录(Ubuntu的目录)
/mnt : 要挂载到的目录(开发板上的目录,注意挂载成功后,/mnt下原有数据将会被隐藏,无法找到)

3.现在进入开发板上的/mnt目录,就可以看到Ubuntu上要传输的文件了

4.测试驱动,测试应用程序都可以在/mnt目录下进行,并且这个/mnt目录也不会占用开发板的Flash空间,很方便。

仅用flash上的根文件系统启动,手工MOUNT NFS 介绍完毕

强烈推荐这种方式,因为简单。随时想挂载就挂载,Ubuntu系统即使不开机(前提是ubuntu ip没变)也不影响开发板的启动。而 7.2 使用NFS作为根文件系统来启动 ,若Ubuntu未启动或者文件系统有问题,开发板根本无法开机,严重影响体验。

可能遇到的问题

典型的网络不通,检查彼此的IP,保证网络通畅。
很多初学者以为,在uboot状态下设置完IP能ping通Ubuntu那么开发板进入Linux后也一定能ping通Ubuntu,这是不对的。两种状态下的IP互不影响,也就是说uboot的IP不会传递给Linux,如果需要使用网络都需要分别设置IP。

解决方法:
①检查要挂载的目录/work/test是否在/etc/exports中声明过,如果没有,是没有挂载权限的,就参考前面的例子添加
在Ubuntu上执行命令 showmount -e 即可查看已经声明过的可被挂载的目录
②检查NFS服务器是否在运行
在Ubuntu上执行命令 sudo /etc/init.d/nfs-kernel-server status 即可查看nfsd是否正在运行,如果没有运行就参考前面的命令使其运行


使用NFS作为根文件系统来启动

如果你仅仅是想要让开发板跟Ubuntu共享文件,那么强烈建议你用前面所提供的方式,因为 2 使用NFS作为根文件系统来启动 比较麻烦,这种启动方式主要用在制作文件系统上。下面详细说明!

视频一开始就教大家怎么重烧整个系统,怎么编译uboot,怎么编译内核都讲了,就是没有讲怎么制作文件系统。制作文件系统属于进阶内容,被放到了第11节。但是视频中又提前的介绍了NFS启动,这就导致很多紧跟视频操作不敢有丝毫遗漏的同学陷入深深的苦恼当中,无法在自己的开发板上复现视频中的现象是不可容忍的,有些同学甚至因此放弃了嵌入式的学习,这对一个过来人来说感觉是相当可惜的。现在我就慢慢引入为什么需要NFS启动吧。

大家都知道,开发板要想运行应用程序,文件系统是必不可少的,在光盘里有提供文件系统

参考视频的烧写方法,很容易能够烧写成功。但是这个文件系统是怎么制作出来的?只能看第11节的视频了,会发现步骤非常多。为了避免出错,需要时时看制作的效果。如果每做一步都用mkyaffs2image制作一个文件系统fs.yaffs2烧写到开发板上显然效率太低,此时NFS启动的优势就很明显了—–可以通过NFS启动的方式来实时看效果。

使用NFS启动的前提条件
编译内核和制作文件系统所用的交叉编译器必须相同(如果你用2.6.22.6的内核去挂载毕业班、第三期视频的NFS文件系统,肯定无法挂载)
步骤:

  1. 将制作的文件系统放到/work/nfs/jz2440目录下
  2. 参考上一个帖子的方式,添加路径 /work/nfs/jz2440 到文件 /etc/exports 中,以保证开发板有挂载这个目录的权限
  3. 重启nfs服务器
  4. 再次确认刚才设置的目录是否生效
  5. 查看Ubuntu的IP和开发板的IP,等会设置uboot启动参数时会用到
  6. 设置uboot启动参数

set bootargs noinitrd root=/dev/nfs nfsroot=10.0.0.147:/work/nfs/jz2440 ip=10.0.0.10:10.0.0.147:10.0.0.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
save

常见问题
1.如果你的文件系统制作的没有问题,那么重启开发板后应当能够进入Linux系统。如果挂载失败,就用光盘里提供的文件系统试试

注意:光盘提供的文件系统中etc/init.d/rcS文件中已经默认添加了设置开发板IP的命令,如果你不需要这个IP或者跟你的网段不同,可以修改以符合自己的需要。光盘里提供的文件系统都是用arm-linux-gcc(3.4.5版本制作的),因此你必须使用2.6.22.6的内核来启动,否则无法挂载文件系统。

2.使用NFS启动你会发现一个问题,如果开发板跟Ubuntu之间的网络不通,那么你的开发板就启动不了。想想也很正常,客户端跟服务器网络不通是无法登陆的。如果你制作的文件系统经过测试没有任何问题,那就可以制作成yaffs2文件系统烧写到开发板上,不用每次都得打开Ubuntu,插上网线,再启动开发板了。
在第一期视频第0课第7节03:40处有演示,

其实就是将NFS文件系统使用mkyaffs2image工具制作生成yaffs2格式的文件系统。至此,NFS全部挂载方式分析完毕。

「新品首发」STM32MP157开发板火爆预售!首批仅300套

点击“了解更多”阅读更多相关章节

相关推荐

Let’s Encrypt免费搭建HTTPS网站

HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入...

使用Nginx配置TCP负载均衡(nginx tcp负载)

假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。以下是实验种设置的详细信息:Nginx(CenOS8Minimal)-192.168.1.50Kube...

Nginx负载均衡及支持HTTPS与申请免费SSL证书

背景有两台minio文件服务器已做好集群配置,一台是192.168.56.41:9000;另一台是192.168.56.42:9000。应用程序通过Nginx负载均衡调用这两台minio服务,减轻单点...

HTTPS配置实战(https配置文件)

原因现在网站使用HTTPS是规范操作之一,前些日子买了腾讯云服务,同时申请了域名http://www.asap2me.top/,目前该域名只支持HTTP,想升级为HTTPS。关于HTTPS的链接过程大...

只有IP地址没有域名实现HTTPS访问方法

一般来说,要实现HTTPS,得有个注册好的域名才行。但有时候呢,咱只有服务器的IP地址,没注册域名,这种特殊情况下,也能照样实现HTTPS安全访问,按下面这些步骤来就行:第一步,先确认公网...

超详解:HTTPS及配置Django+HTTPS开发环境

众所周知HTTP协议是以TCP协议为基石诞生的一个用于传输Web内容的一个网络协议,在“网络分层模型”中属于“应用层协议”的一种。在这里我们并不研究该协议标准本身,而是从安全角度去探究使用该协议传输数...

Godaddy购买SSL之后Nginx配置流程以及各种错误的解决

完整流程:参考地址:https://sg.godaddy.com/zh/help/nginx-generate-csrs-certificate-signing-requests-3601生成NGI...

Nginx从安装到高可用,一篇搞定(nginx安装与配置详解)

一、Nginx安装1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2、上传nginx到linux系统3、安装依赖环境(1)安装gcc环境yuminstallgc...

阿里云免费证书申请,配置安装,使用tomcat,支持http/https访问

参数说明商品类型默认已选择云盾证书服务(无需修改)。云盾证书服务类型SSL证书服务的类型。默认已选择云盾SSL证书(无需修改),表示付费版SSL证书。如果您需要免费领取或付费扩容DV单域名证书【免费试...

你试过两步实现Nginx的规范配置吗?极速生成Nginx配置小工具

NGINX是一款轻量级的Web服务器,最强大的功能之一是能够有效地提供HTML和媒体文件等静态内容。NGINX使用异步事件驱动模型,在负载下提供可预测的性能。是当下最受欢迎的高性能的Web...

从零开始搭建HTTPS服务(搭建https网站)

搭建HTTPS服务的最初目的是为了开发微信小程序,因为wx.request只允许发起HTTPS请求,并且还必须和指定的域名进行网络通信。要从零开始搭建一个HTTPS的服务需要下面4...

群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问

安全第一步,群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问【新手导向】NAS本质还是一个可以随时随地访问的个人数据存储中心,我们在外网访问的时候,特别是在公网IP下,其实会面临着很多安...

让网站快速升级HTTPS协议提高安全性

为什么用HTTPS网络安全越来越受到重视,很多互联网服务网站,都已经升级改造为https协议。https协议下数据包是ssl/tcl加密的,而http包是明文传输。如果请求一旦被拦截,数据就会泄露产生...

用Https方式访问Harbor-1.9版本(https访问流程)

我上周在头条号写过一篇原创文章《Docker-Harbor&Docker-kitematic史上最详细双系统配置手册》,这篇算是它的姊妹篇吧。这篇文章也将用到我在头条写的另一篇原创文章的...

如何启用 HTTPS 并配置免费的 SSL 证书

在Linux服务器上启用HTTPS并配置免费的SSL证书(以Let'sEncrypt为例)可以通过以下步骤完成:---###**一、准备工作**1.**确保域名已解析**...

取消回复欢迎 发表评论: