Ubuntu 历史版本 ISO 下载与校验:归档站点、apt 源与云镜像指南
前段时间帮同事复现一个老项目的问题对方给的启动盘镜像标签是ubuntu-16.04.7-server-amd64.iso。我打开 官网下载页一看页面上只有 24.04 LTS 和最新非 LTS翻遍了页脚也没找到任何历史版本的入口最后是在一个归档站点的目录列表里把文件捞出来的。这事其实特别常见Ubuntu 每次发布新版本旧镜像就被挪走但文件从来没有被删掉只是换了一个门牌号。这篇就聊透这件事Ubuntu 历史版本 ISO 镜像文件到底放在哪、怎么快速定位、怎么批量下载、怎么确保下下来的东西是完整的。内容偏实操运维、嵌入式、测试、还有要搭课程实验环境的同学都用得上哪怕你只是想把一台十年高龄的老机器重装一遍也能直接抄。1. 老版本 ISO 并没有下架只是换了归档站点官网找不到老版本是所有新手的第一个坎。我第一次遇到时的反应是把下载页翻了三遍甚至怀疑是不是被商业化了、故意不让人下旧版。后来才明白Ubuntu 的做法很朴素把镜像按时效性拆到不同的站点上托管下载页只负责展示当前还在标准支持期内的版本历史文件统一进归档站。1.1 下载页看不到 ≠ 文件不存在Ubuntu 的 ISO 发布站点本质上就是一个 Apache 目录列表你看到的那些下载按钮只是官方给目录里的某个文件加了一层美化链接而已。也就是说只要你知道文件在哪个目录就能绕过所有页面直接拿到文件。我习惯把这件事类比成图书馆官网下载页是新书推荐台只摆最近上架的书归档站是密集书库老书全在里面只是没有导览牌得自己按编号找。所以找历史版本的核心不是搜而是知道编号规则编号清楚了URL 就是拼出来的。有一点要提前说清楚老版本 ISO 依然存在不代表它还适合当生产环境用。标准支持期结束后这些系统不再收普通安全更新装它往往是为了复现特定环境、兼容特定硬件或者跑特定软件。心里有这个前提后面选版本才不会跑偏。1.2 三个站点的分工releases、old-releases、cdimage真正需要记住的域名其实只有三个我列成表方便直接对着用。站点承担的角色典型路径适合找什么releases.ubuntu.com当前仍在标准支持期内的正式版releases.ubuntu.com/22.04/还在维护的 LTS 和最新非 LTSold-releases.ubuntu.com已结束标准支持的归档版old-releases.ubuntu.com/18.04/绝大多数历史版本 ISO 与 apt 源cdimage.ubuntu.com每日构建、预发布、部分特殊镜像cdimage.ubuntu.com/daily-live/current/测试版、部分老架构、定制镜像cloud-images.ubuntu.com云镜像与虚拟机镜像cloud-images.ubuntu.com/releases/18.04/release/img、vmdk、rootfs 压缩包表里最后一行是很多人忽略的。你要的是能跑在虚拟机里的老系统那.img、.vmdk或者.tar.gz的 rootfs 往往比 ISO 更省事因为不用走安装流程导入即用。后面第 6 节我会专门讲这个。old-releases.ubuntu.com这个站点值得单独强调。它不只放 ISO还放归档的软件源。这一点非常关键你把 18.04 装好之后如果/etc/apt/sources.list还指向archive.ubuntu.comapt update会直接失败因为那些包已经被挪到归档站了。装系统和配源是同一件事的两半很多教程只讲一半。1.3 判断该去哪个站点的一条经验规则不用记具体版本记住这条规则就够一个版本的标准支持期结束后它的 ISO 会从releases.ubuntu.com挪到old-releases.ubuntu.com。LTS 版本的标准支持是 5 年非 LTS 只有 9 个月。所以 18.04 LTS 的标准支持在 2023 年上半年结束如今你想下 18.04 的镜像就得去归档站22.04 还在支持期内releases.ubuntu.com/22.04/就能直接拿到。这个搬运是渐进的有时候你会撞见某个点版本还在新站、另一个点版本已经进归档的中间状态别怀疑自己看错了按目录列表实际存在的位置为准就行。提示如果你不确定手上的版本号该去哪个站最省事的办法是两个站都试一次。目录索引是纯静态的打开速度很快一次 404 就换另一个不要花时间在网上搜ubuntu 18.04 iso 下载地址这类关键词搜出来的大多是二次转载文件来源不一定干净。顺带说一句网上大量XX镜像站提供的下载页本质上就是给old-releases做了个转发或者同步文件本身没问题但你在非官方页面点下载时最好还是回到官方目录核对一下文件名和校验值这一步在后面的第 4 节会细讲。2. 把要下的版本号、代号和镜像类型报准确定位文件失败八成不是站点找错了而是版本号说得不精确。我帮人排查时最常听到的一句是我要下 ubuntu 18这句话等于没说因为 18 下面有 18.04 和 18.1018.04 下面又有点版本和好几种镜像形态。2.1 版本号是年份.月份代号是给它们起的绰号Ubuntu 的版本号规则极其直白年份.月份18.04 就是 2018 年 4 月发布22.10 就是 2022 年 10 月。偶数年 4 月发布的是 LTS其余都是短周期版本。代号则是一组形容词 动物的组合按字母顺序排列写文档的时候提代号往往比提版本号更省歧义。版本号代号类型标准支持结束14.04Trusty TahrLTS2019 年16.04Xenial XerusLTS2021 年18.04Bionic BeaverLTS2023 年20.04Focal FossaLTS2025 年22.04Jammy JellyfishLTS2027 年24.04Noble NumbatLTS2029 年22.10 / 23.04 / 23.10Kinetic / Lunar / Mantic短周期发布后 9 个月表里的时间点只是方便你判断该去哪一站不需要背下来。真正需要你注意的规律是凡是你想找的版本落在表里标准支持结束那一列已经是过去的直接去old-releases。还有个历史包袱值得一提早期版本比如 8.04、10.04、12.04在归档站里的目录结构和新版本不完全一致有的在根目录下按版本号命名有的藏在releases/子目录里。遇到某一层目录里没看到你要的版本别急着判定不存在往上退一层再看看同级目录这是我在归档站里摸索出来的习惯动作。2.2 点版本18.04 和 18.04.6 是两个不同的文件这是第二高频的困惑点。LTS 版本在支持期内会发布若干次点版本point release通常是 18.04.1 到 18.04.6 这样每次点版本会把期间累积的更新打包进 ISO同时也会更新一部分安装器逻辑。关键在于新点版本发布后老的点版本 ISO 会被从目录里移除因为它们是互相取代的关系。所以你现在去归档站的 18.04 目录里看到的大概率只有 18.04.6也就是最终版而不会有 18.04.0 到 18.04.5。这带来两个非常实际的后果。第一如果你手上保存的文档写的是下载 ubuntu-18.04.3-desktop-amd64.iso按这个文件名去搜是搜不到的正确的做法是去目录列表里看看现在还剩哪个点版本用最终版替代功能上只会更全不会更差。第二如果你确实需要某个特定点版本比如某个老硬件的驱动只在 18.04.2 的安装器里工作正常那就得另想办法了官方归档站不提供只能找可信的第三方归档或者自己的历史备份。这种情况我一般建议先确认真的必须用那个点版本因为绝大多数兼容性问题其实出在内核和固件上而不是点版本本身。2.3 镜像形态和架构desktop、live-server、server、alternate 的区别同一个版本号下面往往躺着一堆文件名相似但用途完全不同的 ISO。我在这个问题上吃过一次亏用live-server当桌面版装了半天装完发现是纯命令行界面。列张表把常见的几种理清楚。镜像名片段安装方式装完有什么适用场景desktop图形化安装先启动 Live 桌面再装带图形桌面桌面机、需要 GUI 的调试环境live-server文本界面安装器基于 Live 系统无图形界面18.04 及以后的服务端首选server传统文本安装器早期版本无图形界面16.04 及更早的服务端alternate文本安装器可定制程度更高取决于选项老版本、特殊分区需求关于alternate它在 18.10 前后逐步退出了历史舞台。如果你要做 RAID、LVM 之类的复杂分区布局18.04 及以后的live-server已经能支持不必再去找 alternate。而 16.04 及更早的服务端版本你看到的文件名里通常是server而不是live-server这个差异纯粹是历史原因。架构方面最常见的后缀是amd6464 位 x86、i38632 位 x86、arm64、armhf、ppc64el。这里有个节点必须知道32 位的i386桌面镜像大约在 18.04 这一代之后就不再提供了而 32 位服务端镜像停得更早。所以你要是想给一台老 32 位机器装新系统能选的上限卡在 18.04 附近再往后就得换架构或者换发行方式了。注意老版本 ISO 的架构支持是逐年收缩的i386、ppc 这些架构在某个版本之后会彻底消失。给老机器找镜像时先确认 CPU 架构再看目录里还剩哪些架构的文件反过来推能装到哪个版本比先定版本再去凑架构省事得多。3. 拼 URL 的三种走法浏览器、命令行、镜像站版本号报准了接下来就是怎么把文件弄到本地。我通常根据只要一个文件还是要一批文件来选择方式前者用浏览器最快后者必须在命令行里做。3.1 看懂目录索引里的文件命名规律归档站的目录页就是最朴素的文件列表点进去看到的全是ubuntu-xxx.iso、SHA256SUMS、xxx.torrent这类文件。命名规律非常固定ubuntu-版本号-镜像形态-架构.iso举几个真实存在的例子对照着看ubuntu-18.04.6-desktop-amd64.iso18.04 最终点版本的 64 位桌面版ubuntu-16.04.7-server-amd64.iso16.04 最终点版本的服务端ubuntu-22.04.4-live-server-amd64.iso22.04 某个点版本的 Live 服务端ubuntu-18.04.6-desktop-i386.iso18.04 的 32 位桌面版你会发现规律极其机械只要记住这个模板哪怕你从没打开过页面也能直接把 URL 拼出来http://old-releases.ubuntu.com/releases/版本号/文件名比如 18.04 的桌面版就是old-releases.ubuntu.com/releases/18.04/ubuntu-18.04.6-desktop-amd64.iso。我实测下来用这套模板拼 URL 的成功率很高唯一的前提是版本号和文件名片段得准确尤其是点版本号写错了就是 404。3.2 用 wget 和 aria2c 把整个目录列出来再批量抓当你不确定目录里到底有哪些文件时与其反复试 URL不如先把列表抓下来看一眼。# 抓取目录索引过滤出所有 iso 文件名 curl -s http://old-releases.ubuntu.com/releases/18.04/ \ | grep -oE href[^]\.iso \ | cut -d -f2 \ | sort -u这条命令执行完目录里所有 ISO 的文件名就打印出来了一眼就能看到当前还剩哪个点版本、有哪些架构。确认文件名之后再单独下载。# 断点续传下载网络抖动时会自动接着传 wget -c http://old-releases.ubuntu.com/releases/18.04/ubuntu-18.04.6-desktop-amd64.iso-c这个参数请务必加上。归档站的带宽不如主站尤其是在国内访问时偶尔会出现速度掉到几十 KB 的情况传到一半断了很常见没有-c就得从零开始。如果嫌单线程太慢aria2c是更合适的选择它可以把一个文件切成多段并行下载aria2c -x 8 -s 8 -c -d ./iso \ http://old-releases.ubuntu.com/releases/18.04/ubuntu-18.04.6-desktop-amd64.iso-x 8是单服务器最大连接数-s 8是分片数-d指定保存目录。这两个值不建议调太大归档站对单 IP 并发是有限制的开到十几以上反而可能被限速甚至拒绝连接。8 是我反复试过比较稳的档位。另外目录里通常还会有一个.torrent文件理论上用 BT 下载能借到别人的带宽wget http://old-releases.ubuntu.com/releases/18.04/ubuntu-18.04.6-desktop-amd64.iso.torrent aria2c --seed-time0 ubuntu-18.04.6-desktop-amd64.iso.torrent但要有个心理预期越老的版本做种的人越少很多老种子已经彻底没有源了aria2c会一直停在等待元数据的状态。所以 BT 只适合最近发布的版本历史版本还是老老实实走 HTTP。3.3 国内镜像站能不能省下这部分时间能省但要会看。国内不少高校和企业镜像站同步了 Ubuntu 的发行版镜像路径通常形如镜像站域名/ubuntu-releases/。需要注意的是镜像站的同步策略各有不同有的只同步当前支持的版本有的额外保留了归档版本目录。我的做法是这样的先在镜像站首页的目录列表里找有没有类似ubuntu-old-releases这样的路径有就直接用速度能快一个数量级找不到就走官方归档站反正加起来也就几百兆到两三个 G挂着下就行。这里有个细节容易忽略镜像站的目录名和官方站不一定一一对应。官方是releases/版本号/镜像站可能平铺成ubuntu-releases/版本号/也可能把归档目录单独挂成一个路径。所以不要硬套 URL先看目录列表看到版本号目录再进去挑文件。提示无论从哪个站下载最后都要回到第 4 节做校验。镜像站的同步偶尔会出现文件不完整或者同步中断留下的半成品校验值就是唯一的判据。校验文件本身也从同一目录取这样至少能保证文件与校验值不是两个来源拼凑的。4. 校验这一步绝不能省SHA256SUMS 加 GPG 双重确认我在早期犯过一个很典型的错误ISO 下完了直接写盘安装装到一半报各种奇怪的读取错误折腾了两小时才发现是镜像文件本身损坏。从那以后我就养成了习惯下载完成必校验写盘之前必再看一眼校验结果。4.1 三行命令完成完整性校验每个目录里都躺着一个SHA256SUMS文件里面是目录下所有镜像的哈希值。校验逻辑很简单本地算一遍哈希跟文件里记的比。# 第一步下载校验文件 wget http://old-releases.ubuntu.com/releases/18.04/SHA256SUMS # 第二步只挑自己下的那个文件来比 grep ubuntu-18.04.6-desktop-amd64.iso SHA256SUMS | sha256sum -c - # 输出应该是 # ubuntu-18.04.6-desktop-amd64.iso: OKsha256sum -c -从标准输入读取哈希 文件名的列表逐个计算比对。看到OK就说明文件是完整且未被篡改的看到FAILED就说明下载出了问题重下即可。如果你的文件放在另外的目录可以顺手加上路径处理cd /path/to/iso grep ubuntu-18.04.6-desktop-amd64.iso SHA256SUMS | sha256sum -c -4.2 签名校验确认这份校验文件本身没被人动过只校验哈希其实有个逻辑漏洞如果校验文件本身被替换了哈希当然也对得上。所以官方给SHA256SUMS配了一个 GPG 签名文件SHA256SUMS.gpg用发布密钥签的。多花一分钟做这一步整条信任链才算闭合。# 第一次用需要导入 Ubuntu 的镜像签名密钥 gpg --keyserver hkps://keyserver.ubuntu.com \ --recv-keys 843938DF228D22F7B3742BC0D94AA3F0EFE21092 # 校验签名 gpg --keyid-format long --verify SHA256SUMS.gpg SHA256SUMS导入之后请核对指纹正确的一串应该和下面这个一致8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092指纹对上了再看gpg --verify的输出出现Good signature就说明这份SHA256SUMS确实是官方发布的。这两个动作连起来才叫文件可信。注意密钥服务器偶尔会连接不上这不是你的操作有问题。可以换一台密钥服务器重试或者用apt install ubuntu-keyring装系统自带的密钥环再指向/usr/share/keyrings/ubuntu-archive-keyring.gpg来校验。签名验证失败时第一反应应该是我的密钥对不对、指纹核对过没有而不是官方文件坏了。把这两步串起来整套流程就是下载 ISO、下载 SHA256SUMS、下载 SHA256SUMS.gpg、验签、核哈希。多下载两个小文件换来的是后面几小时的安装过程不会因为一个坏字节白费。5. 那些年踩过的坑404、断流和看起来一样的文件讲完标准流程该说说实际会撞上的意外了。这些坑的共同特点是现象和原因之间隔得很远不看日志很难猜。5.1 昨天还能下的链接今天 404这是最典型的场景。你把一个链接收藏起来过几个月再打开404 了。原因通常有三个。第一点版本被新的点版本取代了。18.04.5 出了 18.04.6 之后前者的文件就从目录里消失了。解决办法就是回到目录列表重新看还剩哪个把文件名替换掉。第二版本发生了跨站搬迁。某个版本在支持期内的时候在releases.ubuntu.com支持期一结束就整体挪到old-releases.ubuntu.com。同一个文件名域名换了一个字链接自然就失效了。遇到 404先把域名换成归档站试一次成功率高得惊人。第三目录层级发生了变化。老版本有时候不在根目录下按版本号命名而是藏在releases/子目录里。这种情况我会往上退一层看看同级目录都有什么通常就能发现真正的路径。排查顺序我建议固定成换域名、看目录列表、确认点版本号。三步走完基本都能定位比在搜索引擎里翻十几页转载文章快得多。5.2 文件名看起来很像但完全是两个东西这个坑我中过一次。当时要给一台虚拟机装服务端随手从目录里挑了个名字里带server的文件装完发现是没有图形界面的本来就没想要但也确实是另一套安装器很多步骤和文档对不上。区分的要点在于文件名中间那一段文件名片段实际是什么-desktop-带图形桌面的 Live 安装镜像-live-server-基于 Live 系统的文本安装器18.04 之后主流-server-传统文本安装器多见于 16.04 及更早-alternate-老版本的可定制文本安装镜像已停止提供另外还要留意版本号和点版本号不能混。《18.04.6 的文件名里全是 18.04.6不会出现 18.04.5 或者 18.04。目录名用的是18.04文件名用的是18.04.6这个不一致是正常的别以为是找错了。5.3 断流、大小异常和下完了但打不开归档站下载过程中断的概率比主站高表现是文件大小明显小于预期。判断方法很简单先去目录列表里看这个文件的大小跟本地文件一比就知道有没有下完。# 看本地文件大小 ls -lh ubuntu-18.04.6-desktop-amd64.iso # 看远端的 Content-Length curl -sI http://old-releases.ubuntu.com/releases/18.04/ubuntu-18.04.6-desktop-amd64.iso \ | grep -i content-length两个数值对不上就用wget -c续传。这里有个细节用aria2c分片下载后的文件续传最好也用aria2c因为分片文件.aria2和wget的临时文件格式不兼容混用会从零开始。还有个更隐蔽的情况文件大小对得上哈希也对得上但写进 U 盘启动不了。这时候问题通常不在 ISO而在写盘工具或者 U 盘本身。我的排查次序是先换个写盘工具重写一次再换一根 U 盘最后才怀疑镜像。把顺序倒过来会浪费大量时间。6. 长期要用的话给自己的老镜像做个小型资料库如果你只是偶尔装一次上面这些够用了。但如果你长期要维护一批老系统比如实验室里有几十台老设备的测试环境或者公司有若干历史项目的复原需求那值得花半天时间把这件事规范化。6.1 目录命名和清单管理我的做法是按版本 / 用途两级目录存同时维护一个纯文本清单。iso-archive/ ├── 16.04/ │ ├── ubuntu-16.04.7-server-amd64.iso │ └── SHA256SUMS ├── 18.04/ │ ├── ubuntu-18.04.6-desktop-amd64.iso │ ├── ubuntu-18.04.6-desktop-i386.iso │ └── SHA256SUMS └── MANIFEST.txtMANIFEST.txt里记录三样东西文件名、SHA256 值、下载日期和来源站点。这个清单的价值在于几年之后你翻出来一个 ISO不用重新去网上找校验值直接本地对一遍就知道文件有没有坏。至于SHA256SUMS和SHA256SUMS.gpg建议跟 ISO 一起存下来它们才几十 KB却是日后验证的唯一依据。有一点特别提醒别只存 ISO 不存校验文件。我见过太多人硬盘里躺着一堆老镜像但没有任何校验依据等到真要用的时候谁也不敢确定这个文件是不是当年下载中断留下的残次品。6.2 apt 源同步改归档站才算把老系统救活装完老系统之后紧接着就会撞上apt update报错因为软件源还指向还在服役的主站而那些包早就搬到归档站了。这一步和找 ISO 是同一件事的两半缺了一半系统装好了也装不了软件。# 备份原配置 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 把源地址整体替换为归档站 sudo sed -i \ -e s|http://.*archive.ubuntu.com|http://old-releases.ubuntu.com|g \ -e s|http://.*security.ubuntu.com|http://old-releases.ubuntu.com|g \ /etc/apt/sources.list # 刷新并升级基础包 sudo apt update sudo apt install -y apt-transport-https ca-certificates改完之后apt update就能正常跑通了。需要说明的是归档源的内容是冻结的不会再有新的安全更新这点在改之前要跟使用方说清楚避免误以为改完就恢复维护了。如果是用国内镜像站的归档源把上面命令里的域名替换成对应站点即可替换前记得先确认该镜像站确实同步了归档目录方法还是打开目录列表看一眼。6.3 顺带把云镜像和容器底包一起解决掉很多要老系统的场景其实并不需要走完整安装流程用云镜像或者容器底包会更省事。云镜像的路径格式是固定的版本号加release目录# 云镜像img / vmdk / rootfs 压缩包都有 wget -c https://cloud-images.ubuntu.com/releases/18.04/release/ubuntu-18.04-server-cloudimg-amd64.img这类镜像导入虚拟机之后直接启动跳过安装向导适合做批量测试环境。目录里同一版本往往有好几种格式.img给 QEMU/KVM.vmdk给 VMware.tar.gz是 rootfs 打包按你手上的虚拟化平台挑一个就行。如果只是想在容器里跑老版本的工具链那就更简单了直接拉旧标签的镜像docker pull ubuntu:18.04 # 需要离线保存时导出成 tar docker save ubuntu:18.04 -o ubuntu-18.04-image.tar容器镜像这条路有个好处历史标签长期保留不用担心像 ISO 那样跨站搬迁ubuntu:18.04这个标签一直能用。要拿到离线环境用就docker save导出成一个 tar 文件带过去。最后分享一个小习惯。我现在每找到一个新的归档路径都会把目录列表里的文件名整段复制下来连同来源 URL 一起记到MANIFEST.txt里。几年下来这个清单帮我省了无数次重复搜索的时间尤其是那些当年还有、现在已经跨站搬迁的版本。找历史版本这件事难点从来不在下载而在于把版本号、镜像形态和站点路径这三件事一次性对上对上一次之后后面都是照搬。