跳到主要内容

Arch Linux 安装教程:UEFI + Btrfs + GRUB 从零装好

如果你想通过命令行把 Arch Linux 从头装起来,这篇文章可以当作一份完整的主线实操稿。

本文默认的安装路线是:

  • 单系统
  • UEFI 启动
  • Btrfs 文件系统
  • GRUB 引导

这样做的好处是主线足够清楚,不会一上来就在 GRUB / systemd-boot / 双系统 / 桌面环境 之间来回分叉,比较适合第一次自己手装 Arch 的场景。

Arch Linux 官方 Logo

适用场景 #

这篇教程更适合下面这些情况:

  • 你准备在一块磁盘上安装单系统 Arch Linux
  • 机器使用 UEFI 启动,而不是 Legacy BIOS
  • 你希望根分区使用 Btrfs,并启用 zstd 压缩
  • 你能接受在安装阶段全程使用命令行

如果你是双系统、需要单独的 /home 子卷方案,或者想直接上桌面环境,这篇文章不展开,后面可以再单独补专题。

安装前说明 #

开始前先确认几件事:

  • 本文默认你会清空目标磁盘上的原有数据
  • 引导方案固定用 GRUB
  • 时区默认写 Asia/Shanghai
  • locale 默认启用 en_US.UTF-8zh_CN.UTF-8
  • 网络服务默认用 NetworkManager

另外,文中的磁盘名和分区名都只是示例。你一定要按自己机器上 lsblk 实际显示的设备名替换,不要机械照抄。

第一步:配置网络 #

有线网络 #

如果你是有线网络,通常插上网线后等一会儿就行。

无线网络 #

无线网络可以直接用 iwctl

iwctl
device list
station wlan0 scan
station wlan0 get-networks
station wlan0 connect "你的 Wi-Fi 名称"
exit

如果网络名称里有空格,连接时记得加双引号。

配好之后先测试一下连通性:

ping archlinux.org -c 3

如果这里还 ping 不通,就不要急着往下走,先把网络问题解决掉。

联网与无线配置示意

第二步:配置 SSH(可选) #

如果你觉得安装时直接在本机终端敲命令不方便,可以先临时开 SSH,改成远程操作。

先给 root 设置一个密码:

passwd

然后编辑 SSH 配置:

nano /etc/ssh/sshd_config

确认或加入这一行:

PermitRootLogin yes

再启动 SSH 服务:

systemctl start sshd

查看 IP:

ip a

然后你就可以在另一台电脑上测试:

ssh root@你的IP地址

提醒一句:这是安装阶段的临时做法。系统正式装好之后,还是建议改回更安全的登录方式。

第三步:同步日期时间 #

执行下面命令启用 NTP:

timedatectl set-ntp true

如果你想确认状态,可以再看一眼:

timedatectl status

第四步:查看磁盘并建立分区 #

先查看当前磁盘情况:

lsblk

常见磁盘命名规则如下:

磁盘类型常见设备名
SATA / U 盘 / SCSI/dev/sdX
NVMe/dev/nvme0n1
虚拟硬盘/dev/vdX

确认目标磁盘后,进入分区工具:

cfdisk /dev/你的磁盘

对本文这条主线来说,至少需要两个分区:

  • EFI 系统分区:建议 512MB
  • 根分区:剩余空间全部给 /

如果你的磁盘原来已经有旧系统,而且你准备装单系统,那就先把旧分区删掉,再重新创建。

磁盘、分区与 EFI 布局示意

第五步:格式化分区 #

先格式化 EFI 分区:

mkfs.fat -F 32 /dev/你的EFI分区

再格式化根分区为 Btrfs:

mkfs.btrfs -f /dev/你的根分区

这里的设备名一定要和你前面 lsblk 看到的实际结果对应起来。
比如 NVMe 常见是 /dev/nvme0n1p1/dev/nvme0n1p2,SATA 则可能是 /dev/sda1/dev/sda2

第六步:创建 Btrfs 子卷并挂载 #

本文只保留一个最基础的根子卷 @

先临时挂载根分区:

mount -t btrfs -o compress=zstd /dev/你的根分区 /mnt

创建子卷:

btrfs subvolume create /mnt/@

看一眼子卷列表:

btrfs subvolume list -p /mnt

然后卸载:

umount /mnt

重新按子卷方式挂载:

mount -t btrfs -o subvol=/@,compress=zstd /dev/你的根分区 /mnt
mkdir -p /mnt/boot/efi
mount /dev/你的EFI分区 /mnt/boot/efi

最后检查挂载情况:

df -h

正常的话,应该能看到:

  • 根分区挂到了 /mnt
  • EFI 分区挂到了 /mnt/boot/efi

Btrfs 子卷、挂载与 df 检查示意

第七步:修改镜像源 #

如果你在中国大陆网络环境下安装,先把镜像源顺一下通常会省很多时间。

编辑镜像列表:

nano /etc/pacman.d/mirrorlist

可以把中科大源放到前面:

Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch

这一步的核心目的不是“只保留一个镜像”,而是让你安装阶段优先走更顺手的源。

第八步:安装基础系统 #

开始安装系统本体:

pacstrap /mnt base base-devel linux linux-firmware linux-headers nano intel-ucode

如果你是 AMD CPU,把 intel-ucode 替换成 amd-ucode

这里这些包里比较关键的是:

  • base:基础系统
  • base-devel:常见开发工具
  • linux / linux-firmware / linux-headers:内核和固件
  • nano:编辑器
  • intel-ucodeamd-ucode:CPU 微码

第九步:生成 fstab 并进入新系统 #

生成 fstab

genfstab -U /mnt >> /mnt/etc/fstab

建议立刻看一眼:

cat /mnt/etc/fstab

确认没有写错挂载项之后,再进入新系统:

arch-chroot /mnt

第十步:配置软件仓库 #

先编辑 pacman.conf

nano /etc/pacman.conf

在文件末尾加入 archlinuxcn

[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

再导入 keyring:

pacman -Syu archlinuxcn-keyring

第十一步:设置时区和本地化 #

时区先按本文默认值写成上海:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc

然后编辑 locale:

nano /etc/locale.gen

把下面两行前面的注释去掉:

en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

然后生成 locale:

locale-gen

再写入默认语言环境:

cat >/etc/locale.conf <<'EOF'
LANG=en_US.UTF-8
EOF

安装阶段不要只保留中文 locale,不然 tty 更容易出现乱码。

第十二步:设置 root 密码并创建普通用户 #

先给 root 设置密码:

passwd

再创建普通用户:

useradd -m -g users -G wheel,storage,power archuser
passwd archuser

接着打开 sudo 权限:

EDITOR=nano visudo

找到这段提示:

Uncomment to allow members of group wheel to execute any command

%wheel ALL=(ALL:ALL) ALL 前面的注释去掉。

第十三步:安装并配置 GRUB #

先安装引导需要的包:

pacman -S grub efibootmgr

安装前可以先再确认一次 /boot/efi 挂载是否正常:

lsblk

然后执行:

grub-install --efi-directory=/boot/efi --bootloader-id=Arch
grub-mkconfig -o /boot/grub/grub.cfg

本文只写 GRUB 主线。
如果你后面想单独折腾 systemd-boot 或双系统引导,更适合另外写一篇专题,不建议第一次安装时把这些分支一次性全掺进去。

第十四步:配置网络与常用基础组件 #

先安装网络管理工具:

pacman -S networkmanager dhcpcd

然后启用 NetworkManager

systemctl enable NetworkManager

如果你后面还需要蓝牙和 PipeWire,可以再装:

pacman -S bluez bluez-utils pipewire-pulse pipewire-alsa pipewire-jack
systemctl enable bluetooth

但桌面环境、显卡驱动和常用 GUI 软件这篇先不展开,不然主线会被拉得太长。

pacstrap、chroot、GRUB 与 NetworkManager 收尾示意

第十五步:重启前检查 #

在退出前,建议至少检查这几项:

lsblk
cat /etc/fstab
systemctl enable NetworkManager
grub-mkconfig -o /boot/grub/grub.cfg

检查重点是:

  • /boot/efi 是否真的挂载过
  • fstab 里 UUID 是否正确
  • NetworkManager 是否已经 enable
  • GRUB 配置文件是否成功生成

第十六步:退出并重启 #

退出 chroot:

exit

卸载所有挂载:

umount -R /mnt

然后重启:

reboot

如果你是从安装 U 盘启动的,记得在重启时拔掉安装介质,避免又回到 Live 环境。

常见坑 #

1. 磁盘名抄错 #

这是最容易出事的地方。
/dev/sda2/dev/vda2/dev/nvme0n1p2 完全不是一回事,照抄别人的设备名很容易把盘搞错。

2. EFI 分区没挂载好 #

如果 /boot/efi 没挂载,grub-install 往往就会失败,或者装完根本起不来。

3. locale 只开中文 #

安装阶段只保留中文 locale,tty 更容易出现显示问题。
保留 en_US.UTF-8 会更稳。

4. 忘了启用 NetworkManager #

系统装好能启动,但进系统后没有网络,这个问题很常见。
大部分时候就是忘了:

systemctl enable NetworkManager

5. fstab 的 UUID 写错 #

如果 fstab 写错,重启后就可能直接掉进 emergency shell。
所以 genfstab 之后一定要自己再读一遍。

小结 #

如果你是第一次手装 Arch,与其一开始把所有可选项都塞进去,不如先让一条主线稳定跑通:

  • 联网
  • 分区
  • Btrfs
  • pacstrap
  • chroot
  • locale / 用户 / GRUB
  • NetworkManager

等这条基础安装链条走顺了,再去补桌面环境、显卡驱动、美化、AUR 助手,会轻松很多。