U-Boot 中使用 nfs 命令加载文件报错指南

目录

    • 问题一
      • 问题描述
      • 错误原因
      • 解决方案
    • 问题二
      • 问题描述
      • 解决方案
    • 更多内容

在嵌入式 Linux 开发中,我们经常使用 nfs 命令加载服务端的共享文件或者挂载文件系统。关于服务端 NFS 服务的搭建可以参考基于 NFS 的文件共享实现。

U-Boot 也支持了 nfs 命令,笔者在 U-Boot 命令模式下,学习使用 nfs 命令从服务端(虚拟机 Ubuntu 18.04)下载 Linux 内核镜像文件到开发板 RAM 的过程中遇到了一些问题,经过一番波折终于都解决了,故此记录一下。

问题一

问题描述

  • 开发板 ping 服务端 IP 通过,但是在使用 nfs 命令下载 Linux 内核镜像文件时出现了文件查找失败的错误:
  • Loading: *** ERROR: File lookup fail

错误原因

  • NFS 版本不兼容导致的共享文件找不到
    • U-Boot 中 NFS 为 V2 版本
    • 服务端 NFS 为 V3、V4 版本

解决方案

  • 修改服务端 /etc/default/nfs-kernel-server 文件:
sudo vim /etc/default/nfs-kernel-server

  • 重启 NFS 服务:
sudo service nfs-kernel-server restart
  • 查看一下服务端 NFS 版本:
sudo cat /proc/fs/nfsd/versions

  • 如果已经有 +2 则说明 V2 版本 NFS 服务已经开启,如果为 -2 则说明系统内核虽然已经支持了 V2 版本的 NFS,但还没有开启;
  • 开启 V2 版本的 NFS,用 vim 编辑器打开 /etc/nfs.conf 文件,如果没有该文件则会自动创建一个:
sudo vim /etc/nfs.conf
  • 配置 udp 和 vers2 为 y:

  • 再次重启 NFS 服务:
sudo service nfs-kernel-server restart
  • 再次查看 NFS 版本,V2 版本开启了:

  • 测试下载,出现问题二

问题二

问题描述

  • 使用 nfs 命令下载文件过程中出现传输中断,打印 T T T…

解决方案

  • 编辑服务端 /etc/hosts 文件:
sudo vim /etc/hosts
  • 添加开发板 IP 和服务端 NFS 共享文件目录:

  • 再次重启 NFS 服务:
sudo service nfs-kernel-server restart
  • 再次测试下载,问题解决:

更多内容

  • CSDN博客:@Hello阿尔法
  • 哔哩哔哩:@Hello阿尔法
  • 知乎:@Hello阿尔法