本指南旨在提供一个真正“零基础友好”的 Arch Linux 手动安装流程,我们将以 Btrfs 文件系统和 GNOME 桌面环境为主线,专为现代 UEFI 启动模式的计算机优化。本教程将涵盖每一个细节,从连接Wi-Fi的具体指令到硬盘分区的每一个按键,最终目标是构建一个美观、高效且开箱即用的现代化桌面系统。
阶段一:准备工作 (Live 环境)
在开始之前,请确保你已经使用 Ventoy 或 balenaEtcher 等工具制作好了 Arch Linux 的启动 U 盘,并已从 U 盘成功启动进入命令行界面。
1. 验证启动模式
这是确保后续引导安装正确无误的第一步。我们需要确认计算机是以现代的 UEFI 模式启动,而不是传统的 Legacy BIOS 模式。
ls /sys/firmware/efi/efivars
预期结果:如果屏幕上列出了一长串文件和目录,那么恭喜你,启动模式正确。
如果报错:提示目录不存在,请重启电脑进入 BIOS/UEFI 设置界面,查找 “Boot Mode” 或类似选项,将其从 “Legacy” 或 “CSM” 更改为 “UEFI”,然后重新从 U 盘启动。
2. 连接网络
网络是安装过程的生命线,所有软件包都需要从网络下载。
对于有线网络:
通常情况下,插入网线后系统会自动连接。你可以直接进入下一步验证网络。
对于无线网络 (Wi-Fi):
我们将使用 Archiso 内置的 iwctl 工具来进行连接。
# 1. 启动 iwctl 交互式命令行
iwctl
# 2. 列出你的无线设备名,通常是 wlan0
[iwd]# device list
# 3. 使用你的无线设备名开始扫描网络 (将 wlan0 替换为你的设备名)
[iwd]# station wlan0 scan
# 4. 列出扫描到的所有可用 Wi-Fi 网络
[iwd]# station wlan0 get-networks
# 5. 连接到你的 Wi-Fi (将 "你的WiFi名称" 替换为真实名称)
[iwd]# station wlan0 connect "你的WiFi名称"
# 6. 系统会提示你输入密码,输入后按回车
Passphrase: [输入你的Wi-Fi密码]
# 7. 连接成功后,输入 exit 退出 iwctl
[iwd]# exit
验证网络连接:
无论使用有线还是无线,都用 ping 命令来最终确认网络是否通畅。
ping archlinux.org
预期结果:屏幕上开始滚动显示来自服务器的响应信息。按 Ctrl+C 组合键停止 ping 命令。
如果报错:请检查网络硬件或重新执行连接步骤。
3. 更新系统时间
确保系统时间与网络时间同步,这对于后续软件包签名验证至关重要,可以避免很多不必要的错误。
timedatectl set-ntp true
4. 更换国内软件仓库镜像源
为了加快后续软件下载速度,建议先把 pacman 的软件仓库镜像源切换到国内镜像。使用 vim 编辑 /etc/pacman.d/mirrorlist 文件,把想用的镜像源放到靠前位置即可。
vim /etc/pacman.d/mirrorlist
# 推荐镜像源(放在文件靠前位置)
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch # 清华大学开源软件镜像站
Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch # 华为开源镜像站
Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch # 兰州大学开源镜像站
📑 命令参数说明:
/etc/pacman.d/mirrorlist:Arch Linux 的软件仓库镜像列表文件。放在文件最上面的镜像源,通常会被优先使用。
保存后,后续使用 pacman 安装软件时,就会优先从这些国内镜像站下载。
阶段二:硬盘分区与格式化 (Btrfs 主方案)
这是整个安装过程中最关键、最需要细心的一步。我们将以 /dev/nvme0n1 (代表 NVMe 固态硬盘) 为例。
重要提示:如果你的硬盘是传统的 SATA 接口 (SSD 或 HDD),它的名称通常是 /dev/sda。请将本节中所有的 /dev/nvme0n1 替换为 /dev/sda。你可以通过运行 lsblk 命令来确认你的硬盘名称。
5. 硬盘分区 (cfdisk)
可以,直接使用 cfdisk 就行,不必非得用 fdisk。对新手来说,cfdisk 的交互界面更直观,不容易输错。这里仍然创建三个分区:
- EFI 系统分区:用于存放引导程序。
- Swap 交换分区:作为物理内存的补充。
- Btrfs 根分区:存放整个操作系统和你的所有文件。
请先根据你的硬盘类型判断设备名:
- SATA 硬盘:通常是
/dev/sda、/dev/sdb、/dev/sdc。 - NVMe 固态硬盘:通常是
/dev/nvme0n1、/dev/nvme1n1、/dev/nvme2n1。
# 先查看磁盘,确认哪块盘是你要安装 Arch Linux 的目标盘
lsblk
# 如果目标盘是 SATA 硬盘
cfdisk /dev/sda
# 如果目标盘是 NVMe 硬盘
cfdisk /dev/nvme0n1
📑 命令参数说明:
lsblk:列出当前系统识别到的磁盘和分区,用来确认目标硬盘。
cfdisk /dev/sda:对 SATA 硬盘进行可视化分区。
cfdisk /dev/nvme0n1:对 NVMe 硬盘进行可视化分区。
进入 cfdisk 后,如果提示选择分区表类型,优先选 gpt。然后按下面思路分区:
| 分区 | 建议大小 | 类型 | 说明 |
|---|---|---|---|
| EFI | 512M | EFI System | 用于 UEFI 启动。 |
| Swap | 4G | Linux swap | 8G 内存机器通常够用,内存更大可按需调整。 |
| 根分区 | 剩余全部空间 | Linux filesystem | 后续会格式化为 Btrfs。 |
全部建好后,选择 Write 写入分区表,输入 yes 确认,再选择 Quit 退出。
分区完成后的命名通常如下:
- NVMe:
/dev/nvme0n1p1、/dev/nvme0n1p2、/dev/nvme0n1p3 - SATA:
/dev/sda1、/dev/sda2、/dev/sda3
后面格式化和挂载命令里,如果你的机器不是 NVMe,请记得把盘符改成实际设备名。
6. 格式化分区并创建 Btrfs 子卷
分区完成后,我们需要用正确的文件系统来格式化它们。
# 1. 格式化 EFI 分区为 FAT32
mkfs.fat -F32 /dev/nvme0n1p1
# 2. 格式化并激活 Swap 分区
mkswap /dev/nvme0n1p2
swapon /dev/nvme0n1p2
# 3. 格式化 Btrfs 分区并创建子卷 (这是 Btrfs 的精髓所在)
# -f: 强制格式化
# -L: 指定一个卷标,方便识别
mkfs.btrfs -f -L myArch /dev/nvme0n1p3
# 4. 挂载 Btrfs 的顶层卷到 /mnt,为创建子卷做准备
mount /dev/nvme0n1p3 /mnt
# 5. 创建子卷,这是一种高效的目录隔离方式
# @: 用于根目录 (/)
# @home: 用于用户家目录 (/home)
# @snapshots: 用于系统快照,方便备份与恢复
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@snapshots
# 6. 完成创建后,卸载顶层卷
umount /mnt
阶段三:安装基本系统
7. 挂载分区
现在,我们需要以正确的结构将这些分区(和子卷)挂载起来,为安装系统做准备。
这里要特别注意:EFI 分区请挂载到 /boot/efi,而不是直接挂载到 /boot。因为 EFI 分区通常只分配很小的空间,例如 512M;而 /boot 目录里除了 EFI 文件,还会放微码、GRUB 文件、Linux 内核和 initramfs 等内容。若把整个 /boot 都压在 EFI 分区上,后期很容易把这个小分区塞满。
# 1. 挂载 Btrfs 根子卷到 /mnt
# noatime: 禁用文件访问时间记录,提升性能
# compress=zstd: 使用 zstd 算法进行实时压缩,节省空间并提升读写速度
# subvol=@: 指定挂载名为 @ 的子卷
mount -o noatime,compress=zstd,subvol=@ /dev/nvme0n1p3 /mnt
# 2. 创建其他挂载点目录
mkdir -p /mnt/home
mkdir -p /mnt/btrfs # 这个目录用于未来访问Btrfs顶层卷,方便管理快照
mkdir -p /mnt/boot/efi
# 3. 挂载 Btrfs home 子卷
mount -o noatime,compress=zstd,subvol=@home /dev/nvme0n1p3 /mnt/home
# 4. 挂载 Btrfs 顶层卷
mount -o noatime,compress=zstd /dev/nvme0n1p3 /mnt/btrfs
# 5. 挂载 EFI 分区
mount /dev/nvme0n1p1 /mnt/boot/efi
📑 命令参数说明:
-o noatime,compress=zstd,subvol=@:挂载时附带参数,其中noatime用于减少磁盘写入,compress=zstd用于启用透明压缩,subvol=@指定挂载根子卷。
mkdir -p:递归创建目录,若目录已存在则不会报错。
/mnt/boot/efi:EFI 分区挂载点。这里特意不用/boot,是为了避免内核、微码、GRUB 文件把小容量 EFI 分区塞满。
8. 安装基本软件包
使用 pacstrap 命令,将 Arch Linux 的核心系统安装到我们刚刚挂载好的 /mnt 目录中。
pacstrap /mnt base linux linux-firmware vim networkmanager git btrfs-progs
base,linux,linux-firmware: 构成一个可启动系统的最小集合。vim: 一个对新手友好的命令行文本编辑器。networkmanager: 强大的网络管理工具,对桌面环境和 Wi-Fi 支持极佳。git: 版本控制工具,未来安装 AUR 软件包时会用到。btrfs-progs: Btrfs 文件系统的管理工具集。
9. 生成 Fstab
Fstab (File System Table) 文件记录了系统启动时需要自动挂载的分区信息。
genfstab -U /mnt >> /mnt/etc/fstab
强烈建议检查一下生成的文件:
cat /mnt/etc/fstab
确保文件中包含了 EFI、Swap、Btrfs 根目录和家目录的条目,并且 Btrfs 的 subvol 选项都正确无误。
阶段四:配置新系统 (Chroot 环境)
10. Chroot 进入新系统
现在,我们将使用 arch-chroot 命令,将我们的操作环境从 Live U盘 “切换”到硬盘上刚刚安装好的新系统中。
arch-chroot /mnt
成功标志:你的命令行提示符会发生变化,通常会变成 [root@archiso /]#。
11. 配置时区、语言、主机名、密码
这些是让你的系统更具个性化和可用性的基础设置。
# 1. 设置时区为中国上海
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
# 2. 设置系统语言
nano /etc/locale.gen
# 在打开的文件中,使用方向键找到以下两行,并删除它们行首的 '#' 符号:
# en_US.UTF-8 UTF-8
# zh_CN.UTF-8 UTF-8
# 按 Ctrl+X, 然后按 Y, 最后按回车保存退出。
# 生成 Locale 信息
locale-gen
# 创建全局语言配置文件,将英文作为系统界面语言,以避免终端乱码
echo "LANG=en_US.UTF-8" > /etc/locale.conf
# 3. 设置主机名 (你电脑在网络中的名字)
echo "myArch" > /etc/hostname
# 4. 配置 hosts 文件以正确解析主机名
nano /etc/hosts
# 在文件末尾添加以下内容:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myArch.localdomain myArch
# 5. 为 root (超级管理员) 用户设置一个强密码
passwd
# 你需要输入两次密码进行确认
阶段五:安装引导程序 (GRUB)
引导程序是开机时加载操作系统的第一步。这里我们使用更常见的 GRUB。
12. 安装微码 (Microcode)
微码是 CPU 厂商发布的固件更新,用于修复 Bug 和安全漏洞,是确保系统稳定运行的关键一步。请根据你的 CPU 厂商安装对应微码。
# Intel CPU
pacman -S intel-ucode
# AMD CPU
pacman -S amd-ucode
13. 安装并配置 GRUB
这一节把 GRUB 相关包安装、引导写入、配置修改和配置生成一次做完。注意,本文前面把 EFI 分区挂载到了 /boot/efi,所以这里的 EFI 目录要保持一致。
# 安装 GRUB 相关包
pacman -S grub efibootmgr os-prober
包说明:
grub:启动引导器本体。efibootmgr:用于将启动项写入 UEFI NVRAM。os-prober:如果你还装了 Windows,它可以帮助 GRUB 检测其他系统。
# 将 GRUB 安装到 EFI 分区
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ARCH
📑 命令参数说明:
--target=x86_64-efi:为 64 位 UEFI 平台安装 GRUB。
--efi-directory=/boot/efi:将grubx64.efi安装到之前指定的 EFI 分区挂载位置。
--bootloader-id=ARCH:把启动项命名为ARCH,便于在主板启动菜单中识别。
# 编辑 GRUB 默认配置
vim /etc/default/grub
# 建议将 GRUB_CMDLINE_LINUX_DEFAULT 改成下面这样
# 去掉 quiet,把 loglevel=3 改成 5,并加入 nowatchdog
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5 nowatchdog"
# 如果需要识别 Windows 等其他系统,请加入这一行
GRUB_DISABLE_OS_PROBER=false
# 生成 GRUB 配置文件
grub-mkconfig -o /boot/grub/grub.cfg
📑 命令参数说明:
grub-mkconfig -o /boot/grub/grub.cfg:根据当前系统环境生成最终的 GRUB 启动配置文件。
成功标志:命令执行完后,如果你看到发现 Linux 内核、initramfs,甚至还检测到 Windows Boot Manager,就说明引导配置基本没问题了。
至此,基础安装部分完成
所有配置工作都已完成,是时候见证奇迹了。
14. 退出、卸载并重启
# 1. 退出 chroot 环境,回到 Live U 盘
exit
# 2. 安全地卸载所有分区
umount -R /mnt
# 3. 重启电脑
reboot
📑 命令参数说明:
exit:退出当前 chroot 环境,回到安装 U 盘的 Live 系统。
umount -R /mnt:递归卸载/mnt下所有已挂载分区,避免因未卸载干净导致数据不同步。
reboot:重启系统,准备首次进入新安装的 Arch Linux。
重启时请记得拔掉安装 U 盘,否则机器可能再次进入安装环境而不是新系统。
到这里,你已经完成了 Arch Linux 的基础系统安装,包括磁盘分区、Btrfs 子卷、基本软件包、系统配置、引导程序与首次启动前的全部准备。
接下来若要安装图形界面、普通用户、GNOME 桌面环境与后续优化,请继续看下一篇:《Arch Linux 图形界面与 GNOME 环境配置指南》。