ShinKouyo の 小栈

Arch Linux 安装教程

根据 GNU Free Documentation License, 版本 1.3 或 Free Software Foundation 发布的任何后续版本之条款, 无 Invariant Sections, 无 Front-Cover Texts 及无 Back-Cover Texts, 授予复制, 分发和/或修改本文的许可

本文将介绍如何安装一个 基本的 Arch Linux 操作系统.

Arch Linux 被设计为可以运行在配置为最低 512 MiB 内存的 x86_64 架构的计算机上, 但如果是从安装介质启动系统并成功安装在计算机硬盘中, 则可能需要更多的内存. 基本安装方式将占用小于 2 GiB 的硬盘存储空间. 由于安装过程中需要从远程存储库获取软件包, 计算机将需要一个有效的互联网连接.

本文假设你正在一个使用 UEFI 固件禁用了安全启动符合要求 的计算机上安装 Arch Linux 系统.


1. 准备并启动到安装介质

1.1. 下载安装映像

打开 Arch Linux 的下载页面, 找到 HTTP Direct Downloads 一节, 在 Checksums and signatures 处下载用于 ISOPGP 签名.
接着找一个合适的 镜像站, 下载对应的 ISO 文件, 一个正确的文件名应该形如 archlinux-yyyy-MM-dd-x86_64.iso.

对于中国大陆用户, 一个推荐的站点是 mirrors.mirrorz.org, 它会自动重定向到适合你所在地区的镜像站.

接着, 你应该验证 ISO 文件的 PGP 签名:

# 下载签名密钥
gpg --auto-key-locate clear,wkd -v --locate-external-key pierre@archlinux.org
# 验证签名 (注意将文件名替换为对应的)
gpg --verify archlinux-yyyy-MM-dd-x86_64.iso.sig archlinux-yyyy-mm-dd-x86_64.iso

1.2. 准备安装介质

你可以通过 光盘, PXE 等多种方式来制作安装介质. 本文介绍如何将 ISO 文件刻录到你的 U 盘.

插入一个至少 2 GiB无重要数据 的 U 盘, 此处假设它为 /dev/sdX.
可以使用 dd 等工具将 ISO 文件刻录到你的 U 盘, 你也可以使用 Ventoy.

dd \
    if=/path/to/archlinux-yyyy-MM-dd-x86_64.iso \  # 替换为 ISO 文件所在的路径
    of=/dev/sdX \                                  # 替换为你的 U 盘设备
    bs=4M \
    status=progress \
    conv=fsync \
    oflag=sync

1.3. 启动到 Live 环境

从带有 Arch Linux 安装镜像的介质启动. 一般情况下, 你需要在计算机 开机自检 期间 按下某个热键 (常见的有 F12, F8Delete). 具体请参考自己计算机或主板说明书.

当引导加载程序菜单出现时, 使用 方向键 选择 Arch Linux install medium, 并按 Enter 键进入安装环境.


2. 安装前的准备

你将以 root 身份登录到一个 虚拟控制台.
默认的 Shell 是 zsh. 可用的文本编辑器有 mcedit, nanovim 等.
你可以使用 Alt+方向键 切换不同的控制台, 可用的网页浏览器包括 lynx.

2.1. 切换控制台字体

如果你认为控制台的字体大小不适合, 或不够清晰, 可以使用 setfont 命令修改字体.
可用的控制台字体位于 /usr/share/kbd/consolefonts/ 目录中.

例如, 要使用适配高 DPI 屏幕的字体, 请运行:

setfont ter-v32b

其中, ter- 代表 Terminus Font 字体; v (vertical) 代表宽高定义顺序是先垂直后水平; 32 代表字体的高度为 32 像素; b (bold) 代表使用粗体版本.

2.2. 确认引导模式为 UEFI

cat /sys/firmware/efi/fw_platform_size

这个命令打印了 UEFI 固件的指针大小. 如果结果为 No such file or directory, 则该系统可能以 非 UEFI 模式启动 (如 BIOS 或 CSM), 你应该参考计算机或主板说明书将引导模式修改为 UEFI.

2.3. 连接网络

使用 ip link 命令查看所有可用的 网络接口:

ip link
# 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
#     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
# 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
#     link/ether 52:54:00:bc:8c:ae brd ff:ff:ff:ff:ff:ff
#     altname enx525400bc8cae

如果使用 以太网, 请 连接网线.
如果使用 移动网卡, 请参考 英文 ArchWiki 页面 使用 mmcli 连接到移动网络.

如果使用 WiFi, 应该使用 iwctl 认证网络:

iwctl \
    --passphrase <WiFi密> \
    station      <无线网卡设备> \
    connect      <WiFi名>

如果你使用 隐藏的 SSID, 请使用 connect-hidden 代替 connect.

如果网络启用了 DHCP, 网络应该能够开箱即用.
否则, 如果需要配置 静态 IP, 参考 ArchWiki 上的配置教程.

随后可以通过 ping 命令检查网络连接:

-c 3 指定了 ping 发送 3 个包.

ping -c 3 ping.archlinux.org
# PING redirect.archlinux.org (95.216.195.133) 56(84) bytes of data.
# 64 bytes from redirect.archlinux.org (95.216.195.133): icmp_seq=1 ttl=45 time=197 ms
# 64 bytes from redirect.archlinux.org (95.216.195.133): icmp_seq=2 ttl=45 time=196 ms
# 64 bytes from redirect.archlinux.org (95.216.195.133): icmp_seq=3 ttl=45 time=197 ms
# --- redirect.archlinux.org ping statistics ---
# 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
# rtt min/avg/max/mdev = 196.299/196.773/197.050/0.336 ms

2.4. 更新系统时间

正确的系统时间可以避免签名校验问题和 TLS 证书错误, 使用 timedatectl 配置时间同步:

# 对于非中国大陆用户, 应该将 Asia/Shanghai 替换为对应的 IANA 时区
timedatectl set-timezone Asia/Shanghai
# 开启 NTP 同步
timedatectl set-ntp true
# 确认系统时间
timedatectl

输出中的 Local time 应该显示正确的 当前时间.

2.5. 创建硬盘分区

这将清空硬盘上的所有数据.

2.5.1. 确定分区设备

任何识别到的内置硬盘, U 盘或者移动硬盘等类型磁盘, 会将其分配为一个 块设备.
可以使用 fdisk 等命令查看所有的块设备:

fdisk -l
# Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 sectors
# Units: sectors of 1 * 512 = 512 bytes
# Sector size (logical/physical): 512 bytes / 512 bytes
# I/O size (minimum/optimal): 512 bytes / 512 bytes
#
# Disk /dev/loop0: 999.41 MiB, 1047961600 bytes, 2046800 sectors
# Units: sectors of 1 * 512 = 512 bytes
# Sector size (logical/physical): 512 bytes / 512 bytes
# I/O size (minimum/optimal): 512 bytes / 512 bytes

结果中以 rom, loopairootfs 结尾的设备可以被忽略; 以 rpmb, boot0boot1 结尾的 mmcblk* 设备也可以被忽略.

在分区之前, 请检查 NVMe 驱动器先进格式化 硬盘是否使用了 最佳逻辑扇区大小.

上述的输出结果中, /dev/vda 是一个 20 GiB 的块设备. 下文 假设 你需要在 /dev/vda 上安装 Arch Linux.

2.5.2. 确定分区方案

应该花时间规划一个 长期的分区方案, 以 避免将来需要有风险和复杂的转换或重新分区.
如果要从中启动的磁盘已经有一个 EFI 分区, 请 不要创建另一个 EFI 分区, 而是 使用现有分区.

常见的情况下, 以下分区是 必须的:

  • 一个 根分区 (/)
  • 一个 EFI 系统分区 (一般为 /boot)

本文将使用一个较为常见的 单系统 UEFI + GPT 分区表 的分区方案:

挂载点分区分区类型建议大小
/boot1/dev/vda1EFI System1 GiB+
//dev/vda2Linux filesystem设备剩余空间
[SWAP]/dev/vda3Linux swap4 GiB+

其中 分区 应根据实际情况替换.
对于 Swap 分区, 若使用休眠, 则应至少等于物理内存大小, 否则推荐根据内存灵活分配.

另请参见 Farseerfc 翻译的 替 swap 辩护: 常见的误解.

2.5.3. 开始分区

有多种分区可以进行分区, 如 gdisk, parted, cfdisk, 本文使用 fdisk:

请注意替换 /dev/vda* 文本.

fdisk /dev/vda

进入 fdisk 后顺序进行以下操作:

  1. g: 创建 GPT 分区表.
  2. n 创建 EFI 分区: 两次 Enter 使用默认值, 接着输入预期大小 (如 +1G).
  3. n 创建 根分区: 两次 Enter 使用默认值, 输入期望大小 (如 -4G 表示留出 4 GiB 空间).
  4. n 创建 Swap 分区: 三次 Enter 使用所有剩余空间.
  5. t 修改第 1 个分区类型: 输入 1 选择分区, 输入 1 选择 EFI System.
  6. t 修改第 2 个分区类型: 输入 2 选择分区, 输入 20 选择 Linux filesystem.
  7. t 修改第 3 个分区类型: 输入 3 选择分区, 输入 19 选择 Linux swap.
  8. w: 写入 并退出

接着再次使用 fdisk 确认分区情况:

fdisk -l /dev/vda
# Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 sectors
# Units: sectors of 1 * 512 = 512 bytes
# Sector size (logical/physical): 512 bytes / 512 bytes
# I/O size (minimum/optimal): 512 bytes / 512 bytes
# Disklabel type: gpt
# Disk identifier: 6E40E1EC-D232-4E14-AD8F-359BEAD9EA66
#
# Device        Start      End  Sectors  Size Type
# /dev/vda1      2048  2099199  2097152    1G EFI System
# /dev/vda2   2099200 33554431 31455232   15G Linux filesystem
# /dev/vda3  33554432 41940991  8386560    4G Linux swap

2.6. 格式化分区

考虑到性能, 稳定性与上手难度, 本文使用了 Ext4 作为根分区的文件系统.
如果你想使用其它文件系统 (如 BtrfsXFS), 参阅 ArchWiki 上的 文件系统.

请注意替换 /dev/vda* 文本.

创建分区后, 必须 使用合适的文件系统对每个新创建的分区进行格式化.

# 将 EFI 系统分区格式化为 FAT32
mkfs.fat -F 32 /dev/vda1
# 将根分区格式化为 Ext4
# -L 指定了分区的卷标
# -m 指定了预留空间百分比
mkfs.ext4 -L Arch_Linux -m 1 /dev/vda2
# 初始化 Swap 分区
mkswap /dev/vda3

2.7. 挂载分区

请注意替换 /dev/vda* 文本.

根磁盘卷 挂载到 /mnt:

-o 指定 挂载选项,
noatime 禁止更新文件访问时间 以减少磁盘写入,

mount -o noatime /dev/vda2 /mnt

EFI 系统分区 挂载到 /mnt/boot:

--mkdir 选项使 mount 创建指定的挂载点.
-o umask=0077 将分区权限限制为仅 root 可访问.

mount --mkdir -o umask=0077 /dev/vda1 /mnt/boot

启用 Swap 卷:

-d 参数在支持的设备上 启用 discard.

swapon -d /dev/vda3

稍后 genfstab 将自动检测挂载的文件系统和交换空间.

2.8. 配置 Pacman

PacmanArch Linux 的包管理器. 良好的 Pacman 配置可以缩短下载时间, 并提升用户体验.

2.8.1. pacman.conf

使用任意一个文本编辑器编辑 /etc/pacman.conf, 或使用以下命令直接修改配置.

# 开启 Color, 启用彩色输出
sed -i '/^#Color/s/#//' /etc/pacman.conf
# 开启 VerbosePkgLists, 显示每个包的版本和大小变化
sed -i '/^#VerbosePkgLists/s/#//' /etc/pacman.conf
# 开启并设置 ParallelDownloads 为 5, 启用并行下载
sed -i '/^#ParallelDownloads = 5/s/#//' /etc/pacman.conf

2.8.2. mirrorlist

需安装的软件包会从文件 /etc/pacman.d/mirrorlist 中所列的镜像站下载. 下载软件包时, 列表中越靠前的镜像站会拥有越高的优先级.

默认的 Live 环境下, 配置文件启用了所有 HTTPS 镜像站. 位于文件顶端的是 全球镜像站, 在 一般 的网络环境下, 这些站点足够快.
但在某些特殊的网络环境 (例如, 在中国大陆), 默认的镜像站配置可能仍然很慢. 此时, 你应该 编辑 /etc/pacman.d/mirrorlist 文件, 可以在 Arch Linux 官方的 Pacman 镜像列表生成器 获取一份合适的镜像列表.

中国大陆可以直接通过以下命令配置一个足够快且稳定镜像站列表:

cat > /etc/pacman.d/mirrorlist << 'EOF'
##
## Arch Linux repository mirrorlist
## Updated: 2026-07-24
##

Server = https://mirrors.nju.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.sustech.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.mirrorz.org/archlinux/$repo/os/$arch
EOF

参考

  1. https://wiki.archlinux.org/title/Installation_guide
  2. https://archlinux.org/download/
  3. https://mirrorz.org/_/
  4. https://codeberg.org/unixchad/arch-install-guide
  5. https://chrisdown.name/2018/01/02/in-defence-of-swap.html
  6. https://wiki.archlinux.org/title/Partitioning
  7. https://man.archlinux.org/man/fdisk.8
  8. https://wiki.archlinux.org/title/Arch_terminology
  9. https://wiki.archlinux.org/title/Pacman
  10. https://archlinux.org/mirrors/

  1. 如果引导加载程序能够从根磁盘卷中加载内核和 initramfs 映像 (如 GRUB, rEFInd), 则可以使用如 /efi 等其他挂载点, 本文不做讲述.