嵌入式Linux开发——解决uboot无法使用nfs服务从ubuntu中下载文件(TTT、cannot mount等错误)

这篇具有很好参考价值的文章主要介绍了嵌入式Linux开发——解决uboot无法使用nfs服务从ubuntu中下载文件(TTT、cannot mount等错误)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

最近在学习正点原子嵌入式Linux开发板uboot的移植实验,移植完之后想测试网络部分的驱动能否工作正常。最后经过测试发现tftp可以正常下载,nfs却一直报错无法下载文件,最后也是折磨了两天才解决了问题,特写下此博客进行记录、总结。

项目场景:

我的轻薄本没有网口,事先买了一个刷过固件可以连校园网的路由器。准备好路由器之后,校园网通过一根网线接路由器的wan口,剩余两个lan口,一个接到正点原子alpha开发板的ENET2、笔记本电脑连路由器的WiFi、ubuntu改为桥接静态ip,使得三者在同一网段内(windows、ubuntu、uboot(不是linux内核))

ubuntu 192.168.10.218
uboot 192.168.10.220
windows 192.168.10.46

具体实物图:

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

然后测试了一下测试三者是否能互相ping通(只有windows和ubuntu无法ping通uboot,其余四种情况都可以正常ping通),ubuntu和windows无法ping通uboot好像是uboot没有解析ping命令,但是这个不影响后面的实验。下面是三者互相ping的截图

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络
uboot ping ubuntu和windows
cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络
ubuntu ping windows
cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络
windows ping ubuntu

根据教程,一开始想使用nfs服务但行不通,但使用tftp服务可以正常下载、nfs没调通这个问题就没有过多理会。直到学习根文件系统测试时,根文件系统都是通过nfs进行挂载,我一开始还是想取巧避开nfs用tftp进行挂载,但是我看了看linux内核文件好像只支持nfs、没有看到tftp的字眼,而且后面的教程都是用nfs,所以就躲不掉了,只能先调通nfs才能继续往下走。

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络
nfs服务下载失败
cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络
nfs cannot mount错误
cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络
tftp服务可以正常下载

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

 

解决方案:

因为我能通过tftp服务进行下载,说明我的网络拓扑应该是没有什么问题的,问题应该就在nfs服务这部分。这期间我看了正点原子常见错误的总结、还有一些大佬们的博客、咨询某宝技术客服最后才得以解决,大家可以按顺序针对下面的情况进行设置和排查。

1、关闭杀毒软件(火绒等)、关闭windows的防火墙、ubuntu的也关闭。(嫌麻烦ubuntu的我就直接卸载了)

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

2、uboot使用的nfs版本是version2,而ubuntu16以上默认是version3或者version4,通过sudo cat /proc/fs/nfsd/versions可以查看当前ubuntu支持的nfs版本。我用的ubuntu版本是20.04,为了兼容要修改 /etc/default/nfs-kernel-server配置文件,通过sudo vim /etc/default/nfs-kernel-server进入文件进行修改。

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络
nfs 不支持version2

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

修改之后重启nfs服务(sudo service nfs-kernel-server restart)看是否能成功下载,如果还是不行继续往下看。

3、出现cannot mount或者编译一段时间后出现TTT错误,可以查看一下/etc/hosts、/etc/exports这两个配置文件

sudo vim /etc/exports                sudo vim /etc/hosts

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络
/etc/hosts 要添加的内容

/etc/exports添加的内容分为三部分

1:nfs服务共享目录绝对路径

2:*代表所有的ip都可访问

       如果只限定一个ip只需将*改为192.168.10.220(要和ubuntu在同一网段)

       如果要使用同一网段只需将*改为192.168.10.*

3:(rw,sync,no_root_squash)为nfs服务的一些命令参数

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

 cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

修改完exports后记得重新声明一下 sudo exportfs  -ar、重启一下nfs服务。

我看完很多人的博客到这步基本上都弄好了,nfs可以成功下载文件了,但是我的还是不行。

4:设置完上述内容后打印nfs的version还是出现-2,我用netstat看一下nfs对应端口,发现没有udp只有tcp

netstat -a | grep "nfs"

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

设置一下这个文件/etc/nfs.conf

sudo vim /etc/nfs.conf

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

注意重新启动nfs服务 sudo service nfs-kernel-server restart 重新执行netstat,出现了udp

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

sudo cat /proc/fs/nfsd/versions可以发现出现了+2,即支持nfs服务的version2,接下来要做的就是验证一下

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

在uboot中执行命令nfs 80800000 192.168.10.218:/home/lpme/linux/nfs/zImage发现可以成功下载

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

其中一些T可能是网络问题,我们看一下dram里面的内容和zImage(用winhex打开)里的内容是否相同

md.b 80800000 2000

cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络

 cannot mount,Linux,linux,经验分享,ubuntu,arm开发,网络文章来源地址https://www.toymoban.com/news/detail-808899.html

 进行比较两者是相同的,即nfs服务可以正常使用了。

总结:

非常感谢你能看到这里,希望这篇文章能帮你解决问题。

到了这里,关于嵌入式Linux开发——解决uboot无法使用nfs服务从ubuntu中下载文件(TTT、cannot mount等错误)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在嵌入式Linux设备上使用Flutter开发图形界面(试水)

    链接: https://www.bilibili.com/video/BV1qE411N7aC/?spm_id_from=333.880.my_history.page.clickvd_source=0c443477abedebf2fdf7abecef55405d 我是跟着这个视频安装 Docker Desktop for Windows + 启用k8s k8s网址 https://github.com/AliyunContainerService/k8s-for-docker-desktop 主要步骤参照 https://www.toradex.com/zh-cn/blog/zai-qian-ru-shi-linux-sh

    2024年02月21日
    浏览(33)
  • 【嵌入式】Linux开发工具arm-linux-gcc安装及使用

    宿主机 执行编译、链接嵌入式软件的计算机 目标机 运行嵌入式软件的硬件平台 “本地”编译器 用来生成在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,例如 Windows 环境生成 Windows 目标代码。 交叉编译器 用来生成在其它平台上运行的目标代

    2024年01月17日
    浏览(45)
  • 使用VSCode clangd插件进行linux内核代码阅读和嵌入式开发

    在进行 Linux 内核代码阅读和嵌入式开发时,选择合适的开发工具至关重要。VSCode 是一个流行的跨平台编辑器,并且它的扩展生态系统非常强大。在这篇博客中,我们将介绍如何使用 VSCode Clangd 插件来提高 Linux 内核代码的阅读和嵌入式开发效率。 Clangd 是一个基于 Clang 的语言

    2024年02月09日
    浏览(36)
  • 使用Yocto进行嵌入式Linux开发2 第一个基于Poky的系统

    Ubuntu: Fedora 在我们的开发主机系统上安装了所需的软件包后,我们可以使用 Git 下载当前 LTS 版本的 Poky 源代码,命令如下: 下载完成后,poky 目录中的内容如下: 在poky目录中存在oe-init-build-env脚本,用于设置构建环境。 这里,[build-directory] 是一可选参数,用于指定配置环境

    2024年02月08日
    浏览(35)
  • 嵌入式Linux 开发经验:platform_driver_register 的使用方法

    嵌入式Linux 设备驱动开发时,经常遇到平台驱动 platform_driver_register 的注册,最近深入了看了驱动开发为何使用平台驱动 开发一个设备驱动时,为了实现 设备的 打开、关闭、控制等操作,可以注册为 Linux misc 设备,不过在这之前,可以先使用 platform_driver_register 注册平台驱动

    2024年01月15日
    浏览(29)
  • 嵌入式Linux:如何进行嵌入式Linux开发?

    目录 1、裸机开发 2、SDK开发 3、驱动开发 3.1、字符设备驱动 3.2、块设备驱动 3.3、网络设备驱动 4、应用开发 嵌入式Linux开发主要有四种方式:裸机开发、SDK开发、驱动开发和应用开发。 裸机开发通常指在没有操作系统支持的环境中直接在硬件上运行程序的开发。这种开发方

    2024年01月25日
    浏览(62)
  • 嵌入式Linux驱动开发——解决/sys/bus/spi/devices下没有对应的spi设备文件

    最近在学习Linux驱动开发中SPI总线的驱动框架,但在修改完设备树添加完对应的spi设备节点后,理应在/sys/bus/spi下会有对应的spi设备,我的目录下面没有。 无spi设备 然后我查看了/proc/device-tree,发现有对应的spi设备节点,我就先没有过多理会这个问题。 /proc/device-tree下有对应

    2024年02月16日
    浏览(34)
  • 关于嵌入式开发的一些信息汇总:嵌入式C开发人员、嵌入式系统Linux

    这篇文章是关于嵌入式开发的一些基本信息,供想入行的人参考。有一些作者本人的想法,以及来自外网的大拿的文章翻译而来,原文链接在此Learning Linux for embedded systems,再次感谢,支持原创。 普通C开发人员和嵌入式C开发人员之间的 基本区别在于 ,因为嵌入式C程序被设

    2024年02月03日
    浏览(45)
  • 嵌入式开发:单片机嵌入式Linux学习路径

    SOC(System on a Chip)的本质区别在于架构和功能。低端SOC如基于Cortex-M架构的芯片,如STM32和NXP LPC1xxx系列,不具备MMU(Memory Management Unit),适用于轻量级实时操作系统如uCOS和FreeRTOS。高端SOC如基于Cortex-A架构的芯片,如三星、高通、飞卡、全志和瑞芯微等,具备MMU,支持虚拟内

    2024年02月15日
    浏览(37)
  • 嵌入式Linux开发教程汇总

    野火:https://doc.embedfire.com/products/link/zh/latest/linux/index.html 正点原子:http://47.111.11.73/docs/boards/arm-linux/index.html 百问网:http://download.100ask.net/books/Linux/ELADCM1/index.html 百问网:https://space.bilibili.com/275908810/channel/seriesdetail?sid=1714177 野火:https://space.bilibili.com/356820657/channel/seriesdeta

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包