【系统移植】NFS服务器环境搭建——挂载根文件系统

devtools/2024/12/25 0:52:52/

什么是NFS?

NFS(Network File System)即网络文件系统,其基于UDP/IP 使用NFS能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样,文件只存在于服务器上,并没有下载到客户端,类似于百度网盘的在线阅览功能。 

Ubuntu和开发板之间用NFS协议传输文件时,Ubuntu为NFS服务器,开发板为客户端 ,能够在开发板上挂载根文件系统。

NFS服务器环境搭建

1、检查自己的Ubuntu是否安装NFS,如果已安装,则无需再安装。

$ dpkg -s nfs-kernel-server

如显示如下结果,则说明已安装,无需再安装: 

如显示如下结果,则说明未安装: 

 2、安装NFS服务器,前提是确保Ubuntu能连上外网,可以ping下百度,如果能ping通,则说明已经连上外网

$ sudo apt-get install nfs-kernel-server

3、修改NFS服务器配置文件 

因为etc/目录在根目录下,需要sudo权限打开才能修改。

$ sudo vi /etc/exports

在文件末尾添加如下代码,保存并退出:

/opt/4412/rootfs是NFS服务器的工作目录(如该目录还不存在,需要在下一步创建),客户端要访问的文件要放在该目录下,*代表不限制IP,() 中是一系列参数。

4、创建服务器工作目录,并设置为最高权限 

$ sudo mkdir -p /opt/4412/rootfs
$ sudo chmod -R 777 /opt

5、重启服务器,使配置生效 

$ sudo service nfs-kernel-server restart

如显示如下信息,则说明重启成功: 

 如果使用的是Ubuntu 24.04,可能什么都不显示,也是重启成功(我的就如此):

注意:以后每次重新打开Ubuntu,要使用NFS,都要重启 

6、本地测试是否安装成功 

 查看/opt/4412/rootfs/目录下的文件

$ ls /opt/4412/rootfs/

如果有rootfs/目录下有文件,则cd到家目录;如果没有文件,可以用touch命令创建test.txt文件,或者其他什么文件都可以,自己随意,再cd到家目录。

 使NFS挂载工作目录到/mnt目录:

$ sudo mount -t nfs localhost:/opt/4412/rootfs /mnt

查看是否挂载成功:

$ ls /mnt/

 如/opt/4412/rootfs/目录下的文件和目录在/mnt目录下都存在,则说明挂载成功:

如需要取消挂载:

$ sudo umount /mnt

可能遇到的问题

问题一:Ubuntu17.10之后的版本NFS默认只支持协议3和4,会导致挂载失败。

解决方法:在/etc/default/nfs-kernel-server 文件末尾加一句如下内容: RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog" 然后重启 nfs 服务。

在用下面命令查看支持的版本:

$ sudo cat /proc/fs/nfsd/versions

结果如下,则说明可以支持NFS协议2:

问题二:尝试过问题一的解决方法之后,如果仍然无法解决,则可以指定uboot的NFS3版本,在开发板上设置uboot的环境变量。
参考如下格式设置

具体设置方法可以参考【系统移植】在开发板上加载内核和根文件系统的三种方法中设置bootargs自启动参数环境变量部分。

最后再重启NFS服务器

$ sudo service nfs-kernel-server restart

该部分参考NFS环境搭建 ,如果更多问题,可以查阅。


http://www.ppmy.cn/devtools/145125.html

相关文章

# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)

↑ 上方下载文档 (大小374KB) 接口文档预览 (超过50个接口) 一、数据库25张表er-关系清晰构图!(tip: 鼠标右键图片 > 放大图像) 二、难点/经验 详细说明 热门评论排序评论点赞列表|DTO封装经验分享|精华接口文档说明 组员都说喜欢分档对应枚举码 如果这篇文章…

黑客术语3

19、免杀 : 就是通过加壳、加密、修改特征码、加花指令等等技术来修改程序, 使其逃过杀毒软件的查杀。 20 、加壳 : 就是利用特殊的算法,将 EXE 可执行程序或者 DLL 动态连接库文件的 编码进行改变(比如实现压缩、加密)&a…

Jenkins 持续集成部署——Jenkins实战与运维(1)

一、Jenkins 相关配置及代码发布 1. Jenkins 发布 php 代码 1.1 安装插件 先进入“系统管理”,再进入“管理插件”,在“已安装”中检查是否有“Git plugin”和“Publish Over SSH”两个插件,如果没有则需要安装,到“可选插件”中…

解释工厂模式

参考文献:C几种工厂模式和实现实例_工厂方法模式c实例-CSDN博客 什么是工厂模式 工厂模式是一种创建对象的设计模式,它提供了一种创建对象的方式,将对象的创建和使用分离 通过工厂模式,可以根据不同的条件创建不同类型的对象&a…

【模型压缩】原理及实例

在移动智能终端品类越发多样的时代,为了让模型可以顺利部署在算力和存储空间都受限的移动终端,对模型进行压缩尤为重要。模型压缩(model compression)可以降低神经网络参数量,减少延迟时间,从而实现提高神经…

Spring Boot框架结合MongoDB实现日志数据的保存和归档

使用Spring Boot框架结合MongoDB实现日志数据的保存和归档,可以考虑以下几个关键点: 关键点概述 1) 数据库设计: 数据模型:确定你的日志记录所需的字段,如时间戳、日志级别、消息内容、用户ID等。索引&…

【DOCKER】基于DOCKER的服务之DUFS

文件上传下载服务器:https://github.com/sigoden/dufs # 拉取镜像 docker pull sigoden/dufs# 创建数据卷文件夹 mkdir -p /data/.docker/volumes/dufs# 创建容器 docker run -id --restartalways --name dufs \-p 51080:5000 \-v /data/.docker/volumes/dufs:/dat…

【漏洞-Oracle】未设置口令复杂度校验、密码有效期

1.场景描述 三方漏洞扫描: 2.详细描述 安全问题:Oracle未设置系统的口令复杂度校验、密码有效期。 危害分析结果:存在使用口令被恶意用户猜测获得,合法用户身份被仿冒,导致系统被非授权访问的可能性。 整改建议&…