目录

前言

一、降低Ubuntu使用的linux内核版本

二、让Ubuntu中的NFS兼容V2版本

三、下载到一半出现TTT

前言

楼主使用的版本:Ubuntu 24.04.3,Linux内核版本linux-image-6.14.0-33-generic

需要的一些操作:

        uname -r    查看Ubuntu当前的内核版本

        dpkg --get-selections | grep linux-image    查看Ubuntu已安装的Linux内核版本

        dpkg --print-architecture    确认系统是 amd64 还是 arm64 架构

        apt-cache search linux| grep 6.8.0   查看apt命令支持安装的Linux内核版本

        sudo cat /proc/fs/nfsd/versions   查看Ubuntu的NFS版本

      在使用uboot的nfs命令拷贝ubuntu中的Linux内核镜像文件时出现:Loading: T T T T T T T T T T T T T T和Loading: *** ERROR: File lookup fail的错误,查阅了资料发现是NFS版本不对。uboot中的nfs版本为2,而楼主Ubuntu中的nfs版本为+3 +4 +4.1 +4.2,导致传输出现错误。

一、降低Ubuntu使用的linux内核版本

        楼主使用Linux内核版本是linux-image-6.14.0-33-generic已经不支持NFS V2版本了,因此需要降低Linux版本。参考Ubuntu 22.04版本无法挂载NFS V2的解决方法-OpenEdv-开源电子网这篇帖子,楼主发现使用帖子中的sudo apt-get install linux-image-5.19.0-41-generic在Ubuntu24中无法下载。使用 apt-cache search linux| grep 5.19查询后发现Ubuntu24的apt命令已经无法安装5.19.0版本的Linux内核,只能手动下载Linux内核的.deb包安装,.deb下载地址为Index of /mainline/v5.19.17楼主参考了这篇文章:Ubuntu 24.04.2 LTS Linux内核6.8降级更换内核版本(以5.19.0为例)_ubuntu 24.04 内核版本-CSDN博客

       创建一个脚本自动下载安装Linux内核:vim install_kernel_5.19.17.sh。将下面的脚本内容复制到install_kernel_5.19.17.sh,并保存。

  1 #!/bin/bash
  2 set -e
  3 VER=5.19.17-051917
  4 ARCH=amd64   # arm64/armhf 请改这里
  5 URL=https://kernel.ubuntu.com/mainline/v5.19.17
  6 
  7 # 1. 创建临时目录
  8 mkdir -p ~/kernel-5.19 && cd ~/kernel-5.19
  9 
 10 # 2. 下载 4 个核心 deb 包
 11 wget ${URL}/${ARCH}/linux-headers-${VER}_${VER}.202210240939_all.deb
 12 wget ${URL}/${ARCH}/linux-headers-${VER}-generic_${VER}.202210240939_${ARCH}.deb
 13 wget ${URL}/${ARCH}/linux-image-unsigned-${VER}-generic_${VER}.202210240939_${ARCH}.deb
 14 wget ${URL}/${ARCH}/linux-modules-${VER}-generic_${VER}.202210240939_${ARCH}.deb
 15 
 16 # 3.安装 
 17 sudo dpkg -i *.deb
 18 
 19 echo "清理临时文件..."
 20 rm -rf kernel-5.19

       使用chmod 777 install_kernel_5.19.17.sh赋予vim install_kernel_5.19.17.sh文件可执行权限,然后运行脚本:./install_kernel_5.19.17.sh。运行完成以后,使用dpkg --get-selections | grep linux-image查看已安装的Linux内核版本,发现5.19.17版本的Linux已经安装完成。

         接下来需要更改Ubuntu的启动内核,使用sudo vim /etc/default/grub,将文件修改为:

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.19.17-051917-generic"

        更改grub文件之后需要更新sudo update-grub,然后重启系统。重启系统之后使用uname -r 查看内核版本,如下图所示,说明内核版本降级成功:

二、让Ubuntu中的NFS兼容V2版本

         将系统降级完成以后,就可以修改Ubuntu中的NFS版本使之兼容uboot的版本。首先使用sudo cat /proc/fs/nfsd/versions查看Ubuntu中NFS的版本。然后使用sudo vim /etc/default/nfs-kernel-server对文件进行修改为:

  9 # Number of servers to start up
 10 #RPCNFSDCOUNT=8
 11 RPCNFSDCOUNT="-V 2 8"
 12 # Runtime priority of server (see nice(1))
 13 RPCNFSDPRIORITY=0
 14 
 15 # Options for rpc.mountd.
 16 # If you have a port-based firewall, you might want to set up
 17 # a fixed port here using the --port option. For more information,
 18 # see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
 19 # To disable NFSv4 on the server, specify '--no-nfs-version 4' here
 20 #RPCMOUNTDOPTS="--manage-gids"
 21 RPCMOUNTDOPTS="-V 2 --manage-gids"
 22 
 23 # Do you want to start the svcgssd daemon? It is only required for Kerberos
 24 # exports. Valid alternatives are "yes" and "no"; the default is "no".
 25 NEED_SVCGSSD=""
 26 
 27 # Options for rpc.svcgssd.
 28 #RPCSVCGSSDOPTS=""
 29 RPCSVCGSSDOPTS="--nfs-version 2,3,4 --debug --syslog"

         使用sudo service nfs-kernel-server restart重启NFS服务。查看一下服务端 NFS 版本sudo cat /proc/fs/nfsd/versions,如果已经有 +2 则说明 V2 版本 NFS 服务已经开启,如果为 -2 则说明系统内核虽然已经支持了 V2 版本的 NFS,但还没有开启。

        开启 V2 版本的 NFS,用 vim 编辑器打开 /etc/nfs.conf 文件,如果没有该文件则会自动创建一个:sudo vim /etc/nfs.conf,修改为:

        再次重启 NFS 服务,查看 NFS 版本,发现V2 版本已开启。至此问题已解决。

三、下载到一半出现TTTT

         修改NFS服务器端,配置文件sudo vim /etc/hosts添加以下内容,再次重启NFS服务。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐