正点原子u-boot学习nfs版本不匹配解决方案

问题

在学习正点原子的《Linux之系统移植和根文件系统构建篇》的3.2讲时,视频教程使用nfs在uboot环节下载zImage镜像,我下载时一直显示T T T,下载超时。
通过查阅资料,在这篇文章中发现了可能是nfs的版本不匹配问题。
嵌入式Linux开发——解决uboot无法使用nfs服务从ubuntu中下载文件(TTT、cannot mount等错误)

问题定位

上面的解决方法是直接开启nfs2,但是我发现我使用的ubuntu24.04版本根本就不支持nfs2功能。查看命令:grep CONFIG_NFSD_V2 /boot/config-$(uname -r)
在这里插入图片描述
如图显示为not set,则表明内核层面就不支持 NFSv2,所以也就不可能开启NFSv2。在这种情况下,可以选择降低ubuntu的版本,但是太麻烦了,在github上找到了一个nfsv2的程序,可以解决这个问题。
在这里插入图片描述
NFSv2下载地址

NFSv2安装使用流程

  1. 下载源代码,并在ubuntu中解压;
  2. 在源代码目录下创建一个build文件夹mkdir build
  3. 进入build目录,执行命令cmake ..
  4. 执行命令make,获得最终的nfsv可执行文件
  5. 关闭系统nfs,sudo apt remove nfs-kernel-server
  6. 彻底禁用rpcbind,sudo systemctl stop rpcbind rpcbind.socket,`sudo systemctl disable rpcbind rpcbind.socket``
  7. 重启系统

在需要使用nfsv2的使用,进入build文件夹执行命令

# 格式:./nfsv2 [你要共享的文件夹路径]
# 例如:你要下载 /home/user/linux/zImage,那就指定该目录
sudo ./nfsv2 /home/user/linux

在这里插入图片描述
如上图所示,成功下载

缺点

每次使用需要重新启动
卸载了系统nfs,后续想使用系统nfs,需要重新下载配置

更新

在后续的根文件移植中,需要使用nfs来进行根文件的挂载,使用的命令为:

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.250:
/home/zuozhongkai/linux/nfs/rootfs,proto=tcp rw ip=192.168.1.251:192.168.1.250:192.168.1.1:
255.255.255.0::eth0:off' //设置 bootargs

在这里可以直接使用ubuntu支持的nfs版本,例如version3
指定使用的版本命令

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.250:
/home/zuozhongkai/linux/nfs/rootfs,proto=tcp,nfsvers=3 rw ip=192.168.1.251:192.168.1.250:192.168.1.1:
255.255.255.0::eth0:off' //设置 bootargs

其实这样在前面的uboot阶段,可以放弃使用nfs进行网络下载,使用tftp。在根文件挂载的时候,nfs就可以支持version3了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值