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

server/2024/12/23 12:34:15/

什么是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/server/152492.html

相关文章

解决uniapp中使用axios在真机和模拟器下请求报错问题

由于我的uniapp项目是通过vite脚手架搭建的,当时选择了axios作为请求方式,在本地调试的时候也一直没发现有问题,直到打包成app在真机上登录,发现报错There is no suitable adapter to dispatch the request since:-adapter xhr is…

3-Gin 渲染 --[Gin 框架入门精讲与实战案例]

在 Gin 框架中,渲染指的是将数据传递给模板,并生成 HTML 或其他格式的响应内容。Gin 支持多种类型的渲染,包括 String HTML、JSON、XML 等。 String 渲染 在 Gin 框架中,String 渲染方法允许你直接返回一个字符串作为 HTTP 响应…

Lecture 19-平方阶排序算法

直接插入排序 外循环&#xff1a;遍历所有元素&#xff0c;将当前R[i]记为K 内循环&#xff1a;从当前i-1开始&#xff0c;j往前遍历&#xff0c;从右往左找第一个<当前K的元素R[j]&#xff0c;将该元素的右边的第一个元素修改为K 逐个插入&#xff0c;插入时即确定位置 …

Linux 进程控制

目录 一、进程终止 1、进程退出场景 2、进程常见退出方法 a. 正常终止(可以通过 echo $? 查看进程退出码)&#xff1a; b. 异常退出&#xff1a; 3、分类 a. main函数返回值(return 退出) I. 退出码&#xff1a; II. 错误码&#xff1a; III. 异常信号&#xff1a;…

Unity中通过代码设置材质HDR颜色的方法参考

在Unity中&#xff0c;如果一个材质的颜色是HDR的颜色&#xff0c;此时要使用代码来设置HDR颜色的效果&#xff0c;应该使用Material.SetVector&#xff0c;而不是Material.SetColor&#xff0c;因为使用Material.Color设置颜色时&#xff0c;rgb的值无法突破1&#xff0c;但是…

本地电脑生成SSH公钥私钥对,用于SSH远程连接服务器

1、使用ssh的方式去访问Linux服务器&#xff0c;首先需要在自己电脑上生成一对公钥和私钥。 生成方式&#xff1a;打开Windows的cmd&#xff0c;输入Windows命令行命令ssh-keygen&#xff0c;然后一直回车回车回车。 回车结束后可以在 C:\User\“你的用户名”\ 文件夹下看到一…

前端知识补充—CSS

CSS介绍 什么是CSS CSS(Cascading Style Sheet)&#xff0c;层叠样式表, ⽤于控制⻚⾯的样式 CSS 能够对⽹⻚中元素位置的排版进⾏像素级精确控制, 实现美化⻚⾯的效果. 能够做到⻚⾯的样式和结构分离 基本语法规范 选择器 {⼀条/N条声明} 1&#xff09;选择器决定针对谁修改…

数据结构经典算法总复习(下卷)

第五章:树和二叉树 先序遍历二叉树的非递归算法。 void PreOrderTraverse(BiTree T, void (*Visit)(TElemType)) {//表示用于查找的函数的指针Stack S; BiTree p T;InitStack(S);//S模拟工作栈while (p || !StackEmpty(S)) {//S为空且下一个结点为空&#xff0c;意味着结束遍…