解决Ubuntu 22.04开发板更新源404错误的ARM架构适配技巧

张开发
2026/4/13 12:08:07 15 分钟阅读

分享文章

解决Ubuntu 22.04开发板更新源404错误的ARM架构适配技巧
1. 为什么ARM开发板更新源会报404错误最近在给一块ARM架构的开发板配置Ubuntu 22.04系统时遇到了一个让人抓狂的问题无论换成阿里云、清华还是中科大的软件源执行apt update时总是报404错误。刚开始以为是网络问题反复重试了好几次都没用。后来仔细看错误信息才发现问题出在架构不匹配上。大多数开发者平时用的都是x86架构的电脑所以网上的教程和软件源也都是针对x86架构的。但开发板用的是ARM架构特别是像树莓派、NVIDIA Jetson这类开发板它们的CPU架构完全不同。这就好比你想给安卓手机安装软件却跑去下载iOS的安装包肯定装不上啊具体到错误信息你会发现报错的URL里都带有binary-arm64这样的路径。这是因为Ubuntu为不同架构维护了不同的软件仓库。x86架构的软件源路径通常是ubuntu/而ARM架构的则使用ubuntu-ports/这个路径。如果你直接用x86的源自然找不到对应的软件包服务器就会返回404错误。2. 如何确认你的开发板架构在开始修改软件源之前最好先确认一下你的开发板到底是什么架构。这个很简单只需要在终端里运行一个命令uname -m如果是ARM 64位架构的开发板会显示aarch64如果是32位的ARM开发板会显示armv7l或armv6l。x86_64则表示是普通的64位PC架构。我遇到过一些特殊情况比如某些开发板虽然用的是ARM芯片但厂商做了特殊适配可能会显示其他架构名称。这时候可以进一步查看CPU信息cat /proc/cpuinfo这里会列出处理器的详细信息你可以看到具体的CPU型号和架构特征。比如树莓派4B会显示BCM2711NVIDIA Jetson系列则会显示tegra等字样。3. ARM架构开发板的正确软件源配置知道了问题所在解决方法其实很简单把软件源URL中的ubuntu替换成ubuntu-ports就行了。不过具体操作时还是有些细节需要注意。以清华源为例原本x86架构的配置是这样的deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse改成ARM架构后应该是deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse实际操作步骤备份原来的源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑源列表文件sudo nano /etc/apt/sources.list把所有ubuntu/替换为ubuntu-ports/保存退出更新软件包列表sudo apt update4. 其他常见问题排查与解决有时候即使改了软件源可能还会遇到一些问题。这里分享几个我踩过的坑问题一部分软件包还是找不到这是因为有些软件确实没有ARM架构的版本。特别是闭源的商业软件很多都只提供x86版本。遇到这种情况要么找替代的开源软件要么看看厂商是否提供ARM版本。问题二更新速度特别慢国内用清华、阿里云的源一般速度都很快。如果发现更新很慢可以试试以下方法检查网络连接是否正常尝试ping一下镜像站地址看看延迟如何可以换其他国内镜像站试试比如华为云、腾讯云的源问题三证书错误或HTTPS问题有些开发板系统时间不正确会导致HTTPS证书验证失败。可以先同步时间sudo apt install ntpdate sudo ntpdate ntp.aliyun.com如果还是有问题可以临时使用HTTP协议不推荐长期使用deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse5. 推荐的ARM架构软件源配置经过多次测试我发现以下几个源对ARM开发板支持比较好清华源deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse阿里云源deb https://mirrors.aliyun.com/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu-ports/ jammy-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu-ports/ jammy-security main restricted universe multiverse官方源速度可能较慢deb http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse对于特定的开发板比如树莓派还可以考虑使用专门优化的源。比如树莓派官方提供的源通常会对ARM架构有更好的支持。6. 进阶技巧使用脚本自动配置如果你经常需要配置不同开发板的软件源可以写个简单的脚本来自动完成这个工作。下面是我常用的一个bash脚本#!/bin/bash # 备份原有源 echo 备份原有源... sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 设置清华源 echo 设置清华源... sudo sed -i s|http://.*archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list sudo sed -i s|http://.*security.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list sudo sed -i s|https://.*ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list sudo sed -i s|/ubuntu/|/ubuntu-ports/|g /etc/apt/sources.list # 更新软件包列表 echo 更新软件包列表... sudo apt update echo 软件源配置完成把这个脚本保存为change_source.sh然后给它执行权限chmod x change_source.sh运行脚本sudo ./change_source.sh脚本会自动完成备份、替换源和更新的全过程。你也可以根据需要修改脚本换成阿里云或其他镜像站的源。7. 特别注意事项在配置ARM开发板的软件源时有几个特别需要注意的地方区分32位和64位ARM架构ARM64aarch64和ARM32armhf的软件包是不同的确保你使用的源支持你的具体架构开发板专用系统有些开发板使用定制化的Ubuntu系统比如树莓派的Raspberry Pi OS这些系统可能需要使用特定的软件源不能直接用官方的ubuntu-ports交叉编译环境如果你在x86电脑上为ARM开发板交叉编译软件需要配置对应的交叉编译工具链和软件源容器环境在ARM开发板上运行Docker等容器时容器内的系统也需要正确配置ARM架构的软件源我在NVIDIA Jetson AGX Orin开发板上就遇到过这个问题。Jetson系统基于Ubuntu但NVIDIA做了一些定制修改。直接使用标准的ubuntu-ports源可能会导致某些NVIDIA专用软件包无法更新。这种情况下最好保留原有的NVIDIA源只替换通用的Ubuntu软件源。

更多文章