【踩坑日记】【教程】嵌入式 Linux 通过 nfs 下载出现 T T T T [Retry count exceeded: starting again]

文章目录

  • 1 本篇文章解决的问题
  • 2 问题解决原理
  • 3 问题环境
  • 4 开启 ubuntu-20.04 的 nfs2
    • 4.1 确认 nfs2 是否已经开启
    • 4.2 开启 nfs2
  • 5 卸载 iptables
    • 5.1 卸载 iptables
    • 5.2 禁用 ufw
    • 5.3 尝试重新下载
  • 6 原理分析
    • 6.1 nfs2 开启部分
    • 6.2 卸载 iptables 部分
  • 7 后记
    • 7.1 拓扑结构一
    • 7.2 拓扑结构二

1 本篇文章解决的问题

  1. 正点原子的嵌入式 Linux 教程中,通过 nfs 下载出现 T T T T [Retry count exceeded: starting again]
  2. 开启并确认虚拟机服务器已经支持 nfs2,但是这个问题仍然没有得到解决
    在这里插入图片描述

2 问题解决原理

  1. ubuntu 20.04 默认不支持 nfs2,需要手动开启。但是根据网上的其他文章进行修改,无果。比如在 /etc 文件夹下面根本找不到 nfs 的配置文件 nfs.conf
  2. 虚拟机开启 nfs2 后,通过 nfs 下载仍然出现 T T T T 的重试(nfs 80800000 192.168.31.128:/home/witheart/linux/nfs/zImage
    ),这是 ubuntu 中的 iptables 导致的

3 问题环境

  1. 虚拟机版本为 ubuntu-20.04
  2. 开发板为正点原子 I.MX6ULL Linux 阿尔法开发板-V2.4
  3. 虚拟机可以 ping 通开发板
  4. 关闭了火绒,系统防火墙

4 开启 ubuntu-20.04 的 nfs2

注意,此处开启 nfs2 的步骤不同于其他教程,主要是针对 ubuntu-20.04 没有 /etc/nfs.conf 这个文件,其他教程需要修改这个文件但是在 ubuntu-20.04 下安装 nfs 后并不能找到这个文件。

  • 如下面这两个教程,都是需要修改 nfs.conf 文件的,但是我在这个环境下并没有找到这个文件:
    https://blog.csdn.net/m0_58756221/article/details/136066519
    https://blog.csdn.net/weixin_56646002/article/details/127388021

4.1 确认 nfs2 是否已经开启

  • 查看 nfs 的版本
sudo cat /proc/fs/nfsd/versions

+2 就代表已经开启 nfs2 服务,则第 4 节可跳过,如果是 -2 就往下看,开启 nfs2
在这里插入图片描述

4.2 开启 nfs2

参考文章:
https://blog.csdn.net/Qiuoooooo/article/details/112601940

  • 进入 /etc/default/nfs-kernel-server这个文件
sudo vim /etc/default/nfs-kernel-server
  • 添加这一行,保存退出:
    在这里插入图片描述
  • 更新 Linux 系统上的 NFS(网络文件系统)导出列表:
sudo exportfs  -ar

此命令没有其他输出。

  • 查看 Linux 系统中与 NFS 相关的网络连接信息
netstat -a | grep "nfs"

有udp最重要
在这里插入图片描述

  • 再次查看 Linux 系统上 NFS 服务器支持的协议版本
sudo cat /proc/fs/nfsd/versions

+2 说明已经支持 nfs2 了
在这里插入图片描述

5 卸载 iptables

开启 nfs2 后,可以在开发板 u-boot 上重新尝试用 nfs 下载虚拟机上的文件,如果成功了,那么就结束了。如果不幸你和笔者一样发现开启 nfs2 后依旧出现 T T T T 的超时,那么很有可能是 iptables 搞的鬼!
在这里插入图片描述

5.1 卸载 iptables

sudo apt-get remove iptables
sudo apt-get purge iptables

输出:
在这里插入图片描述

5.2 禁用 ufw

  1. 禁用 ufw

    使用以下命令禁用 ufw,这将关闭所有通过 ufw 配置的防火墙规则:

    sudo ufw disable
    
  2. 停止 ufw 服务

    sudo systemctl stop ufw
    
  3. 禁用 ufw 服务开机启动

    sudo systemctl disable ufw
    

5.3 尝试重新下载

  • 在开发板 u-boot 上重新尝试用 nfs 下载虚拟机上的文件,如果成功了,那么就结束了。
  • 如果还是不行,尝试关闭火绒后重新操作。

6 原理分析

6.1 nfs2 开启部分

  • 为什么找不到 nfs.conf,笔者刚开始以为是 nfs 安装问题,反复重试了几次,都找不到 nfs.conf,后面从下面这个网站发现在 ubuntu-20.04 上,安装 nfs 后,可能根本就没有 /etc/nfs.conf 这个文件。
    https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/1973101
    在这里插入图片描述

6.2 卸载 iptables 部分

  • ufw(Uncomplicated Firewall)是 Ubuntu 和其他基于 Debian 的发行版中常用的防火墙工具。
  • iptables 是 Linux 系统中的一个命令行工具,用于配置、维护和检查 IP 数据包过滤规则。它是 Linux 内核中的防火墙模块 netfilter 的用户空间接口,允许管理员定义规则以控制流入和流出的网络流量。
  • 这两个模块都会导致虚拟机能 ping 通开发板,但是 nfs 无法下载,不断重试,出现 T T T T …。
  • 参考教程
    http://47.111.11.73/thread-305543-1-1.html
    在这里插入图片描述

7 后记

在两种网络拓扑结构上都尝试了一下,问题都解决了。

7.1 拓扑结构一

参考正点原子这个视频设置的:
https://www.yuanzige.com/course/detail/50096?section_id=87473

  • 开发板接电脑网口
  • 电脑通过wifi上网
  • 虚拟机设置一桥接网卡专门用于与连接在电脑网口上的开发板通信
  • 虚拟机设置另一 NAT 网卡用于访问外网

7.2 拓扑结构二

  • 电脑、开发板、虚拟机都通过网线连接路由器
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/47590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【博士每天一篇文献-算法】连续学习算法之HNet:Continual learning with hypernetworks

阅读时间:2023-12-26 1 介绍 年份:2019 作者:Johannes von Oswald,Google Research;Christian Henning,EthonAI AG;Benjamin F. Grewe,苏黎世联邦理工学院神经信息学研究所 期刊&a…

【Vue3 ts】echars图表展示统计的月份数据

图片展示 此处内容为展示24年各个月份产品的创建数量。在后端统计24年各个月份产品数量后,以数组的格式发送给前端,前端负责展示。 后端 entity层: Data Schema(description "月份统计")public class MonthCount {private Stri…

处理uniapp刷新后,点击返回按钮跳转到登录页的问题

在使用uniapp的原生返回的按钮时,如果没有刷新会正常返回到对应的页面,如果刷新后会在当前页反复横跳,或者跳转到登录页。那个时候我第一个想法时:使用浏览器的history.back()方法。因为浏览器刷新后还是可以通过右上角的返回按钮…

01认识Java(介绍安装调试)

单元概述 本章主要介绍Java语言的发展历史,了解Java的运行原理及Java编程语言的特点,通过搭建Eclipse集成开发环境来运行Java应用程序。 1.1 Java简介 1.1.1 什么是Java 计算机语言是人与计算机之间的通讯语言,分为机器语言、汇编语言、高…

短视频是如何一步步“蚕食”我们大脑的?

点击上方△腾阳 关注 转载请联系授权 你好,我是腾阳。 今天我们将深入探讨短视频是如何「蚕食」我们的大脑。 首先问下自己,你有多久没有看完一篇长文了? 你是否曾在清晨阳光中,被手机屏幕上短视频图标吸引,而忘记…

ArrayList.subList的踩坑

需求描述&#xff1a;跳过list中的第一个元素&#xff0c;获取list中的其他元素 原始代码如下&#xff1a; List<FddxxEnterpriseVerify> companyList fddxxEnterpriseVerifyMapper.selectList(companyQueryWrapper);log.info("获取多个法大大公司数据量为&#…

【Vue】快速入门:构建你的第一个Vue 3应用

文章目录 一、Vue简介二、环境搭建1. 安装Node.js和npm2. 安装Vue CLI 三、创建Vue项目四、项目结构介绍五、组件基础创建一个组件使用组件 六、模板语法插值指令v-bindv-ifv-for 七、事件处理八、状态管理安装Vuex创建Store使用Store 九、路由基础安装Vue Router配置路由使用路…

科普文:详解23种设计模式

概叙 设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结&#xff0c;其中最出名的当属 Gang of Four&#xff08;GoF&#xff09;的分类了&#xff0c;他们将设计模式分类为 23 种经典的模式&#xff0c;根据用途我们又可以分为三大类&#xff0c;分别为创建型模式…

《Python数据科学之四:建模与机器学习基础》

《Python数据科学之四&#xff1a;建模与机器学习基础》 在数据科学项目中&#xff0c;经过数据清洗、探索性数据分析&#xff08;EDA&#xff09;和数据可视化之后&#xff0c;下一个重要步骤是建立数据模型并应用机器学习技术。本文将深入探讨如何使用 Python 进行建模和机器…

Java异常抛出与处理方法

在Java编程中&#xff0c;异常处理是一个非常重要的部分。通过正确的异常处理&#xff0c;我们可以提高程序的健壮性和可靠性&#xff0c;避免程序在运行过程中出现意外的崩溃。本文将详细讲述Java异常的抛出与处理方法&#xff0c;并通过示例代码进行说明。 一、Java异常的分…

11 网络编程、反射

文章目录 网络编程1、网络的相关概念2、InetAddress 类3、Socket4、TCP 网络通信编程5、UDP 网络通信编程 反射1、反射机制2、Class 类3、类加载4、通过反射获取类的结构信息5、通过反射创建对象6、通过反射访问类中的成员 网络编程 1、网络的相关概念 网络通信 网络 ip 地…

安全防御:智能选路

目录 一、智能选路 1.1 就近选路 1.2 策略路由 1.3 虚拟系统---VRF 二、全局选路策略 1&#xff0c;基于链路带宽进行负载分担 2&#xff0c;基于链路质量进行负载分担 3&#xff0c;基于链路权重的负载分担 4&#xff0c;根据链路优先级的主备备份 DNS透明代理 一、…

Codeforces Round 895 (Div. 3)(A~G)

A. Two Vessels Problem - A - Codeforces 要我们找到最少操作多少次&#xff0c;a和b内的水一样多&#xff0c;从a拿出i克放到b中&#xff0c;之间的差距减少2i&#xff0c;数据范围不大&#xff0c;循环解决即可。 #include<iostream> #include<algorithm> #in…

推荐算法——MRR

定义&#xff1a; MRR计算的是第一个正确答案的排名的倒数&#xff0c;并对所有查询取平均值。它衡量了模型在排序结果中快速找到正确答案的能力。 其中&#xff1a; Q 是查询的总数。ranki​ 是第 i 个查询中第一个正确答案的排名&#xff08;位置&#xff09;。如果第一个正…

Django定时任务框架django-apscheduler的使用

1.安装库 pip install django-apscheduler 2.添加 install_app django_apscheduler 3.在app下添加一个task.py文件&#xff0c;用来实现具体的定时任务 task.pydef my_scheduled_job():print("这个任务每3秒执行一次", time.time()) 4.在app下创建一个manag…

我在哪里可以找到Vim速查表备忘单?

以下是一些适合初学者和高级用户的Vim速查表推荐&#xff1a; aral的Vim速查表 这是一个空间感强且易于理解的速查表&#xff0c;帮助你理解每个命令将跳转到的位置。aral的Vim速查表 Vim速查表 如果你需要一个全面且用户友好的速查表&#xff0c;可以访问Vim速查表。这个资源…

Redis 教程:从入门到入坑

目录 1. Redis 安装与启动1.1. 安装 Redis1.1.1. 在Linux上安装1.1.2. 在Windows上安装 1.2. 启动 Redis1.2.1. 在Linux上启动1.2.2. 在Windows上启动 1.3. 连接Redis1.3.1. 连接本地Redis1.3.2. 连接远程Redis1.3.2.1. 服务器开放端口1.3.2.2. 关闭防火墙1.3.2.3. 修改配置文件…

【QT开发(19)】2023-QT 5.14.2实现Android开发,使用新版SDK,试图支持 emulator -avd 虚拟机

之前的博客【QT开发&#xff08;17&#xff09;】2023-QT 5.14.2实现Android开发&#xff0c;SDK是24.x版本的&#xff0c;虚拟机是32位的&#xff0c;但是现在虚拟机是64位的了&#xff0c;需要升级SDK匹配虚拟机 文章目录 最后的效果1.1 下载最新版 SDK tools (仅限命令行工…

java学习--面向对象三大特征--继承

子类也可以有子类&#xff0c;ed就是子类的子类&#xff0c;也可以是a的子类 package com.extend_test01;public class Extends {public static void main(String[] args) {Pupil pupil new Pupil();pupil.setName("xiao");pupil.setScore(60);pupil.tesing();Syst…

线性回归中的平方损失和正规方程

损失函数 损失函数是用来衡量机器学习模型性能的一个函数。它通过计算模型的预测值与真实值之间的误差&#xff0c;用一个实数来表示这种误差。误差越小&#xff0c;说明模型的性能越好&#xff0c;预测越准确。在确定损失函数之后&#xff0c;通过优化算法求解损失函数的极小值…