目录
一、问题阐述:
使用 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
问题分析
- “T T T T T T T…” T在 uboot 中表示传输状态,T 的闪烁表示数据正在传输。
- 我之前调试 uboot 是支持 tftp 传输,也可以 ping Ubuntu主机,因此可以确定是 nfs 配置问题!
- 出现 T 情况的可能原因是 Ubuntu 的 nfs 版本太高,而Uboot 使用的 nfs 版本比较低,不兼容造成。Ubuntu 目前是 V3,需要降到 V2 才能支持uboot。
- 由于使用的是 Ubuntu24,无法连接正点的imx6ull的uboot,因为这个uboot里面的nfs是v2,ubuntu23内核是6.5不支持uboot v2。
- 处理方法:换低版本的 Linux 内核,更改 nfs 的一些配置。(具体操作跳转第二节)
nfs 作用
nfs(Network File System)网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源。nfs 是工作在内核模式下,因此不能很好的实现跨平台,一般只能是 Linux 主机或者 Unix 主机之间,但可以实现挂载使用等功能。
将 Linux 镜像和设备树文件放到 Ubuntu 中,然后在 uboot 中使用 nfs 命令将 Ubuntu 中的 Linux 镜像和设备树下载到开发板的 DRAM 中。
二、查看、下载、切换 Linux 内核及配置文件
- 查看Linux正在使用的内核版本
sudo uname -a
- 查看系统里有多少发行版系统版本
dpkg --get-selections | grep linux-image
- 查看现在内核的 nfs 版本是否支持 V2 版本:
sudo cat /proc/fs/nfsd/versions
- 下载其他版本的内核
sudo apt-get install linux-image-x.x.x-x-generic
要匹配 V2 的 nfs,Ubuntu内核一般在5.19及以下。
这一步不成功的跳转第三节查看。
- 切换内核版本
sudo vim /etc/default/grub
编辑grub文件
参考指令
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux x.x.x-x-generic"
- 更新grub文件
sudo update-grub
- 重启Ubuntu
reboot
- 再查看一下自己的 nfs 版本是否支持 V2 版本:
sudo cat /proc/fs/nfsd/versions
必须要出现“+2”,如果出现“-2”,要继续以下配置
- 配置nfs文件
sudo vim /etc/nfs.conf
打开注释并修改成“y”
10. 再次查看 Linux 正在使用的内核版本
sudo uname -a
【我是手动更新的内核版本,所以内核名称是图上这样的】
- 最后在串口调试助手输入命令,成功!
三、更新 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的内核版本。
进入后,选择正式版本里的5.18.19版本:
把这四个软件包都下载下来
放到Ubuntu的一个目录下,比如我是放在 ~/linux/kernel 里
在软件包目录下,执行安装命令
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