2025 年 Arch Linux 安装教程
Arch Linux 是一个滚动更新的 GNU/Linux 发行版,它不提供固定周期的大版本发布,软件包与内核持续更新到仓库中的最新稳定版本;用户需自行安装包括内核在内的所有软件,实现高度可控。这会带来极佳的灵活性,同时锻炼用户的动手能力,并了解 Linux 的基础知识;Arch Linux 适合每一个有着折腾精神,喜欢深度定制且希望系统使用拥有最新软件的用户。
根据 StatCounter 截至 2025 年 7 月的统计,Linux 的用户数量仍在持续上升。现在从 WindowsEULA 切换到 Arch Linux 无疑是个不错的选择。接下来,我们将进入 Arch Linux 的安装指南。
凡是专有软件,本文都使用 EULA 上标进行标注,这些软件不尊重用户的自由和社区。请酌情考虑是否使用
安装前的准备
本指南使用如今普遍流行的 UEFI
+ GPT
形式进行安装,传统的 BIOS
模式不再赘述。在执行下述操作之前,请确保你已启用 UEFI
并关闭安全启动。
1. 获取安装映像
打开 Arch Linux 的 ISO 下载页面,你可以使用 BitTorrent 种子下载最新的 Arch Linux 映像。当然,更推荐使用你所在地区的镜像站点来加速下载,以下是几个在中国大陆各地速度都较为稳定的镜像站。
最后测速并更新于 2025-08-02(排名不分先后)
下载类似 archlinux-YYYY.MM.DD-x86_64.iso
或者 archlinux-x86_64.iso
即是最新版的映像文件。推荐同时在 Arch Linux 官网 下载 sig 签名文件,并在下载完成后使用 GnuPg 验证来确保文件安全且未损坏。
请确保下载最新的安装镜像!Arch Linux 是滚动发行版,无法使用旧的安装镜像安装旧版本
一般情况下,Arch Linux 官方在每月的第一天释放新的映像文件
选择合适的镜像站,亦能跑慢网速
2. 刻录到安装介质
推荐准备一个 2 GiB 以上的 U 盘,用来刻录一个 Arch Linux 安装盘。
在 WindowsEULA 下,推荐使用 Ventoy,Rufus 或者 balenaEtcher。这些软件都带有图形用户界面,新手也很容易上手。
图片来自 archlinux 简明指南
在 GNU/Linux 下,你可以使用 dd
命令来刻录到 U 盘。
# 将 /path/to/archlinux.iso 替换为你下载的安装映像所在的路径,/dev/sdx 替换为你的 U 盘块设备所在的路径
sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync
3. 启动到安装介质
现在,保持你的安装介质插入。冷重启你的电脑,在 POST 自检时快速按下启动选择热键(在大部分主板上,它是 F8 或 F12,启动画面也可能会有提示),选择启动到安装介质。
此时,你因该会看到一个纯文本的引导界面。(如果你看到是带有 Arch Linux Logo 的图形界面,那么说明你使用了 BIOS
引导,请在主板设置中开启 UEFI
并关闭 CSM
)
systemd-boot 引导界面
选择 Arch Linux install medium (x86_64, UEFI)
,引导 Arch Linux 安装映像。
稍等片刻后你应该能看到类似下图的命令行界面,此时便可以正式开始安装 Arch Linux 了!
Arch Linux 安装界面
安装 Arch Linux
4. 禁用 reflector 系统服务
Arch Linux 在 2020 年在安装映像中默认启用了 reflector
服务,此服务用于筛选出最新的镜像并按速度排序,写入到镜像源列表。这也许是一项很好的功能,但在中国大陆地区,此服务并不可靠。
可以使用如下命令禁用 reflector
服务
systemctl stop reflector.service
5. 修改终端字体(可选)
如果你认为你的终端字体太小,可以使用如下命令将字体修改为 20px 的粗体终端字体
setfont /usr/share/kbd/consolefonts/ter-v20b.psf.gz
6. 连接到互联网
一般地,如果你使用有线连接,通过 DHCP,Arch Linux 因该可以自动获取你的 IP 地址和 DNS 服务器。
如果你使用 WiFi,你可以通过 iwctl
来认证无线局域网
iwctl # 启动iwctl交互式命令行工具
device list # 查看可用无线设备(如wlan0)
station wlan0 scan # 扫描wlan0设备可用的WiFi网络
station wlan0 get-networks # 显示扫描到的所有WiFi列表
station wlan0 connect wifi-name # 连接指定WiFi(输入命令后按提示输密码)
exit # 退出iwctl命令行环境
测试网络连通性
使用 ping
测试网络联连通性
ping ping.archlinux.org
你应该能看到类似下图的结果,不同于 WindowsEULA 下的 ping
,手动按下 Ctrl
+ C
来退出 ping
。
7. 更新系统时钟
使用 timedatectl
来同步时间,这一步是必须的,正确的系统时间对于部分程序来说非常重要。
timedatectl set-timezone Asia/Shanghai # 设置时区
timedatectl set-ntp true # 同步系统时间
timedatectl status # 检查服务状态
8. 分区和格式化
我们将会创建 3 个分区。注意,这会损坏你硬盘中的数据!
EFI 分区 -- 512MiB ~ 4GiB
swap 分区 -- 你的系统内存的 50% ~ 150%
根分区 -- 所有的剩余空间
使用 fdisk -l
列出系统下的所有块设备
这里,我需要安装系统的设备是 /dev/sda
,此处假设您需要在 /dev/sdx
上安装 Arch Linux,请根据实际情况替换下文内容。
修改分区格式
如果你的磁盘不是使用的 gpt
格式,你需要使用 parted
修改它的格式。
parted /dev/sdx # 启动parted磁盘分区工具(进入交互模式)
(parted) mktable # 在parted提示符下输入mktable命令
(parted) New disk label type? gpt # 输入gpt创建GPT分区表(如有数据需输入yes确认)
(parted) quit # 退出parted交互环境
分区
接下来,使用 cfdisk
工具进行分区。
cfdisk /dev/sdx
将进入 cfdisk
的用户界面,使用 ↑
和 ↓
选择分区,←
和 →
选择选项 Enter
进行操作。
使用
New
创建一个新的分区使用
Write
将修改写入设备使用
Delete
删除分区使用
Resize
调整分区容量使用
Type
修改分区类型使用
Quit
退出cfdisk
创建一个 512MiB ~ 4GiB 的分区,调整类型为 EFI System
,
创建一个是你的物理内存容量的 50% ~ 150% 大小的分区,调整类型为 Linux swap
,
使用硬盘所有剩余空间创建一个分区,类型使用默认的 Linux filesystem
。
最终结果应该近似下图(分区容量可能不一致)
此时使用 Write
,并输入 yes
保存修改。使用 Quit
退出 cfdisk
。
再次使用 fdisk
确认硬盘修改是否正确
可以看到,/dev/sda1
/dev/sda2
/dev/sda3
都已被正确的创建并且对应刚才选择的分区格式。
此处假设您创建了 /dev/sdx1
/dev/sdx2
/dev/sdx3
三个分区,请根据实际情况替换下文内容。
格式化并创建 Btrfs 子卷
使用以下命令格式化对应的 EFI
分区
双系统无需进行此操作
mkfs.fat -F32 /dev/sdx1
使用以下命令格式化对应的 swap
分区
mkswap /dev/sdx2
最后将 Linux filesystem
格式化为 Btrfs
分区
此处
ArchLinux
是分区的卷标,可以自定义。推荐仅使用英文大小写字母,数字,连字符和下划线,避免使用空格和特殊字符。
mkfs.btrfs -L ArchLinux /dev/sdx3
创建 Btrfs 子卷
先将刚才格式化好的 Btrfs
分区挂载到 /mnt
此处的
compress=zstd
用于开启zstd:3
透明压缩。一般情况下,此选项对性能没有什么损耗并且可以减少硬盘占用。
mount -t btrfs -o compress=zstd /dev/sdx3 /mnt
使用 btrfs
命令分别为 /
和 /home
创建 Btrfs
子卷。如果您有其它需求,也可新建其它子卷并在后续操作中正确的新建目录。
btrfs subvolume create /mnt/@ # 创建 / 子卷
btrfs subvolume create /mnt/@home # 创建 /home 子卷
创建完成后卸载 /mnt
umount /mnt
9. 挂载分区
按照顺序分别挂载分区
mount -t btrfs -o subvol=/@,compress=zstd /dev/sdx3 /mnt # 挂载 / 目录
mkdir -p /mnt/{home,boot} # 创建 /home 和 /boot 目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sdx3 /mnt/home # 挂载 /home 目录
mount /dev/sdx1 /mnt/boot # 挂载 /boot 目录
swapon /dev/sdx2 # 挂载交换分区
使用 df
和 free
命令分别检查挂载情况
-h 参数允许以人类可读的方式显示容量
df -h
free -h
10. 配置镜像源
使用 vim
修改镜像源列表 /etc/pacman.d/mirrorlist
,此处使用与上述相同的镜像源(但将 MirrorZ
置于最后一个备用)
vim /etc/pacman.d/mirrorlist
你可能会看到类似这样的镜像源列表。如果你没有关闭 reflector
服务,可能会出现不一样的结果,不过不用担心,您仍然可以执行下述操作。
按下 i
键进入编辑模式,使用 ↑
↓
←
→
操控光标的位置到开头,使用 Enter
新增一行并输入如下内容
Server = https://mirrors.pku.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirror.sjtu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.cernet.edu.cn/archlinux/$repo/os/$arch
按下 Esc
推出编辑模式,输入 :
(Shift
+ ;
)进入命令模式,随后输入 wq
保存并退出。
使用以下命令更新镜像源
pacman -Sy --noconfirm archlinux-keyring
11. 安装系统
使用 pacstrap
命令安装基本操作系统
不要使用 -K 参数!在某些教程中可能提到,但它会破坏新系统的包验证
此处的 linux 和 linux-headers 使用 linux 内核。如果你想安装其它内核,可以在此处同时安装,如
linux-libre
和linux-libre-headers
,但不推荐删除原来的内核
pacstrap /mnt base base-devel linux linux-headers linux-firmware grub efibootmgr btrfs-progs networkmanager sudo vim neovim zsh zsh-completions terminus-font man-db man-pages fastfetch
安装微码
pacstrap /mnt intel-ucode # 如果你使用 Intel CPU
pacstrap /mnt amd-ucode # 如果你使用 AMD CPU
12. 生成 fstab
使用 genfstab
生成 fstab
并输出重定向到 /mnt/etc/fstab
genfstab -U /mnt > /mnt/etc/fstab
输出 fstab
文件以确保无误
cat /mnt/etc/fstab
输出内容应类似下方
# /dev/sda3
/dev/sda3 / btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@ 0 0
# /dev/sda3
/dev/sda3 /home btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@home 0 0
# /dev/sda1
UUID=1C11-E40E /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/sda2
/dev/sda2 none swap defaults 0 0
13. chroot 到新系统
使用 arch-chroot
将当前可见更目录修改为 /mnt
arch-chroot /mnt
14. 设置与主机名与时区
输出主机名并重定向到 /etc/hostname
echo my-arch-linux-hostname >> /etc/hostname # 将 my-arch-linux-hostname 替换为你想要的主机名
设置时区为 Asia/Shanghai
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
使用 hwclock
将系统时间同步到硬件
hwclock --systohc
15. 本地化
去除 /etc/locale.gen
下 #en_SG.UTF-8 UTF-8
#zh_CN.UTF-8 UTF-8
两行的注释
你也可以使用
vim
可视化编辑关于为什么使用
en_SG
而非en_US
的原因见 安装指南 - Arch Linux 中文维基
sed -i '/^#en_SG\.UTF-8/s/^#//; /^#zh_CN\.UTF-8/s/^#//' /etc/locale.gen
随后使用 locale-gen
生成 locale 信息
locale-gen
如果出现 Generation complete.
之类的字眼即代表生成成功。
输出 zh_CN.UTF-8
并重定向到 /etc/locale.conf
如果你不使用
linux-lily
这样打了 GBK 补丁的内核,或不使用ssh
客户端连接到tty
,推荐不要始终中文locale
,而是转而使用en_SG.UTF-8
这样可以在tty
中正常显示的locale
。
echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf
16. 创建新用户并设置密码
设置 root
账户的密码
passwd root
New password:
Retype new password:
passwd: password updated successfully
输入两次相同的密码,注意过程中不会显示你输入的内容。
使用 useradd
添加一个使用 zsh
的用户并添加到 wheel
组
将
myusername
替换为您的用户名
useradd -m -G wheel -s /bin/zsh myusername
为新用户设置密码
passwd myusername # 同为 root 用户设置密码
使用 visudo
修改 sudo
配置
EDITOR=vim visudo
去除 # %wheel ALL=(ALL:ALL) ALL
一行的注释
17. 配置 Pacman 并启用 archlinuxcn 仓库
使用 vim
编辑 /etc/pacman.conf
vim /etc/pacman.conf
去除 #Color
行(34)的注释
去除 [multilib]
两行(93, 94)的注释,启用 32 位仓库
在末尾添加如下内容,启用 archlinuxcn 软件仓库(可选)
[archlinuxcn]
Server = https://mirrors.pku.edu.cn/archlinuxcn/$arch
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirror.sjtu.edu.cn/archlinuxcn/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
Server = https://mirrors.cernet.edu.cn/archlinuxcn/$arch
使用 :wq
保存并推出
使用 pacman
更新软件包仓库并安装 archlinuxcn-keyring
pacman -Syyu archlinuxcn-keyring
18. 编辑 initramfs
使用 vim
编辑 /etc/mkinitcpio.conf
vim /etc/mkinitcpio.conf
如无特殊需求,修改 HOOKS
(56)为
HOOKS=(base systemd autodetect modconf microcode kms keyboard sd-vconsole block filesystems resume)
配置 vconsole
echo -e 'KEYMAP=us\nFONT=ter-v18b' > /etc/vconsole.conf
使用 mkinitcpio
更新 initramfs
mkinitcpio -P
19. 安装 Grub 引导
使用 grub-install
将 grub
安装到 EFI
分区
此处
GRUB2
为引导项名称,可自定义
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB2
使用 vim
编辑 /etc/default/grub
vim /etc/default/grub
将 GRUB_DEFAULT
(4)设为 saved
,默认使用上次引导的选项
去除 GRUB_CMDLINE_LINUX_DEFAULT
(7)的 quiet
参数,显示启动日志。并添加 nowatchdog
参数,关闭部分看门狗
如果 nowatchdog 参数无法禁用您的看门狗参数,参见 性能优化 - Arch Linux 中文维基
去除 #GRUB_SAVEDEFAULT=true
(55)一行的注释,开启默认保存
去除 #GRUB_DISABLE_SUBMENU=y
(58)一行的注释,关闭二级菜单,确保默认启动上次保存
使用 :wq
保存并退出,完整的配置文件应该如下
# GRUB boot loader configuration
GRUB_DEFAULT=saved
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 nowatchdog"
GRUB_CMDLINE_LINUX=""
# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y
# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu
# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `videoinfo'
GRUB_GFXMODE=auto
# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
# modes only. Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"
# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"
# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
GRUB_SAVEDEFAULT=true
# Uncomment to disable submenus in boot menu
GRUB_DISABLE_SUBMENU=y
# Probing for other operating systems is disabled for security reasons. Read
# documentation on GRUB_DISABLE_OS_PROBER, if still want to enable this
# functionality install os-prober and uncomment to detect and include other
# operating systems.
#GRUB_DISABLE_OS_PROBER=false
使用 grub-mkconfig
生成 grub
配置文件
grub-mkconfig -o /boot/grub/grub.cfg
20. 结束安装
输入如下命令
exit # 退回安装环境
umount -R /mnt # 卸载分区
reboot # 重启
输入
reboot
重启后,务必取出安装媒介
你将进入 grub
引导界面,等待倒计时或按下回车键即可引导进入系统。
使用您新建的账户登录系统
在此处按下 0
创建一个新的 zsh
配置文件
使用如下命令启用网络
systemctl enable --now NetworkManager.service
systemctl disable NetworkManager-wait-online.service