解决 Ubuntu 24 连接正点 I.MX6ULL 的 uboot 使用 nfs 出现 Loading: T T T T T T T T

发布于:2024-12-20 ⋅ 阅读:(10) ⋅ 点赞:(0)

一、问题阐述:

使用 uboot 中的 nfs 命令将 Ubuntu 中的文件 zImage 下载到开发板的DRAM中。串口调试助手 FileZilla 中显示“Loading: T T T T T T T…”
在这里插入图片描述

软件

系统:WIN10
虚拟机:VMware
Linux 发行版:Ubuntu-24.04.1
开发板:正点原子 I.MX6ULL mini
uboot 启动方式:SD卡
串口调试 FTP 客户端:‌FileZilla‌

问题分析

  1. “T T T T T T T…” T在 uboot 中表示传输状态,T 的闪烁表示数据正在传输。
  2. 我之前调试 uboot 是支持 tftp 传输,也可以 ping Ubuntu主机,因此可以确定是 nfs 配置问题!
  3. 出现 T 情况的可能原因是 Ubuntu 的 nfs 版本太高,而Uboot 使用的 nfs 版本比较低,不兼容造成。Ubuntu 目前是 V3,需要降到 V2 才能支持uboot。
  4. 由于使用的是 Ubuntu24,无法连接正点的imx6ull的uboot,因为这个uboot里面的nfs是v2,ubuntu23内核是6.5不支持uboot v2。
  5. 处理方法:换低版本的 Linux 内核,更改 nfs 的一些配置。(具体操作跳转第二节)

nfs 作用

nfs(Network File System)网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源。nfs 是工作在内核模式下,因此不能很好的实现跨平台,一般只能是 Linux 主机或者 Unix 主机之间,但可以实现挂载使用等功能。

将 Linux 镜像和设备树文件放到 Ubuntu 中,然后在 uboot 中使用 nfs 命令将 Ubuntu 中的 Linux 镜像和设备树下载到开发板的 DRAM 中。

二、查看、下载、切换 Linux 内核及配置文件

  1. 查看Linux正在使用的内核版本
sudo uname -a

在这里插入图片描述

  1. 查看系统里有多少发行版系统版本
dpkg --get-selections | grep linux-image

在这里插入图片描述

  1. 查看现在内核的 nfs 版本是否支持 V2 版本:
sudo cat /proc/fs/nfsd/versions

在这里插入图片描述

  1. 下载其他版本的内核
sudo apt-get install linux-image-x.x.x-x-generic

要匹配 V2 的 nfs,Ubuntu内核一般在5.19及以下。

这一步不成功的跳转第三节查看。

  1. 切换内核版本
sudo vim /etc/default/grub

编辑grub文件
在这里插入图片描述

参考指令

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux x.x.x-x-generic"
  1. 更新grub文件
sudo update-grub
  1. 重启Ubuntu
reboot
  1. 再查看一下自己的 nfs 版本是否支持 V2 版本:
sudo cat /proc/fs/nfsd/versions

在这里插入图片描述
必须要出现“+2”,如果出现“-2”,要继续以下配置

  1. 配置nfs文件
sudo vim /etc/nfs.conf

打开注释并修改成“y”
在这里插入图片描述
10. 再次查看 Linux 正在使用的内核版本

sudo uname -a

在这里插入图片描述
【我是手动更新的内核版本,所以内核名称是图上这样的】

  1. 最后在串口调试助手输入命令,成功!
    在这里插入图片描述

三、更新 Ubuntu 内核版本

3.1 apt-get install

如果出现如下 sudo apt-get install 无法定位软件包的问题
在这里插入图片描述

输入安装软件包的命令

sudo apt-get install

添加或修改镜像源

sudo vim /etc/apt/sources.list

更新源

sudo apt-get update

具体参考下面的帖子进行修改
[1] ubuntu命令“sudo apt-get install”无法定位软件包?
[2] Ubuntu sudo apt-get install 出现“E: 无法定位软件包问题”解决方法汇总

3.2 手动更新Ubuntu内核版本

如果尝试修改镜像源或执行 apt-get 等操作后,仍然无法定位软件包,可以考虑手动更新Ubuntu的内核版本。

  1. 内核下载网站:https://kernel.ubuntu.com/mainline/

  2. 进入后,选择正式版本里的5.18.19版本:
    在这里插入图片描述

  3. 把这四个软件包都下载下来
    在这里插入图片描述

  4. 放到Ubuntu的一个目录下,比如我是放在 ~/linux/kernel 里
    在这里插入图片描述

  5. 在软件包目录下,执行安装命令

sudo dpkg -i *.deb

回车后安装自动运行。安装完成后,查看内核版本:

dpkg --get-selections | grep linux-image

在这里插入图片描述
说明已经安装成功,此时要注意,安装的内核版本名称是“5.18.19-051819”。在编辑grub文件要这样写
在这里插入图片描述

也可以参考下面的帖子进行操作
[3] 如何手动更新Ubuntu内核版本

参考文章

[1] ubuntu命令“sudo apt-get install”无法定位软件包?
[2] Ubuntu sudo apt-get install 出现“E: 无法定位软件包问题”解决方法汇总
[3] 如何手动更新Ubuntu内核版本
[4] Uboot使用nfs挂载设备树、内核失败(Loading: T T T T T T T T /Loading: *** ERROR: File lookup fail)
[5] ubuntu 23 连接正点imx6ull的uboot网络设置(nfs和tftp)
[6] 解决uboot用NFS下载程序出现:Loading: *** ERROR: File lookup fail
[7] Linux——Uboot使用NFS出现Loading: T T T T T T T T /Loading: *** ERROR: File lookup fail