一般情况下, 安装 ArchLinux 需要连网. ArchLinux 安装光盘镜像 (iso) 只用来启动, 安装过程中, 所有的软件包, 都需要从网络下载.

那么, 如果完全没网, 还能安装 ArchLinux 嘛 ? 可以 ! 并且, 这对于应急故障恢复等场景, 还是挺有用的.

本文就来展示在只有几张 DVD 光盘的情况下, 安装 ArchLinux 的具体过程. 光盘虽然容量小, 速度慢, 几乎被淘汰. 但仍然是现在最好的低成本 只读 存储介质, 数据不易丢失损坏, 具有很高的可靠程度.

这里是 (希望消除 稀缺 的) 穷人小水滴, 专注于 穷人友好型 低成本技术. (本文为 94 号作品. )


相关文章:

参考资料:

目录

  • 1 准备数据光盘 (iso)
    • 1.1 下载安装光盘镜像
    • 1.2 系统准备
    • 1.3 制作软件包数据光盘
  • 2 虚拟机安装测试 (详细步骤, archinstall)
    • 2.1 展开软件包数据
    • 2.2 配置 archinstall
    • 2.3 进行安装
  • 3 物理机安装验证
    • 3.1 刻录 DVD+R DL 光盘
    • 3.2 制作 ArchLinux 安装 U 盘 (可选)
    • 3.3 离线安装 ArchLinux
  • 4 总结与展望

1 准备数据光盘 (iso)

本文设定的具体场景, 是从几张 DVD 光盘开始, 安装 ArchLinux 操作系统, 以及各种软件包.

为什么是 光盘 呢 ? 因为光盘可以是 只读 的 (比如 DVD+R), 是数据备份的很好的存储器. 别的存储器, 比如 U 盘, SSD, 磁盘, SD 卡 等, 因为数据可以修改, 更容易丢失损坏.

所以这个场景更接近 “应急故障恢复”, 并且是在完全没网的情况下.

1.1 下载安装光盘镜像

首先下载 Fedora CoreOS 44 和 ArchLinux 的安装光盘镜像 (iso):

下载之后:

> ls -l archlinux-2026.06.01-x86_64.iso
-r--r--r-- 1 s2 s2 1566638080  6月12日 22:14 archlinux-2026.06.01-x86_64.iso
> sha256sum archlinux-2026.06.01-x86_64.iso
ec7a9c89aed7a59a76266ccf723c5e88480e47d7088c4482436f882fa37c3989  archlinux-2026.06.01-x86_64.iso
> ls -l fedora-coreos-44.20260523.3.1-live-iso.x86_64.iso
-r--r--r-- 1 s2 s2 1068498944  6月12日 22:18 fedora-coreos-44.20260523.3.1-live-iso.x86_64.iso
> sha256sum fedora-coreos-44.20260523.3.1-live-iso.x86_64.iso
1b231a04c6ade01eec35d48ec78b337be6b2552969a2ec3460a3599cfc18f6e3  fedora-coreos-44.20260523.3.1-live-iso.x86_64.iso

1.2 系统准备

需要一个已经安装好的 ArchLinux 系统.

如果还没有, 那么安装 ArchLinux 的简单方法是:

  • (1) 创建一个新的 虚拟机 (参考文章 《在 VirtualBox 虚拟机中安装 Fedora CoreOS 操作系统》)

  • (2) 在 虚拟机 中启动 ArchLinux 的安装 iso.

  • (3) 输入 archinstall 并运行, 只需选择几个简单的选项, 即可完成安装.


好了, 现在你已经有了一个日常使用的 ArchLinux 系统, 可能安装了很多软件包. 离线安装的目标是, 重新安装的系统要和目前使用的系统几乎一样, 包含所有的已经安装的软件包.

首先, 更新所有软件包:

> sudo pacman -Syu
:: 正在同步软件包数据库...
 core 已经是最新版本
 extra 已经是最新版本
:: 正在进行全面系统更新...
 今日无事可做

安装需要的软件包:

sudo pacman -S base-devel libisoburn miniserve podman arch-wiki-docs

检查不需要的软件包:

> pacman -Qdtq
electron41

可以卸载这些软件包释放空间:

sudo pacman -R electron41

清理软件包缓存 (下载的旧版软件包安装包):

> sudo pacman -Sc
要保留的软件包:
  所有本地安装的软件包

缓存目录:/var/cache/pacman/pkg/
:: 您想从缓存中删除所有其他的软件包吗? [Y/n] 
正在从缓存中删除旧软件包...

数据库目录:/var/lib/pacman/
:: 打算删除无用的软件库? [Y/n] 
正在删除未用的同步仓库...

检查不在仓库里的软件包 (比如从 AUR 安装的软件包):

> pacman -Qm
ddcutil-service 1.0.14-1
librush-bin 0.2.2-1
pmbs-bin 0.1.0-1
sunshine 2026.423.21833-1
yay-bin 12.5.7-1

1.3 制作软件包数据光盘

创建一个空目录, 然后编写一些脚本文件:

  • Makefile
# local-arch-repo_20260614.iso

iso:
	mkdir -p repo
	- rm -r repo/sync
	- rm -r repo/pkg

	cp -r /var/lib/pacman/sync repo/sync
	cp -r /var/cache/pacman/pkg repo/pkg

	mkdir -p repo/bin
	cp /usr/bin/miniserve repo/bin

	du -ab repo > du.txt
	mv du.txt repo

	- rm repo/sha256.txt
	find repo -type f -print0 | xargs -0 sha256sum > sha256.txt
	mv sha256.txt repo

	mkdir -p tar-20260614
	- rm tar-20260614/*.tar.*
	tar -cvf - repo | split --bytes=4095MiB - tar-20260614/local-arch-repo.tar.

	cp extract.sh tar-20260614

	- rm local-arch-repo_20260614.iso
	xorrisofs -V "LOCAL_ARCH_REPO_20260614_1" -J -o local-arch-repo_20260614.iso tar-20260614

.PHONY: iso
  • extract.sh
#!/usr/bin/env bash
cat local-arch-repo.tar.* | tar -C /tmp/repo -xvf -

cd /tmp/repo/repo && cp sync/* pkg

生成数据光盘:

make

结果:

> ls -l
总计 9305316
-r--r--r-- 1 s2 s2 1566638080  6月12日 22:14 archlinux-2026.06.01-x86_64.iso
-rwxr-xr-x 1 s2 s2        108  6月13日 23:49 extract.sh*
-rw-r--r-- 1 s2 s2 7961997312  6月14日 18:00 local-arch-repo_20260614.iso
-rw-r--r-- 1 s2 s2        636  6月14日 17:44 Makefile
drwxr-xr-x 1 s2 s2         58  6月14日 18:00 repo/
drwxr-xr-x 1 s2 s2        108  6月14日 18:00 tar-20260614/

也就是打包了 /var/cache/pacman/pkg 缓存目录, 包含当前系统安装的所有软件包 (不含 AUR 之类).


对于 AUR 之类的软件包, 需要自己手动复制, 比如:

> find repo/aur
repo/aur
repo/aur/yay-bin-12.5.7-1-x86_64.pkg.tar.zst
repo/aur/ddcutil-service-1.0.14-1-x86_64.pkg.tar.zst
repo/aur/sunshine-beta-bin-2026.423.21833-1-x86_64.pkg.tar.zst
repo/aur/librush-bin-0.2.2-1-x86_64.pkg.tar.zst
repo/aur/pmbs-bin-0.1.0-1-x86_64.pkg.tar.zst

2 虚拟机安装测试 (详细步骤, archinstall)

创建一个新的 虚拟机 (比如 VirtualBox):

在这里插入图片描述

注意这个虚拟机有 2 个光驱, 分别放 ArchLinux 系统安装光盘 (/dev/sr0) 和上面制作的软件包数据光盘 (/dev/sr1).

有 2 个硬盘, 其中一个用来安装 ArchLinux (/dev/sda), 另一个用于临时存放数据 (/dev/sdb).

同时注意断开网络 (不要接入虚拟机的网线).

2.1 展开软件包数据

启动虚拟机:

在这里插入图片描述

在这里插入图片描述

对临时硬盘进行分区, 格式化:

fdisk /dev/sdb

mkfs.ext4 -L repo1 /dev/sdb1

挂载:

mkdir /tmp/iso1
mkdir /tmp/repo
mount /dev/sr1 /tmp/iso1 -o ro
mount /dev/sdb1 /tmp/repo

在这里插入图片描述

展开软件包数据:

cd /tmp/iso1
bash extract.sh

检查结果:

ls -la /tmp/repo/repo

在这里插入图片描述


(可选) 检查数据完整性:

cd /tmp/repo
sha256sum -c repo/sha256.txt

2.2 配置 archinstall

启动本地 http 服务器:

/tmp/repo/repo/bin/miniserve /tmp/repo/repo &

注意最后的 & 表示在后台运行. 测试:

curl -v -O http://127.0.0.1:8080/pkg/core.db

手动初始化 pacman key (重要):

pacman-key --init
pacman-key --populate

然后就可以开始安装了:

archinstall --offline --skip-ntp --skip-wkd

(可选) 可以在 archinstall 里面保存当前配置, 这样下次启动 archinstall 可以直接加载现有的配置, 不用再重新一个一个选了.

启动命令类似:

archinstall --offline --skip-ntp --skip-wkd --config /tmp/repo/user_configuration.json --creds /tmp/repo/user_credentials.json

在这里插入图片描述

2.3 进行安装

然后就是 archinstall 的常规配置, 选择几个选项即可:

安装到 /dev/sda 自动分区.

注意 镜像 要添加自定义的本地服务器: http://127.0.0.1:8080/pkg

在这里插入图片描述


配置完毕, 开始安装:

在这里插入图片描述

很快, 安装完成:

在这里插入图片描述

重启.

在这里插入图片描述


重启之后, 登录系统:

在这里插入图片描述

成功 ! 撒花 ~

3 物理机安装验证

好, 接下来进行 物理机 的测试, 使用的 硬件 (设备) 如下:

在这里插入图片描述

  • 笔记本 HP 战 66 (CPU 5625u, 内存 64GB DDR4-3200 双通道 32GB x2) (注: 内存 在涨价前购买)

  • (可选) U 盘 32GB

  • SSD 240GB (SATA 2.5 英寸): ArchLinux 安装到这里

  • 1TB 机械硬盘 (SATA 2.5 英寸): 存放临时数据

  • DVD 刻录机 (笔记本 光驱)

  • DVD+R DL (8GB 空白) 光盘 (3 张):

    • Fedora CoreOS 44 安装光盘
    • ArchLinux 2026.06.01 安装光盘
    • 软件包数据光盘

3.1 刻录 DVD+R DL 光盘

虽然现在系统还有 “安装光盘镜像” (iso) 文件, 但已经很少使用 物理光驱 了. 所以, 这些系统并未针对 物理光驱 进行优化, 存在大量 随机读写, 对 光驱 很坑.

不过 CoreOS 有一个内核参数 coreos.liveiso.fromram 可以在系统启动时, 把整个启动光盘的数据载入内存, 后续就不需要光盘了. 这个参数可以显著缓解 光驱随机读写 的情况.

添加内核参数:

podman run --rm -v .:/data -w /data quay.io/coreos/coreos-installer:release iso customize --live-karg-append=coreos.liveiso.fromram -o fedora-coreos-44.20260523.3.1-live-fromram-iso.x86_64.iso fedora-coreos-44.20260523.3.1-live-iso.x86_64.iso

然后刻录修改后的 iso 镜像:

cdrskin dev=/dev/sr0 -v fedora-coreos-44.20260523.3.1-live-fromram-iso.x86_64.iso

类似的, 刻录另外 2 张 DVD 光盘.

3.2 制作 ArchLinux 安装 U 盘 (可选)

警告: 请提前备份重要数据, 接下来的操作会删除 U 盘, SSD 上的所有数据 !!

虽然可以直接用 ArchLinux DVD 光盘启动, 但是由于上述 随机读取 问题, 体验很差. 所以仍然建议制作安装 U 盘.

首先, 我们假设只有上述 3 张刻录好的 DVD 光盘. U 盘, SATA SSD, SATA 机械硬盘上, 都没有数据.


首先, 我们从 Fedora CoreOS 44 DVD 光盘启动. 因为这个有 顺序读取 优化, 体验会好一点.

在这里插入图片描述

启动之后, 就可以取出 Fedora CoreOS 44 DVD 光盘, 不再需要了.

在这里插入图片描述

然后放入 ArchLinux DVD 光盘, 以及 U 盘.

在这里插入图片描述

执行命令 (复制 DVD 光盘到 U 盘):

sudo dd if=/dev/sr0 of=/dev/sda status=progress

在这里插入图片描述

好了, 安装 U 盘 制作完成.


此时可以顺便展开 软件包数据光盘 到 临时数据硬盘. 拔掉 U 盘, 接入 临时硬盘, 同时更换光盘为 软件包数据光盘.

挂载硬盘, 比如 (仅供参考):

sudo mkdir /tmp/repo
sudo mount /dev/sda1 /tmp/repo

挂载光盘:

sudo mkdir /tmp/iso1
sudo mount /dev/sr0 /tmp/iso1 -o ro

展开数据:

cd /tmp/iso1
sudo bash extract.sh

在这里插入图片描述

好了, 光盘的任务完成了, 可以拔出 光驱 了.

3.3 离线安装 ArchLinux

警告: 请提前备份重要数据, 接下来的操作会删除 SSD 上的所有数据 !!

重启, 从 U 盘启动:

在这里插入图片描述

依次接入 目标 SSD (240GB), 临时数据硬盘 (1TB).

使用类似章节 2.2, 2.3 的方法进行安装.

很快, 安装完成.

在这里插入图片描述

重启.

在这里插入图片描述

撒花 ~

4 总结与展望

只需 3 张 DVD 光盘, 即可做到在完全 离线 (没网) 的情况下, 安装完整的 ArchLinux 操作系统.

本文中方案的好处是, 对当前安装的所有软件包进行 “快照” (备份), 所以所有你喜欢的软件安装包都在, 无需重新下载, 可以直接本地安装. 本次所有安装包的总大小恰好可以放在一张 DVD+R DL (容量约 8GB) 光盘中. 如果有更多的软件包, 只需稍做修改, 使用多张光盘即可.

如果定期进行类似的 备份, 对于 应急故障恢复 场景是很好的.

本文中手动操作的细节较多, 未来可以考虑增加自动化程度, 做成一个专用的小工具 (软件). 未来也可以考虑打包一个 本地运行的 (LLM) 小模型 (32B q4 以内), 用 llama.cpp 或 ollama 运行. 打包相关文档 (比如 arch wiki), 做成一个 AI 安装助手, 同样刻成 (只读) 光盘. 这样如果安装过程中遇到问题, 可以问 AI 辅助, 同时一切都 离线 运行.


本文使用 CC-BY-SA 4.0 许可发布.

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐