Arch Linux 安装指南

Arch Linux 的安装过程是一次对 Linux 系统底层原理的实践。不同于其他发行版的图形化安装器,Arch 的手动安装让你完全掌控系统的每一个细节。本章将覆盖从制作启动盘到安装后配置的完整流程,包括多种安装场景和分区方案。

官网archlinux.org | 下载archlinux.org/download

中国镜像清华 TUNA | 中科大 USTC

新手入门:如果你是 Arch Linux 新手,推荐先阅读 Shorin 的 ArchLinux 入门指南,这是一个面向新手的完整中文教程。


目录导航

安装前准备

安装环境配置

文件系统与分区

系统安装

系统配置

桌面环境

TTY 与终端

硬件驱动

虚拟机

参考资料


20.1 安装前准备

下载 ISO 镜像

# 官方下载页面
# https://archlinux.org/download/
 
# 使用国内镜像加速下载
wget https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso
wget https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso.sig
wget https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/sha256sums.txt

验证 ISO 完整性

# SHA256 校验
sha256sum archlinux-x86_64.iso
# 对比 sha256sums.txt 中的值
 
# GPG 签名验证
gpg --keyserver-options auto-key-retrieve --verify archlinux-x86_64.iso.sig archlinux-x86_64.iso

制作启动盘

# Linux 下使用 dd
lsblk # 确认 U 盘设备名(如 /dev/sdb)
sudo dd bs=4M if=archlinux-x86_64.iso of=/dev/sdb conv=fsync oflag=direct status=progress
 
# 或使用 cp
sudo cp archlinux-x86_64.iso /dev/sdb
sync
 
# 注意:目标是整个设备(/dev/sdb),不是分区(/dev/sdb1)
# 这会擦除 U 盘上所有数据!
 
# Windows 下推荐工具:
# - Rufus(DD 模式写入)
# - Ventoy(多 ISO 启动盘)
# - balenaEtcher

启动到安装环境

# 1. 进入 BIOS/UEFI 设置(通常按 F2/Del/F12)
# 2. 设置 U 盘为第一启动项
# 3. 如果是 UEFI,确保关闭 Secure Boot(或在安装后再配置)
# 4. 保存并重启
# 5. 选择 "Arch Linux install medium" 启动
 
# 启动后会进入 root shell
# root@archiso ~ #

20.2 UEFI vs Legacy BIOS 区别与识别

对比表

特性Legacy BIOSUEFI
年代1975年+2005年+
分区表MBR(最大 2TB)GPT(最大 9.4ZB)
分区数量最多 4 个主分区最多 128 个分区
启动方式读取 MBR 引导代码从 ESP 加载 .efi 文件
安全启动不支持Secure Boot
启动速度较慢较快
界面文本图形/文本

识别当前启动模式

# 在安装环境中检查
ls /sys/firmware/efi/efivars
# 如果目录存在且有内容 → UEFI 模式
# 如果不存在 → BIOS 模式
 
# 或者
cat /sys/firmware/efi/fw_platform_size
# 64 → 64位 UEFI
# 32 → 32位 UEFI
# 文件不存在 → BIOS

20.2-A 引导程序详解

引导程序(Bootloader)是系统启动时第一个运行的程序,负责加载内核和 initramfs。选择合适的引导程序对系统稳定性和易用性至关重要。

引导程序完整对比

特性GRUBsystemd-bootrEFIndLiminesyslinux
支持固件BIOS/UEFI仅UEFI仅UEFIBIOS/UEFIBIOS/部分UEFI
分区表支持MBR/GPTGPTGPTMBR/GPTMBR/GPT
配置复杂度
启动速度较慢最快
自动检测OS部分
文件系统支持广泛有限有限有限有限
多内核管理自动手动自动手动手动
自定义菜单完整简单完整简单简单
Secure Boot支持支持支持支持有限
社区支持最广泛广泛中等较小较小
适用场景通用/双系统纯UEFI系统多系统启动轻量级老旧系统

GRUB(GRand Unified Bootloader)

特点:功能最强大,支持最多文件系统和操作系统,是大多数发行版的默认选择。

# 安装
pacman -S grub efibootmgr
 
# UEFI 系统安装
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
 
# BIOS 系统安装
grub-install --target=i386-pc /dev/sda
 
# 生成配置
grub-mkconfig -o /boot/grub/grub.cfg

配置文件

  • /etc/default/grub - 默认配置(可编辑)
  • /boot/grub/grub.cfg - 生成的配置(勿手动编辑)
  • /etc/grub.d/40_custom - 自定义条目

适用场景

  • 双系统(Windows + Linux)
  • 需要自动检测其他操作系统
  • 需要复杂的启动菜单定制

systemd-boot

特点:轻量快速,与 systemd 深度集成,配置简单。

# 安装(无需额外包)
bootctl install
 
# 创建启动条目
mkdir -p /boot/loader/entries

配置文件

  • /boot/loader/loader.conf - 主配置
  • /boot/loader/entries/*.conf - 启动条目

适用场景

  • 纯 UEFI 系统
  • 追求快速启动
  • 喜欢简洁配置

rEFInd

特点:自动检测内核和操作系统,图形界面友好。

# 安装
pacman -S refind
refind-install

配置文件

  • /boot/efi/EFI/refind/refind.conf - 主配置
  • /boot/refind_linux.conf - Linux 条目

适用场景

  • 多系统启动(Linux + Windows + macOS)
  • 希望自动检测所有系统
  • 喜欢图形化选择界面

Limine

特点:轻量级,支持多种协议,设计简洁。

# 安装
pacman -S limine
limine-install --fallback

配置文件

  • /boot/limine.conf - 主配置

适用场景

  • 轻量级系统
  • 需要 BIOS + UEFI 双支持
  • 简单的单系统启动

syslinux

特点:简单轻量,主要用于 BIOS 系统。

# 安装
pacman -S syslinux gptfdisk
syslinux-install_update -i -a -m

配置文件

  • /boot/syslinux/syslinux.cfg - 主配置

适用场景

  • 老旧 BIOS 系统
  • 简单的单系统启动
  • 嵌入式系统

引导程序选择指南

你的系统是什么固件?
├── BIOS(传统 BIOS)
│   ├── 需要双系统 → GRUB
│   └── 简单单系统 → syslinux 或 GRUB
└── UEFI
    ├── 需要双系统 → GRUB 或 rEFInd
    ├── 纯 Linux → systemd-boot(推荐)
    ├── 多系统(3个以上) → rEFInd
    └── 追求极简 → systemd-boot

如何判断系统是否支持 EFI

# 方法1:检查 EFI 变量目录
ls /sys/firmware/efi/efivars
# 存在且有内容 → 支持 EFI
 
# 方法2:检查 UEFI 固件类型
cat /sys/firmware/efi/fw_platform_size
# 64 → 64位 UEFI
# 32 → 32位 UEFI
# 不存在 → BIOS
 
# 方法3:检查 BIOS/UEFI 设置
# 重启时按 F2/Del/F12 进入设置界面
# 如果看到图形化设置界面 → UEFI
# 如果只有文本菜单 → 可能是 BIOS
 
# 方法4:检查磁盘分区表
fdisk -l /dev/sda | grep "Disk label"
# dos → MBR(BIOS)
# gpt → GPT(UEFI)

Secure Boot 处理

# 检查 Secure Boot 状态
mokutil --sb-state
# 或
cat /sys/firmware/efi/esrt/entries/*/fw_class
 
# 如果需要禁用 Secure Boot
# 1. 重启进入 BIOS/UEFI 设置
# 2. 找到 Secure Boot 选项(通常在 Security 或 Boot 菜单)
# 3. 设置为 Disabled
# 4. 保存并重启
 
# Arch Linux 官方内核支持 Secure Boot
# 但需要手动签名或使用 shim
pacman -S shim

20.3 安装环境基础配置

连接网络

# 有线网络(通常自动连接)
ip link # 查看网络接口
ping -c 3 archlinux.org # 测试连接
 
# 无线网络(使用 iwctl)
iwctl
[iwd]# device list # 列出无线设备
[iwd]# station wlan0 scan # 扫描网络
[iwd]# station wlan0 get-networks # 显示扫描结果
[iwd]# station wlan0 connect "SSID" # 连接(会提示输入密码)
[iwd]# exit
 
# 验证连接
ping -c 3 archlinux.org
 
# 如果 DHCP 未自动获取 IP
dhcpcd enp0s3

更新系统时钟

timedatectl set-ntp true
timedatectl status

验证启动模式

ls /sys/firmware/efi/efivars 2>/dev/null && echo "UEFI" || echo "BIOS"

20.4 不同安装场景

场景 A: 纯 UEFI + GPT 安装(主流推荐)

适用于 2012 年后的大多数电脑。

分区方案

设备 大小 类型 挂载点
/dev/nvme0n1p1 512M EFI System /boot
/dev/nvme0n1p2 所有剩余 Linux filesystem /
(可选)
/dev/nvme0n1p3 适量 Linux swap [SWAP]
# 使用 fdisk 分区
fdisk /dev/nvme0n1
 
# 输入命令序列:
# g # 创建新的 GPT 分区表
# n # 新建分区 1(EFI)
# <回车> # 分区号默认 1
# <回车> # 起始扇区默认
# +512M # 大小 512MB
# t # 更改分区类型
# 1 # EFI System
# n # 新建分区 2(根分区)
# <回车> # 分区号默认 2
# <回车> # 起始扇区默认
# <回车> # 使用全部剩余空间(或指定大小如 -8G 留出 swap)
# w # 写入分区表
 
# 如果需要 swap 分区
# n → 3 → 默认 → +8G → t → 3 → 19(Linux swap)

场景 B: Legacy BIOS + MBR 安装

适用于旧电脑或特殊需求。

分区方案

设备 大小 类型 挂载点
/dev/sda1 所有 Linux filesystem /
(可选)
/dev/sda2 适量 Linux swap [SWAP]
fdisk /dev/sda
 
# 输入命令序列:
# o # 创建新的 MBR (DOS) 分区表
# n # 新建分区
# p # 主分区
# 1 # 分区号 1
# <回车> # 起始扇区默认
# <回车> # 使用全部空间(或留出 swap 空间)
# a # 设置启动标志
# w # 写入
 
# BIOS + GPT 方案(需要 BIOS Boot Partition)
# 使用 gdisk 创建 GPT 表时,需要一个 1M 的 BIOS Boot 分区:
gdisk /dev/sda
# n → 1 → 默认 → +1M → ef02 (BIOS boot partition)
# n → 2 → 默认 → 默认 → 8300 (Linux filesystem)

场景 C: 双系统安装(与 Windows 共存)

# 前提:Windows 已安装在 UEFI + GPT 模式
 
# 1. 在 Windows 中缩小分区(磁盘管理 → 压缩卷)
# 2. 从 Arch ISO 启动
 
# 查看现有分区
fdisk -l /dev/nvme0n1
# /dev/nvme0n1p1 EFI System (Windows 已创建,通常 100-500MB)
# /dev/nvme0n1p2 Microsoft reserved (16MB)
# /dev/nvme0n1p3 Microsoft basic data (Windows C:)
# /dev/nvme0n1p4 Windows recovery
 
# 3. 在空闲空间创建 Linux 分区
fdisk /dev/nvme0n1
# n → 5(或下一个可用编号) → 默认 → 默认(使用空闲空间)
# w
 
# 4. 不要格式化 Windows 的 EFI 分区!直接复用
# /dev/nvme0n1p1 已经是 FAT32 格式的 ESP,直接挂载到 /boot
 
# 5. 安装完成后安装 os-prober 检测 Windows
pacman -S os-prober ntfs-3g
# 编辑 /etc/default/grub
# GRUB_DISABLE_OS_PROBER=false
grub-mkconfig -o /boot/grub/grub.cfg

20.5 分区方案详解

使用 cfdisk(TUI 界面,最友好)

cfdisk /dev/nvme0n1
# 图形化的终端分区工具,支持方向键操作
# 选择 gpt 标签类型
# 用 [ New ] 创建分区
# 用 [ Type ] 更改类型
# 用 [ Write ] 写入
# 用 [ Quit ] 退出

使用 gdisk(GPT 专用)

gdisk /dev/nvme0n1
# ? 查看帮助
# p 打印分区表
# n 新建分区
# d 删除分区
# t 更改类型
# w 写入退出
 
# 常用分区类型代码:
# ef00 EFI System
# 8300 Linux filesystem
# 8200 Linux swap
# 8e00 Linux LVM
# fd00 Linux RAID

使用 parted(支持脚本化)

# 交互式
parted /dev/nvme0n1
(parted) mklabel gpt
(parted) mkpart "EFI" fat32 1MiB 513MiB
(parted) set 1 esp on
(parted) mkpart "Root" ext4 513MiB 100%
(parted) print
(parted) quit
 
# 命令行模式(脚本化)
parted -s /dev/nvme0n1 mklabel gpt
parted -s /dev/nvme0n1 mkpart "EFI" fat32 1MiB 513MiB
parted -s /dev/nvme0n1 set 1 esp on
parted -s /dev/nvme0n1 mkpart "Root" ext4 513MiB 100%

分区工具详解对比

特性fdiskgdiskcfdiskparted
分区表支持MBR/GPT仅 GPTMBR/GPTMBR/GPT
界面文本命令文本命令TUI 图形交互式/命令行
脚本化
分区类型代码数字(1=EFI等)十六进制(ef00等)菜单选择名称(fat32等)
学习曲线中等中等中等
适用场景通用GPT 专用新手友好自动化脚本

fdisk(最通用)

# MBR 分区表
fdisk /dev/sda
# o → 创建 MBR 分区表
# n → 新建分区
# p → 主分区
# t → 更改类型(1=EFI, 82=swap, 83=Linux)
# w → 写入
 
# GPT 分区表
fdisk /dev/nvme0n1
# g → 创建 GPT 分区表
# n → 新建分区
# t → 更改类型(1=EFI, 19=swap, 20=Linux)
# w → 写入

gdisk(GPT 专用)

gdisk /dev/nvme0n1
# ? → 查看帮助
# p → 打印分区表
# n → 新建分区
# d → 删除分区
# t → 更改类型
# w → 写入退出
 
# 常用 GPT 类型代码:
# ef00 → EFI System Partition
# 8200 → Linux swap
# 8300 → Linux filesystem
# 8e00 → Linux LVM
# fd00 → Linux RAID

cfdisk(最友好)

cfdisk /dev/nvme0n1
# 方向键导航
# [ New ] → 创建分区
# [ Type ] → 更改类型
# [ Write ] → 写入分区表
# [ Quit ] → 退出
# 支持 GPT 和 MBR

parted(支持脚本化)

# 交互式
parted /dev/nvme0n1
(parted) mklabel gpt
(parted) mkpart "EFI" fat32 1MiB 513MiB
(parted) set 1 esp on
(parted) mkpart "Root" ext4 513MiB 100%
(parted) print
(parted) quit
 
# 脚本化(适合自动化安装)
parted -s /dev/nvme0n1 mklabel gpt
parted -s /dev/nvme0n1 mkpart "EFI" fat32 1MiB 513MiB
parted -s /dev/nvme0n1 set 1 esp on
parted -s /dev/nvme0n1 mkpart "Root" ext4 513MiB 100%

工具选择建议

  • 新手 → cfdisk(图形界面,最易用)
  • GPT 分区 → gdisk 或 fdisk
  • MBR 分区 → fdisk
  • 自动化脚本 → parted
  • 通用场景 → fdisk

方案 1: Btrfs 子卷方案(推荐)

Btrfs 支持子卷、快照、压缩等高级功能。

# 分区结构
# /dev/nvme0n1p1 512M EFI System
# /dev/nvme0n1p2 剩余 Linux filesystem (Btrfs)
 
# 格式化
mkfs.fat -F 32 /dev/nvme0n1p1
mkfs.btrfs -f /dev/nvme0n1p2
 
# 创建子卷
mount /dev/nvme0n1p2 /mnt
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@log
btrfs subvolume create /mnt/@pkg
btrfs subvolume create /mnt/@snapshots
umount /mnt
 
# 挂载子卷
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@ /dev/nvme0n1p2 /mnt
 
mkdir -p /mnt/{boot,home,var/log,var/cache/pacman/pkg,.snapshots}
 
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@home /dev/nvme0n1p2 /mnt/home
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@log /dev/nvme0n1p2 /mnt/var/log
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@pkg /dev/nvme0n1p2 /mnt/var/cache/pacman/pkg
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@snapshots /dev/nvme0n1p2 /mnt/.snapshots
 
mount /dev/nvme0n1p1 /mnt/boot
 
# 验证挂载
findmnt -R /mnt

子卷设计说明:

子卷挂载点理由
@/根文件系统
@home/home用户数据独立,方便快照和还原
@log/var/log日志独立,回滚时保留日志
@pkg/var/cache/pacman/pkg包缓存独立,不纳入快照
@snapshots/.snapshots快照存储位置

方案 2: ext4 传统方案

简单可靠,适合大多数场景。

# 分区结构
# /dev/nvme0n1p1 512M EFI System /boot
# /dev/nvme0n1p2 剩余 Linux filesystem /
# /dev/nvme0n1p3 8G Linux swap [SWAP]
# (可选独立 /home)
 
# 格式化
mkfs.fat -F 32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2
mkswap /dev/nvme0n1p3
 
# 挂载
mount /dev/nvme0n1p2 /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
swapon /dev/nvme0n1p3

方案 3: LVM 方案

LVM 提供灵活的逻辑卷管理,支持在线扩容。

# 分区结构
# /dev/nvme0n1p1 512M EFI System
# /dev/nvme0n1p2 剩余 Linux LVM
 
# 格式化 EFI 分区
mkfs.fat -F 32 /dev/nvme0n1p1
 
# 创建 LVM
pvcreate /dev/nvme0n1p2 # 创建物理卷
vgcreate vg0 /dev/nvme0n1p2 # 创建卷组
lvcreate -L 50G vg0 -n root # 创建根逻辑卷
lvcreate -L 8G vg0 -n swap # 创建 swap 逻辑卷
lvcreate -l 100%FREE vg0 -n home # 剩余全部给 home
 
# 格式化逻辑卷
mkfs.ext4 /dev/vg0/root
mkfs.ext4 /dev/vg0/home
mkswap /dev/vg0/swap
 
# 挂载
mount /dev/vg0/root /mnt
mkdir /mnt/{boot,home}
mount /dev/nvme0n1p1 /mnt/boot
mount /dev/vg0/home /mnt/home
swapon /dev/vg0/swap
 
# 注意:使用 LVM 需要在 mkinitcpio.conf 的 HOOKS 中添加 lvm2
# HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block lvm2 filesystems fsck)

方案 4: LUKS 加密方案

全盘加密保护数据安全。

# 分区结构
# /dev/nvme0n1p1 512M EFI System(不加密)
# /dev/nvme0n1p2 剩余 Linux filesystem(LUKS 加密)
 
# 格式化 EFI
mkfs.fat -F 32 /dev/nvme0n1p1
 
# 创建 LUKS 加密容器
cryptsetup luksFormat /dev/nvme0n1p2
# 确认 YES
# 输入加密密码(牢记!)
 
# 打开加密容器
cryptsetup open /dev/nvme0n1p2 cryptroot
# 输入密码
 
# 现在 /dev/mapper/cryptroot 就是解密后的设备
# 可以在上面创建文件系统或 LVM
 
# 方案 A: 直接在加密设备上创建 ext4
mkfs.ext4 /dev/mapper/cryptroot
mount /dev/mapper/cryptroot /mnt
 
# 方案 B: 加密 + LVM
pvcreate /dev/mapper/cryptroot
vgcreate vg0 /dev/mapper/cryptroot
lvcreate -L 50G vg0 -n root
lvcreate -L 8G vg0 -n swap
lvcreate -l 100%FREE vg0 -n home
mkfs.ext4 /dev/vg0/root
mkfs.ext4 /dev/vg0/home
mkswap /dev/vg0/swap
mount /dev/vg0/root /mnt
mkdir /mnt/{boot,home}
mount /dev/vg0/home /mnt/home
mount /dev/nvme0n1p1 /mnt/boot
swapon /dev/vg0/swap
 
# 方案 C: 加密 + Btrfs
mkfs.btrfs /dev/mapper/cryptroot
mount /dev/mapper/cryptroot /mnt
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
umount /mnt
mount -o noatime,compress=zstd:3,subvol=@ /dev/mapper/cryptroot /mnt
mkdir -p /mnt/{boot,home}
mount -o noatime,compress=zstd:3,subvol=@home /dev/mapper/cryptroot /mnt/home
mount /dev/nvme0n1p1 /mnt/boot
 
# mkinitcpio HOOKS 需要添加 encrypt(lvm2 如果用了 LVM)
# HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt filesystems fsck)
 
# 内核参数需要指定加密设备
# cryptdevice=UUID=<LUKS分区UUID>:cryptroot root=/dev/mapper/cryptroot
# 或使用 LVM: cryptdevice=UUID=<LUKS分区UUID>:cryptroot root=/dev/vg0/root

20.6 格式化与挂载总结

# 格式化命令速查
mkfs.fat -F 32 /dev/nvme0n1p1 # FAT32 (EFI)
mkfs.ext4 /dev/nvme0n1p2 # ext4
mkfs.btrfs -f /dev/nvme0n1p2 # Btrfs
mkfs.xfs /dev/nvme0n1p2 # XFS
mkswap /dev/nvme0n1p3 # Swap
 
# 挂载顺序很重要!先挂载根分区,再挂载子目录
mount /dev/nvme0n1p2 /mnt
mkdir -p /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
 
# 启用 swap
swapon /dev/nvme0n1p3
 
# 验证所有挂载
lsblk
findmnt -R /mnt

文件系统详解

选择合适的文件系统对系统性能、数据安全和功能支持至关重要。

特性ext4BtrfsXFSF2FS
类型日志文件系统Copy-on-Write日志文件系统日志文件系统
最大文件大小16 TiB16 TiB8 TiB16 TiB
最大卷大小1 EiB16 EiB8 EiB16 EiB
快照不支持支持不支持不支持
压缩不支持支持(zstd/lzo/zlib)不支持不支持
子卷不支持支持不支持不支持
校验和仅元数据元数据+数据仅元数据仅元数据
在线碎片整理支持支持支持支持
在线扩容支持支持支持支持
在线缩容支持不支持不支持不支持
TRIM 支持支持支持支持支持
加密支持支持支持支持
RAID支持内置不支持不支持
数据恢复较好较好较好较好
资源占用
适用场景通用/桌面高级功能/快照大文件/数据库闪存设备

格式化命令

# ext4(通用推荐)
mkfs.ext4 /dev/nvme0n1p2
 
# Btrfs(高级功能推荐)
mkfs.btrfs -f /dev/nvme0n1p2
 
# XFS(大文件推荐)
mkfs.xfs /dev/nvme0n1p2
 
# F2FS(闪存设备推荐)
mkfs.f2fs /dev/nvme0n1p2
 
# FAT32(EFI 分区必需)
mkfs.fat -F 32 /dev/nvme0n1p1
 
# Swap
mkswap /dev/nvme0n1p3

挂载选项对比

# ext4 默认挂载
mount -o defaults /dev/nvme0n1p2 /mnt
 
# ext4 优化挂载(SSD)
mount -o noatime,discard /dev/nvme0n1p2 /mnt
 
# Btrfs 推荐挂载
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@ /dev/nvme0n1p2 /mnt
 
# XFS 默认挂载
mount -o defaults /dev/nvme0n1p2 /mnt
 
# F2FS 推荐挂载(闪存)
mount -o noatime,discard /dev/nvme0n1p2 /mnt

文件系统选择指南

你的使用场景?
├── 通用桌面使用
│   ├── 简单稳定 → ext4(推荐)
│   └── 需要快照/压缩 → Btrfs
├── 服务器/数据库
│   ├── 大文件存储 → XFS
│   └── 通用 → ext4
├── 闪存设备(SD卡/U盘)
│   └── F2FS(针对闪存优化)
└── 高级功能需求
    ├── 快照/子卷 → Btrfs
    └── 压缩 → Btrfs

Btrfs 子卷方案详解

# 创建 Btrfs 文件系统
mkfs.btrfs -f /dev/nvme0n1p2
 
# 创建子卷
mount /dev/nvme0n1p2 /mnt
btrfs subvolume create /mnt/@          # 根子卷
btrfs subvolume create /mnt/@home      # 家目录
btrfs subvolume create /mnt/@log       # 日志
btrfs subvolume create /mnt/@pkg       # 包缓存
btrfs subvolume create /mnt/@snapshots # 快照
umount /mnt
 
# 挂载子卷
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@ /dev/nvme0n1p2 /mnt
mkdir -p /mnt/{boot,home,var/log,var/cache/pacman/pkg,.snapshots}
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@home /dev/nvme0n1p2 /mnt/home
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@log /dev/nvme0n1p2 /mnt/var/log
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@pkg /dev/nvme0n1p2 /mnt/var/cache/pacman/pkg
mount -o noatime,compress=zstd:3,space_cache=v2,subvol=@snapshots /dev/nvme0n1p2 /mnt/.snapshots

20.7 镜像源配置

使用 reflector 自动选择最快镜像

# reflector 已预装在安装环境中
reflector --country China --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
 
# 或手动选择镜像源
vim /etc/pacman.d/mirrorlist

推荐的中国镜像

# /etc/pacman.d/mirrorlist
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch
Server = https://mirrors.zju.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.hit.edu.cn/archlinux/$repo/os/$arch
# 刷新密钥(如果遇到签名问题)
pacman-key --init
pacman-key --populate archlinux

镜像源选择策略

选择合适的镜像源对下载速度和系统稳定性至关重要。

中国镜像源列表

镜像源地址提供者特点
清华 TUNAmirrors.tuna.tsinghua.edu.cn清华大学更新快,速度快,推荐
中科大 USTCmirrors.ustc.edu.cn中国科学技术大学稳定,带宽充足
阿里云mirrors.aliyun.com阿里云CDN 加速,全国覆盖
浙江大学mirrors.zju.edu.cn浙江大学稳定,更新及时
哈尔滨工业大学mirrors.hit.edu.cn哈尔滨工业大学稳定,北方用户推荐
上海交通大学mirrors.sjtug.sjtu.edu.cn上海交通大学稳定,南方用户推荐
中国科学院mirrors.opencas.org.cn中国科学院稳定,更新及时
北京理工大学mirrors.bit.edu.cn北京理工大学稳定,北方用户推荐

选择建议

# 1. 使用 reflector 自动选择最快镜像(推荐)
reflector --country China --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
 
# 2. 手动选择镜像源
# 编辑 /etc/pacman.d/mirrorlist
vim /etc/pacman.d/mirrorlist
 
# 3. 保留前 3-5 个最快镜像
# 删除不需要的镜像行,只保留最快的几个

测试镜像速度

# 测试单个镜像速度
curl -o /dev/null -w "Speed: %{speed_download} bytes/sec\n" https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso
 
# 使用 speedtest-cli 测试
sudo pacman -S python-speedtest-cli
speedtest-cli --simple
 
# 测试多个镜像
for mirror in tuna ustc aliyun zju hit; do
    echo "Testing $mirror..."
    curl -o /dev/null -s -w "%{speed_download}" "https://mirrors.$mirror.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso"
    echo " bytes/sec"
done

镜像源配置文件

# /etc/pacman.d/mirrorlist
# 镜像源按优先级排列(从上到下)
# pacman 会优先使用列表中的第一个镜像
 
# 中国镜像(推荐)
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch
 
# 全球镜像(备用)
Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch
Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch

更新镜像源

# 使用 reflector 更新
sudo reflector --country China --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
 
# 使用 pacman-mirrors(如果安装了)
sudo pacman-mirrors --fasttrack
 
# 刷新包数据库
sudo pacman -Syy

常见问题

# 问题1: 镜像同步延迟
# 解决:使用多个镜像,或等待同步完成
 
# 问题2: 下载速度慢
# 解决:测试并选择最快的镜像
 
# 问题3: 签名验证失败
# 解决:更新密钥环
sudo pacman -S archlinux-keyring
sudo pacman-key --init
sudo pacman-key --populate archlinux

20.8 pacstrap 安装基础系统

# 基础安装
pacstrap -K /mnt base linux linux-firmware
 
# 推荐同时安装的基础包
pacstrap -K /mnt base linux linux-firmware \
 base-devel \ # 编译工具(gcc, make 等)
 vim \ # 文本编辑器
 networkmanager \ # 网络管理
 intel-ucode \ # Intel CPU 微码(或 amd-ucode)
 btrfs-progs \ # Btrfs 工具(如果用 Btrfs)
 lvm2 \ # LVM 工具(如果用 LVM)
 git \ # 版本控制
 sudo \ # sudo
 zsh \ # Zsh shell
 man-db man-pages # 手册页
 
# LTS 内核(可选,更稳定)
pacstrap -K /mnt linux-lts linux-lts-headers
 
# 如果网络慢,只安装最基础的包后再慢慢补充
pacstrap -K /mnt base linux linux-firmware vim sudo networkmanager

内核选择详解

Arch Linux 提供多种内核,适用于不同使用场景。选择合适的内核对系统性能和稳定性至关重要。

特性linux(稳定版)linux-lts(长期支持)linux-zenlinux-hardenedlinux-rt(实时)
目标用户桌面用户、通用场景服务器、生产环境桌面用户、游戏玩家安全敏感环境实时系统、音频制作
更新频率每2-3个月发布新版本仅维护安全补丁和关键错误随稳定版更新随稳定版更新随主线更新
补丁集少量官方补丁少量官方补丁大量性能优化补丁安全加固补丁实时抢占补丁
调度器默认 CFS 调度器默认 CFS 调度器优化的调度器配置默认 CFS 调度器实时调度器
稳定性较好最佳较好较好较好
性能标准标准优化桌面交互性能标准实时响应优化
兼容性最佳较好较好可能不兼容某些包一般
维护周期当前主线版本多年长期维护随主线更新随主线更新随主线更新

安装命令

# 稳定版(默认推荐)
pacman -S linux linux-headers
 
# 长期支持版(服务器推荐)
pacman -S linux-lts linux-lts-headers
 
# Zen 版(桌面/游戏推荐)
pacman -S linux-zen linux-zen-headers
 
# 加固版(安全敏感环境)
pacman -S linux-hardened linux-hardened-headers
 
# 实时版(音频制作/实时系统)
pacman -S linux-rt linux-rt-headers

多内核共存

# 可以同时安装多个内核
pacman -S linux linux-lts linux-zen
 
# 安装后更新引导配置
# GRUB:
grub-mkconfig -o /boot/grub/grub.cfg
 
# systemd-boot:
# 需要为每个内核创建单独的 entry 文件

内核选择指南

你的使用场景?
├── 桌面日常使用
│   ├── 追求最新功能 → linux(稳定版)
│   └── 追求游戏性能 → linux-zen
├── 服务器/生产环境
│   ├── 需要长期稳定 → linux-lts
│   └── 需要最新硬件支持 → linux
├── 安全敏感环境
│   └── 需要安全加固 → linux-hardened
└── 实时系统
    └── 音频制作/实时控制 → linux-rt

20.9 生成 fstab

# 生成 fstab(使用 UUID 标识设备)
genfstab -U /mnt >> /mnt/etc/fstab
 
# 检查生成的 fstab
cat /mnt/etc/fstab
 
# 确认内容正确,特别注意:
# - 所有分区都正确列出
# - UUID 正确
# - 挂载选项合理
# - Btrfs 子卷路径正确
# - swap 条目正确
 
# 如果需要修改
vim /mnt/etc/fstab

20.10 chroot 配置

# 进入新系统
arch-chroot /mnt

时区设置

# 设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
# 生成 /etc/adjtime
hwclock --systohc

本地化(语言)

# 编辑 locale.gen,取消注释需要的语言
vim /etc/locale.gen
# 取消注释以下行:
# en_US.UTF-8 UTF-8
# zh_CN.UTF-8 UTF-8
 
# 生成 locale
locale-gen
 
# 设置默认语言(建议系统语言设为英文,终端中文乱码少)
echo "LANG=en_US.UTF-8" > /etc/locale.conf
 
# 如果需要中文系统(桌面环境安装后再改也行)
# echo "LANG=zh_CN.UTF-8" > /etc/locale.conf

主机名

echo "myarch" > /etc/hostname

hosts 文件

vim /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 myarch.localdomain myarch

网络配置

# 启用 NetworkManager(重启后自动生效)
systemctl enable NetworkManager
 
# 如果使用 systemd-networkd + systemd-resolved(更轻量)
# systemctl enable systemd-networkd
# systemctl enable systemd-resolved

网络管理工具详解

特性NetworkManagersystemd-networkdiwddhcpcdConnMan
目标用户桌面用户服务器/嵌入式无线设备通用DHCP嵌入式设备
资源占用较高
有线网络完整支持完整支持不支持支持完整支持
无线网络完整支持需配合wpa_supplicant原生支持需配合wpa_supplicant完整支持
DHCP客户端内置/可配置内置内置独立内置
DNS管理systemd-resolved/resolv.confsystemd-resolvedsystemd-resolved/resolv.confresolv.conf内置/resolv.conf
配置复杂度中等简单简单简单中等
图形界面有(nm-applet)有(iwgtk)有(dhcpcd-ui)有(connman-gtk)
命令行工具nmcli, nmtuinetworkctliwctldhcpcdconnmanctl
自动连接支持支持支持不支持支持
漫游支持支持不支持支持不支持支持

NetworkManager(推荐桌面用户)

# 安装
pacman -S networkmanager wpa_supplicant
 
# 启用
systemctl enable --now NetworkManager
 
# 连接 Wi-Fi
nmcli device wifi connect "SSID" password "PASSWORD"
 
# 查看状态
nmcli general status
nmcli device status
 
# TUI 界面
nmtui

systemd-networkd(推荐服务器)

# 安装(已包含在 systemd 中)
 
# 配置有线网络
cat > /etc/systemd/network/20-wired.network << 'EOF'
[Match]
Name=en*
 
[Network]
DHCP=yes
 
[DHCPv4]
UseDNS=yes
EOF
 
# 启用
systemctl enable --now systemd-networkd systemd-resolved
 
# 查看状态
networkctl status

iwd(专注无线)

# 安装
pacman -S iwd
 
# 启用
systemctl enable --now iwd
 
# 连接 Wi-Fi
iwctl station wlan0 connect "SSID"
 
# 查看状态
iwctl device list
iwctl station wlan0 show

dhcpcd(简单 DHCP)

# 安装
pacman -S dhcpcd
 
# 启用
systemctl enable --now dhcpcd
 
# 手动启动
dhcpcd eth0

选择建议

  • 桌面用户 → NetworkManager(功能全面,图形界面友好)
  • 服务器 → systemd-networkd(轻量级,与 systemd 集成)
  • 仅无线 → iwd(专注无线,性能优秀)
  • 简单需求 → dhcpcd(简单,专注于 DHCP)

设置 root 密码

passwd
# 输入并确认 root 密码

创建普通用户

# 创建用户并加入 wheel 组
useradd -m -G wheel -s /bin/zsh username
# -m: 创建家目录
# -G wheel: 加入 wheel 组(用于 sudo)
# -s /bin/zsh: 默认 shell(也可以用 /bin/bash)
 
# 设置用户密码
passwd username
 
# 配置 sudo
EDITOR=vim visudo
# 取消注释这一行:
# %wheel ALL=(ALL:ALL) ALL
 
# 或允许无密码 sudo(不推荐用于日常使用)
# %wheel ALL=(ALL:ALL) NOPASSWD: ALL

安装引导程序

GRUB for UEFI

pacman -S grub efibootmgr
 
# 安装 GRUB
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
 
# 如果是双系统,安装 os-prober
pacman -S os-prober ntfs-3g
# 编辑 /etc/default/grub
# GRUB_DISABLE_OS_PROBER=false
 
# 生成 GRUB 配置
grub-mkconfig -o /boot/grub/grub.cfg

GRUB for BIOS

pacman -S grub
 
# 安装 GRUB 到 MBR
grub-install --target=i386-pc /dev/sda
# 注意:是磁盘设备(/dev/sda),不是分区(/dev/sda1)
 
# 生成 GRUB 配置
grub-mkconfig -o /boot/grub/grub.cfg

systemd-boot (UEFI only)

# systemd-boot 无需额外安装包(systemd 自带)
bootctl install
 
# 创建启动条目
vim /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=UUID=<你的根分区UUID> rw quiet loglevel=3
# 获取根分区 UUID
blkid -s UUID -o value /dev/nvme0n1p2
 
# 如果使用 LUKS 加密
# options cryptdevice=UUID=<LUKS分区UUID>:cryptroot root=/dev/mapper/cryptroot rw quiet
 
# 配置 loader.conf
vim /boot/loader/loader.conf
default arch.conf
timeout 3
console-mode max
editor no
# 如果有 LTS 内核,创建额外条目
vim /boot/loader/entries/arch-lts.conf
title Arch Linux (LTS)
linux /vmlinuz-linux-lts
initrd /intel-ucode.img
initrd /initramfs-linux-lts.img
options root=UUID=<你的根分区UUID> rw quiet loglevel=3

systemd-boot 完整配置指南

systemd-boot 是 systemd 提供的 UEFI 引导程序,配置简单,启动快速。

检查是否已安装 systemd-boot

# 检查 systemd-boot 是否已安装
bootctl is-installed
# 返回 0 表示已安装,返回非 0 表示未安装
 
# 查看 systemd-boot 状态
bootctl
# 或
bootctl status
 
# 列出所有启动条目
bootctl list

安装 systemd-boot

# 安装到 ESP(默认 /boot)
bootctl install
 
# 如果 ESP 挂载到 /efi,XBOOTLDR 挂载到 /boot
bootctl --esp-path=/efi --boot-path=/boot install
 
# 验证安装
bootctl is-installed

目录结构

ESP/
├── loader/
│   ├── loader.conf          # 主配置文件
│   └── entries/
│       ├── arch.conf        # Arch Linux 启动条目
│       ├── arch-lts.conf    # Arch Linux LTS 条目
│       └── windows.conf     # Windows 条目(可选)
├── EFI/
│   ├── systemd/
│   │   └── systemd-bootx64.efi
│   ├── Linux/               # 统一内核镜像目录(UKI)
│   └── BOOT/
│       └── BOOTX64.EFI      # 默认引导程序
└── vmlinuz-linux            # 内核镜像(如果 ESP 包含 /boot)

loader.conf 主配置详解

# /boot/loader/loader.conf
# 默认启动条目(支持通配符)
default  arch.conf
 
# 菜单显示时间(秒)
timeout  3
 
# 控制台分辨率
# auto → 自动检测
# max → 最大分辨率
# 0 → 80x25 文本模式
console-mode auto
 
# 启用/禁用编辑器
# yes → 允许在启动时编辑内核参数
# no → 禁止编辑(更安全)
editor   no
 
# 自动检测其他引导程序(如 Windows)
auto-entries yes
 
# 自动检测固件选项(如 UEFI 固件设置)
auto-firmware yes
 
# 安全启动密钥注册
# manual → 手动注册
# auto → 自动注册
secure-boot-enroll manual

启动条目配置详解

# /boot/loader/entries/arch.conf
# 标题(显示在启动菜单中)
title   Arch Linux
 
# 版本信息(可选,显示在标题下方)
version 6.1.0-arch1-1
 
# 机器ID(可选,用于区分相同标题的不同条目)
machine-id 1234567890abcdef1234567890abcdef
 
# Linux 内核路径(相对于 ESP 根目录)
linux   /vmlinuz-linux
 
# 初始化内存盘路径(可以有多个 initrd 行)
# 微码必须在 initramfs 之前
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
 
# 内核命令行参数
options root=PARTUUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw quiet
 
# 或使用 UUID
# options root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw quiet
 
# 或使用设备名(不推荐)
# options root=/dev/nvme0n1p2 rw quiet

常用内核参数

# 基本参数
root=UUID=<UUID>     # 根分区标识
rw                   # 读写挂载
quiet                # 减少启动信息
loglevel=3           # 日志级别(0-7)
 
# 显示相关
nomodeset            # 禁用内核模式设置(显卡问题时使用)
vga=normal           # VGA 文本模式
 
# 加密相关
cryptdevice=UUID=<UUID>:cryptroot  # LUKS 加密
root=/dev/mapper/cryptroot         # 解密后的根分区
 
# LVM 相关
root=/dev/vg0/root   # LVM 逻辑卷
 
# 调试
debug                # 启用调试输出
systemd.log_level=debug  # systemd 调试

检查和管理 systemd-boot

# 查看当前状态
bootctl
 
# 设置默认启动条目
bootctl set-default arch.conf
 
# 设置菜单超时时间
bootctl set-timeout 5
 
# 清除 EFI 变量覆盖(恢复默认)
bootctl set-default ""
bootctl set-timeout ""
 
# 更新 systemd-boot(新版本安装后)
bootctl update
 
# 查看 EFI 变量
efivar --list | grep Loader
 
# 查看启动时间分析
systemd-analyze
 
# 查看启动顺序
systemd-analyze blame

自动配置工具

# 使用 kernel-install 自动生成配置(如果已安装)
kernel-install add /boot/vmlinuz-linux
 
# 手动创建条目文件
cat > /boot/loader/entries/arch.conf << 'EOF'
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=UUID=$(blkid -s UUID -o value /dev/nvme0n1p2) rw quiet
EOF

多内核配置示例

# 稳定版内核
cat > /boot/loader/entries/arch.conf << 'EOF'
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=UUID=$(blkid -s UUID -o value /dev/nvme0n1p2) rw quiet
EOF
 
# LTS 内核
cat > /boot/loader/entries/arch-lts.conf << 'EOF'
title Arch Linux (LTS)
linux /vmlinuz-linux-lts
initrd /intel-ucode.img
initrd /initramfs-linux-lts.img
options root=UUID=$(blkid -s UUID -o value /dev/nvme0n1p2) rw quiet
EOF
 
# Zen 内核
cat > /boot/loader/entries/arch-zen.conf << 'EOF'
title Arch Linux (Zen)
linux /vmlinuz-linux-zen
initrd /intel-ucode.img
initrd /initramfs-linux-zen.img
options root=UUID=$(blkid -s UUID -o value /dev/nvme0n1p2) rw quiet
EOF
 
# 设置默认启动 LTS 内核
bootctl set-default arch-lts.conf

自动更新 systemd-boot

# 创建 pacman hook 自动更新 systemd-boot
mkdir -p /etc/pacman.d/hooks
cat > /etc/pacman.d/hooks/systemd-boot.hook << 'EOF'
[Trigger]
Type = Package
Operation = Upgrade
Package = systemd
 
[Action]
Description = 更新 systemd-boot...
When = PostTransaction
Exec = /usr/bin/bootctl update
EOF

常见问题排查

# 问题1: bootctl 报错 "could not find ESP"
# 检查 ESP 是否正确挂载
mount | grep /boot
# 确保 ESP 挂载到 /boot 或 /efi
 
# 问题2: 启动后没有菜单
# 检查 loader.conf 中的 timeout 设置
cat /boot/loader/loader.conf
# 确保 timeout > 0
 
# 问题3: 内核参数错误导致无法启动
# 在启动菜单按 e 编辑内核参数
# 修正 root=UUID 或其他参数
# 按 Ctrl+X 启动
 
# 问题4: 检查 ESP 中的文件
ls -la /boot/loader/
ls -la /boot/loader/entries/

mkinitcpio 配置

# 编辑配置(通常默认就好,特殊场景才需修改)
vim /etc/mkinitcpio.conf
 
# Btrfs 根分区
# MODULES=(btrfs)
 
# LVM
# HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block lvm2 filesystems fsck)
 
# LUKS 加密
# HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt filesystems fsck)
 
# LUKS + LVM
# HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt lvm2 filesystems fsck)
 
# NVIDIA 早期加载
# MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
 
# 生成 initramfs
mkinitcpio -P

微码安装

# Intel CPU
pacman -S intel-ucode
 
# AMD CPU
pacman -S amd-ucode
 
# 如果使用 GRUB,重新生成配置会自动包含微码
grub-mkconfig -o /boot/grub/grub.cfg
 
# 如果使用 systemd-boot,在 entries 文件中添加 initrd 行
# initrd /intel-ucode.img (在 initramfs 之前)
# initrd /amd-ucode.img

退出 chroot 并重启

# 退出 chroot
exit
 
# 卸载所有分区
umount -R /mnt
 
# 如果有 swap
swapoff -a
 
# 重启
reboot
 
# 记得拔掉安装 U 盘!

20.11 安装后首次启动配置

重启后用刚才创建的用户登录。

连接网络

# NetworkManager 已启用
# 有线网络通常自动连接
 
# 无线网络
nmcli device wifi list
nmcli device wifi connect "SSID" password "密码"
 
# 或使用 TUI
nmtui

桌面环境选择与安装

GNOME

sudo pacman -S gnome gnome-extra
sudo systemctl enable gdm

KDE Plasma

sudo pacman -S plasma kde-applications
sudo systemctl enable sddm

XFCE

sudo pacman -S xfce4 xfce4-goodies
sudo pacman -S lightdm lightdm-gtk-greeter
sudo systemctl enable lightdm

Hyprland (Wayland 平铺式)

sudo pacman -S hyprland waybar wofi foot
# Hyprland 通常不需要显示管理器,从 TTY 启动
# 在 ~/.bash_profile 或 ~/.zprofile 中添加:
# if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" -eq 1 ]; then
# exec Hyprland
# fi

i3 (X11 平铺式)

sudo pacman -S i3-wm i3status i3lock dmenu alacritty
sudo pacman -S xorg-server xorg-xinit
# 在 ~/.xinitrc 中添加: exec i3
# 从 TTY 启动: startx

完整桌面环境(DE)列表

桌面环境是图形化用户界面的完整套件,包含窗口管理器、面板、文件管理器、系统设置等。

桌面环境工具包安装命令推荐显示管理器X11/Wayland特点
GNOMEGTKpacman -S gnome gnome-extraGDMX11 + Wayland现代简洁,扩展丰富,移动端友好
KDE PlasmaQtpacman -S plasma plasma-metaSDDMX11 + Wayland高度可定制,功能丰富,视觉华丽
XfceGTKpacman -S xfce4 xfce4-goodiesLightDMX11(实验性Wayland)轻量稳定,适合旧硬件
CinnamonGTKpacman -S cinnamonLightDMX11(实验性Wayland)传统布局,类似 Windows
MATEGTKpacman -S mate mate-extraLightDMX11(有限Wayland)GNOME 2 延续,经典界面
LXQtQtpacman -S lxqtSDDMX11(Wayland发展中)超轻量 Qt 桌面
BudgieGTKpacman -S budgie-desktopLightDMX11(Wayland发展中)现代优雅界面
PantheonGTKpacman -S pantheonGreeterX11 + Waylandelementary OS 桌面,设计精美
Deepin DEQtpacman -S deepin deepin-extraLightDMX11(Wayland开发中)中国开发,视觉精美
EnlightenmentEFLpacman -S enlightenmentEntranceX11 + Wayland极致可定制,独特风格
COSMICRustpacman -S cosmic-session (AUR)COSMIC GreeterWaylandSystem76 新一代桌面

完整窗口管理器(WM)列表

窗口管理器只负责窗口管理,不包含面板、文件管理器等,需要自行搭配。

X11 窗口管理器

窗口管理器类型安装命令配置方式特点
i3平铺pacman -S i3-wm纯文本手动平铺,键盘驱动,入门友好
bspwm平铺pacman -S bspwmShell 脚本二叉树平铺,高度可定制
dwm动态yay -S dwm (AUR)修改 C 源码suckless 项目,极简主义
awesome动态pacman -S awesomeLua 脚本框架式 WM,内置状态栏
xmonad动态pacman -S xmonadHaskell高度可编程,动态平铺
openbox堆叠pacman -S openboxXML 配置高度可配置,经典 *box
fluxbox堆叠pacman -S fluxbox文本配置轻量,源自 Blackbox
herbstluftwm平铺pacman -S herbstluftwm脚本手动平铺,运行时配置
Qtile动态pacman -S qtilePython同时支持 X11 和 Wayland
openbox堆叠pacman -S openboxXML轻量,高度可定制
IceWM堆叠pacman -S icewm文本配置速度优先,简单易用
JWM堆叠pacman -S jwmXML 配置极轻量,嵌入式适用
FVWM堆叠pacman -S fvwm3自定义脚本高度可配置
Window Maker堆叠pacman -S windowmaker内置配置仿 NEXTSTEP 外观
Compiz合成yay -S compiz (AUR)XML/CCPOpenGL 合成效果

Wayland 合成器

合成器类型安装命令配置方式特点
Sway平铺pacman -S sway纯文本(i3兼容)i3 的 Wayland 替代品
Hyprland动态平铺pacman -S hyprlandHyprland.conf动画圆角模糊,视觉华丽
niri平铺pacman -S niriTOML滚动式平铺,无限水平桌面
River动态平铺pacman -S riverriverctl 命令非单体架构
dwl平铺yay -S dwl (AUR)C 源码dwm 的 Wayland 版
Wayfire堆叠yay -S wayfire (AUR)INI 配置类 Compiz 视觉效果
labwc堆叠pacman -S labwcOpenbox 兼容Openbox 的 Wayland 替代品
Gamescope堆叠pacman -S gamescope命令行参数游戏专用合成器
Weston堆叠pacman -S weston配置文件参考实现,开发测试用
Nwg-shell堆叠pacman -S nwg-shell图形配置预配置的 sway 生态系统

显示管理器

DM桌面环境安装
GDMGNOMEpacman -S gdm
SDDMKDEpacman -S sddm
LightDM通用pacman -S lightdm lightdm-gtk-greeter
ly终端风格pacman -S ly
# 启用显示管理器
sudo systemctl enable gdm # 选择一个
# sudo systemctl enable sddm
# sudo systemctl enable lightdm

X11 vs Wayland 完整对比

X11 和 Wayland 是 Linux 下两种不同的显示服务器协议,决定了图形环境的工作方式。

特性X11 (X.Org)Wayland
发布年份1984/19872008 开发,2012 1.0
架构多程序链:X Server + WM + Compositor 分离单一合成器 (Compositor) 统一处理
渲染方式RAM 多次拷贝零拷贝 GPU
安全模型开放信任 — 任何应用可访问所有输入和屏幕隔离设计 — 应用只能看到自己的窗口
屏幕撕裂常见已消除 — 合成器控制帧交付
HiDPI/分数缩放不一致 — 需要逐应用配置按显示器 — 缩放内置于协议
多显示器 HDR有限 — 事后修补的支持完整支持 — 从头设计
SSH 远程显示原生支持 (X 转发开箱即用)需要外部工具 (XWayland, RDP)
GUI 自动化工具丰富的生态系统 (xdotool, wmctrl)有限 — 协议限制跨应用访问
旧应用支持完整原生支持通过 XWayland 兼容桥
NVIDIA 驱动支持稳定 — 长期建立良好 — 驱动系列 495+
电池效率较高开销较低开销 — GPU 缓冲区重用
开发状态2024 年起仅维护模式积极开发中
启动方式startx 或 DM 启动 Xorg合成器自身即为显示服务器
输入延迟较高较低

DE/WM 对 X11 和 Wayland 的支持情况

DE/WMX11 支持Wayland 支持备注
GNOMEYesYes (主推)从 GNOME 42+ 起 Wayland 为默认
KDE PlasmaYesYes (主推)Plasma 6+ 默认 Wayland
XfceYes (主)实验性Xfwm 尚未完全 Wayland 就绪
CinnamonYes (主)开发中Mutter 分支
MATEYes (主)有限主要依赖 X11
LXQtYes (主)开发中推荐 SDDM
i3YesNo使用 XCB/Xlib
SwayNoYesi3 的 Wayland 替代品
HyprlandNoYes动态平铺 Wayland 合成器
bspwmYesNo
dwmYesNo仅 X11
awesomeYesNo仅 X11
xmonadYesNo仅 X11
openboxYesNo
QtileYesYes同时支持两者
niriNoYes滚动式平铺 Wayland
RiverNoYes非单体架构
dwlNoYesdwm 的 Wayland 版

选择建议

  • 新系统/新硬件 → Wayland(GNOME/KDE 默认)
  • 需要 X11 兼容性 → X11(旧应用、特定工具)
  • 平铺窗口管理器 → Sway(Wayland)或 i3(X11)
  • 游戏 → Wayland(减少撕裂,更低延迟)
  • 远程桌面 → X11(原生支持)或 Wayland + RDP

声音系统

# PipeWire(推荐,现代音频系统)
sudo pacman -S pipewire pipewire-alsa pipewire-pulse pipewire-jack wireplumber
 
# PulseAudio(传统方案)
# sudo pacman -S pulseaudio pulseaudio-alsa pavucontrol
 
# 音量控制
sudo pacman -S pavucontrol # 图形化音量控制

字体与中文输入法

# 基础字体
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji ttf-liberation
 
# 更多中文字体
sudo pacman -S wqy-microhei wqy-zenhei adobe-source-han-sans-cn-fonts
 
# 等宽字体(编程用)
sudo pacman -S ttf-jetbrains-mono ttf-fira-code
 
# --- 中文输入法 ---
 
# 方案 A: Fcitx5(推荐)
sudo pacman -S fcitx5 fcitx5-chinese-addons fcitx5-gtk fcitx5-qt fcitx5-configtool
 
# 配置环境变量
# 在 /etc/environment 中添加:
# GTK_IM_MODULE=fcitx
# QT_IM_MODULE=fcitx
# XMODIFIERS=@im=fcitx
# SDL_IM_MODULE=fcitx
# GLFW_IM_MODULE=ibus
 
# 方案 B: IBus
# sudo pacman -S ibus ibus-libpinyin

TTY 配置与图形环境区别

TTY(Teletypewriter)是 Linux 的文本终端界面,图形环境则是基于 X11 或 Wayland 的图形化桌面。

TTY 与图形环境的区别

特性TTY(文本终端)图形环境(X11/Wayland)
界面纯文本图形化窗口
资源占用极低较高
启动方式系统启动后自动可用需要启动显示服务器
输入设备仅键盘键盘、鼠标、触摸屏等
多任务单一终端(可用 tmux 多路复用)多窗口并行
适用场景服务器、远程管理、系统维护桌面使用、开发、多媒体
网络需求无需网络(本地操作)通常需要(远程访问需额外配置)
故障恢复更容易可能需要 TTY 恢复

TTY 切换

# 切换到不同 TTY
# Ctrl+Alt+F1 → TTY1
# Ctrl+Alt+F2 → TTY2
# ...
# Ctrl+Alt+F6 → TTY6
# Ctrl+Alt+F7 → 图形环境(通常)
 
# 查看当前 TTY
tty
 
# 在图形环境中打开终端模拟器
# 这与 TTY 不同,是在图形环境中的窗口

TTY 字体配置

# 安装控制台字体
sudo pacman -S terminus-font
 
# 设置控制台字体
sudo setup-terminus-font
 
# 或手动设置
sudo pacman -S kbd
# 编辑 /etc/vconsole.conf
FONT=ter-132n
FONT_MAP=defkeymap
 
# 常用字体
# ter-132n → Terminus 16x32
# ter-128n → Terminus 14x28
# ter-122b → Terminus 12x24 粗体
# Lat2-Terminus16 → Lat2 Terminus 16
 
# 查看可用字体
ls /usr/share/kbd/consolefonts/

TTY 颜色配置

# 使用 setvtrgb 设置颜色
# 创建颜色配置文件
cat > /etc/vtrgb << 'EOF'
# 前景色 背景色
0,0,0,0
170,0,0,1
0,170,0,2
170,85,0,3
0,0,170,4
170,0,170,5
0,170,170,6
170,170,170,7
85,85,85,8
255,85,85,9
85,255,85,10
255,255,85,11
85,85,255,12
255,85,255,13
85,255,255,14
255,255,255,15
EOF
 
# 应用颜色
sudo setvtrgb /etc/vtrgb

TTY 启动图形环境

# 方法1: 使用 startx(X11)
# 安装 xorg-xinit
sudo pacman -S xorg-xinit
 
# 创建 ~/.xinitrc
cat > ~/.xinitrc << 'EOF'
# 启动桌面环境
exec startplasma-x11  # KDE
# exec gnome-session   # GNOME
# exec startxfce4      # XFCE
# exec i3              # i3
# exec Hyprland        # Hyprland
EOF
 
# 从 TTY 启动
startx
 
# 方法2: 使用显示管理器(推荐)
# 安装 SDDM、GDM 或 LightDM
sudo pacman -S sddm
sudo systemctl enable sddm
 
# 方法3: 使用 wayland 启动器
# 对于 Wayland 合成器
# 在 ~/.bash_profile 或 ~/.zprofile 中添加自动启动
cat >> ~/.bash_profile << 'EOF'
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" -eq 1 ]; then
    exec Hyprland
    # 或 exec sway
fi
EOF

TTY 远程访问

# 启用 SSH
sudo pacman -S openssh
sudo systemctl enable --now sshd
 
# 从远程机器连接
ssh username@ip-address
 
# 查看当前登录用户
who
 
# 查看登录历史
last

TTY 美化

# 安装 neofetch 在 TTY 中显示系统信息
sudo pacman -S neofetch
 
# 运行
neofetch
 
# 安装 screenfetch(替代品)
sudo pacman -S screenfetch
 
# 使用 tmux 多路复用
sudo pacman -S tmux
tmux  # 启动
# Ctrl+B, D → 分离会话
# tmux attach → 重新连接

显卡驱动

# Intel 核显
sudo pacman -S mesa intel-media-driver
# 如果是旧的 Intel GPU:
# sudo pacman -S mesa xf86-video-intel
 
# AMD 显卡
sudo pacman -S mesa xf86-video-amdgpu vulkan-radeon
 
# NVIDIA(专有驱动)
sudo pacman -S nvidia nvidia-utils nvidia-settings
# LTS 内核用: nvidia-lts
# 需要在 mkinitcpio.conf 的 MODULES 中添加:
# MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
# 内核参数添加: nvidia-drm.modeset=1
# 重新生成 initramfs: sudo mkinitcpio -P
 
# NVIDIA(开源 nouveau 驱动,性能较差)
sudo pacman -S mesa xf86-video-nouveau
 
# 虚拟机显卡
sudo pacman -S mesa xf86-video-vmware # VMware
# VirtualBox 和 QEMU 通常自动使用 virtio/modesetting

AUR 助手安装

# 安装 paru(推荐)
git clone https://aur.archlinux.org/paru.git /tmp/paru
cd /tmp/paru
makepkg -si
 
# 或安装 yay
git clone https://aur.archlinux.org/yay.git /tmp/yay
cd /tmp/yay
makepkg -si
 
# 使用
paru -S google-chrome
paru -S visual-studio-code-bin

20.12 常见安装错误与解决方案

问题 1: 找不到启动设备 / 无法引导

# 原因: 引导程序未正确安装
# 解决: 从 LiveUSB 启动,重新安装引导程序
 
mount /dev/nvme0n1p2 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
 
# UEFI + GRUB
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
 
# UEFI + systemd-boot
bootctl install
# 检查 /boot/loader/entries/ 下的配置文件
 
# 检查 EFI 启动条目
efibootmgr -v

问题 2: kernel panic - not syncing: VFS: Unable to mount root fs

# 原因: 内核找不到根分区
# 可能原因:
# 1. 内核参数中的 root=UUID 错误
# 2. initramfs 缺少文件系统驱动或磁盘驱动
# 3. LUKS 加密但未添加 encrypt hook
 
# 解决:
# 1. 检查 /boot/loader/entries/arch.conf 或 /etc/default/grub 中的 UUID
blkid # 确认正确的 UUID
 
# 2. 检查 mkinitcpio.conf
# 确保 HOOKS 中包含必要的钩子
# 确保 MODULES 中包含存储驱动(如 nvme、ext4、btrfs)
mkinitcpio -P

问题 3: 重启后没有网络

# 原因: NetworkManager 未启用
# 解决(从 chroot 或 rescue 模式):
systemctl enable NetworkManager
systemctl start NetworkManager
 
# 或临时使用 dhcpcd
dhcpcd

问题 4: GRUB 报错 “error: unknown filesystem”

# 原因: GRUB 无法识别分区的文件系统
# 常见于 Btrfs 或特殊配置
 
# 解决:
# 1. 确保安装了 grub 的最新版本
pacman -S grub
# 2. 重新安装 GRUB
grub-install ...
grub-mkconfig -o /boot/grub/grub.cfg

问题 5: 图形界面黑屏/闪烁

# 原因: 显卡驱动问题
# 临时解决: 在 GRUB 中添加 nomodeset 参数
 
# 按 'e' 编辑 GRUB 条目
# 在 linux 行末尾添加 nomodeset
# Ctrl+X 启动
 
# 进入系统后正确安装显卡驱动

问题 6: 时间不正确(双系统)

# Windows 使用本地时间,Linux 默认使用 UTC
# 解决方案 A: 让 Linux 使用本地时间
timedatectl set-local-rtc 1
 
# 解决方案 B: 让 Windows 使用 UTC(推荐)
# 在 Windows 注册表中修改:
# HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
# 添加 DWORD: RealTimeIsUniversal = 1

问题 7: pacstrap 报签名错误

# 更新安装环境中的密钥
pacman-key --init
pacman-key --populate archlinux
 
# 或更新 archlinux-keyring 包
pacman -Sy archlinux-keyring
 
# 如果时间不正确也会导致签名验证失败
timedatectl set-ntp true

问题 8: fstab 错误导致无法启动

# 系统可能进入 emergency 模式
# 提示: "Give root password for maintenance"
 
# 输入 root 密码后
mount -o remount,rw / # 重新以读写方式挂载
vim /etc/fstab # 修复错误
reboot

20.13 虚拟机安装注意事项

VirtualBox

# 虚拟机设置建议:
# - 类型: Linux, Arch Linux (64-bit)
# - 内存: 至少 2GB
# - 硬盘: VDI, 动态分配, 至少 20GB
# - 启用 EFI: 设置 → 系统 → 勾选 "启用 EFI"
# - 显存: 128MB
# - 网络: NAT 或桥接
 
# 安装完成后安装增强功能
sudo pacman -S virtualbox-guest-utils
sudo systemctl enable vboxservice
 
# 启用共享文件夹自动挂载
sudo usermod -aG vboxsf username

VMware (Workstation / Player)

# 虚拟机设置建议:
# - 固件: UEFI
# - 内存: 至少 2GB
# - 硬盘: 至少 20GB
# - 网络: NAT
 
# 安装 VMware Tools(开源版)
sudo pacman -S open-vm-tools xf86-video-vmware
sudo systemctl enable vmtoolsd
sudo systemctl enable vmware-vmblock-fuse
 
# 启用拖放和剪贴板共享
# VMware 菜单 → 虚拟机 → 设置 → 选项 → 客户机隔离 → 启用

QEMU/KVM (virt-manager)

# 这是性能最好的 Linux 虚拟化方案
 
# 宿主机安装 QEMU/KVM
sudo pacman -S qemu-full virt-manager libvirt dnsmasq
sudo systemctl enable libvirtd
sudo usermod -aG libvirt username
 
# 创建虚拟机建议:
# - 固件: OVMF (UEFI)
# - CPU: host-passthrough(获得最佳性能)
# - 磁盘总线: VirtIO
# - 网络: VirtIO
# - 显卡: VirtIO 或 QXL
 
# 虚拟机内部(Arch 安装完成后)
sudo pacman -S qemu-guest-agent spice-vdagent
sudo systemctl enable qemu-guest-agent
# spice-vdagent 提供自动分辨率调整和剪贴板共享
 
# VirtIO 设备的内核模块通常已包含在默认 initramfs 中
# 如果根分区在 VirtIO 磁盘上,确保 mkinitcpio 中有:
# MODULES=(virtio virtio_blk virtio_pci virtio_net)

通用虚拟机建议

# 所有虚拟机通用的优化:
 
# 1. 使用 VirtIO 驱动(如果可用)获得最佳 I/O 性能
 
# 2. 安装后禁用不需要的服务节省资源
sudo systemctl disable bluetooth
sudo systemctl mask lvm2-monitor
 
# 3. 如果不需要图形界面
sudo systemctl set-default multi-user.target
 
# 4. 减少 initramfs 大小(autodetect hook 会自动处理)
mkinitcpio -P
 
# 5. 如果磁盘是 SSD/精简配置,启用 TRIM
sudo systemctl enable fstrim.timer

20.14 安装完成后的建议操作

# 1. 完整系统更新
sudo pacman -Syu
 
# 2. 安装常用工具
sudo pacman -S \
 htop btop \ # 系统监控
 neofetch fastfetch \ # 系统信息展示
 wget curl \ # 下载工具
 unzip p7zip \ # 压缩工具
 tree \ # 目录树
 ripgrep fd \ # 现代化搜索
 bat \ # 更好的 cat
 eza \ # 更好的 ls
 tmux \ # 终端复用
 openssh \ # SSH
 reflector # 镜像排序
 
# 3. 启用定时任务
sudo systemctl enable fstrim.timer # SSD TRIM
sudo systemctl enable reflector.timer # 定期更新镜像列表
sudo systemctl enable paccache.timer # 定期清理包缓存
 
# 4. 配置防火墙
sudo pacman -S firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
 
# 5. 配置 Snapper 快照(Btrfs 用户)
sudo pacman -S snapper snap-pac
sudo snapper -c root create-config /
sudo systemctl enable snapper-timeline.timer
sudo systemctl enable snapper-cleanup.timer
 
# 6. 安装 AUR 助手后从 AUR 安装更多软件
paru -S google-chrome
paru -S wechat-universal-bwrap

20.15 快速安装清单

以下是最常见场景(UEFI + ext4 + GRUB)的精简步骤:

# === 安装环境 ===
iwctl # 连接 WiFi(如果需要)
timedatectl set-ntp true # 同步时间
 
# === 分区 ===
cfdisk /dev/nvme0n1 # GPT → 512M EFI + 剩余 Linux
 
# === 格式化 ===
mkfs.fat -F 32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2
 
# === 挂载 ===
mount /dev/nvme0n1p2 /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
 
# === 安装 ===
reflector --country China --sort rate --save /etc/pacman.d/mirrorlist
pacstrap -K /mnt base linux linux-firmware base-devel vim networkmanager grub efibootmgr intel-ucode sudo
 
# === 配置 ===
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
echo "myarch" > /etc/hostname
passwd # root 密码
useradd -m -G wheel -s /bin/bash user && passwd user
EDITOR=vim visudo # 取消 %wheel 注释
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
systemctl enable NetworkManager
exit
 
# === 重启 ===
umount -R /mnt
reboot