返回博客

Arch Linux 官方安装与完善指南

更新于 2026-07-2443 分钟 · 8916
延
Arch Linux 官方安装与完善指南

我结合自己直接阅读 Archlinux Wiki 的习惯和一些软件的使用习惯让 gpt-5.6 老师给我写了这一篇文档。我看了下总地来说没有什么问题,就是 GPT 老师太喜欢用 nano 了,然而我是一个 vim/neovim 的忠实簇拥,所以我把它们全部改成了 neovim。我最近正在研究一些其他的桌面解决方案,比如 Hyprland、Niri 以及 Quickshell,如果有成果了我也会手写几篇文档丢上来的(拖延中...)。当然我后续可能还会写一些美化方案,我自己用得非常舒服,包括 oh-my-zsh, AstroVim/LazyVim 等,以及我最喜欢的 Catppuccin 配色在个各方面的使用。

就这样,希望你读得愉快!

本文面向 x86-64 实机与虚拟机,以 ArchWiki Installation guide 为主轴,补充网络、NTP、引导器、微码、桌面环境、图形、音频、安全、维护与救援等实操环节。

这是对官方资料的中文整理,不替代实时 ArchWiki。Arch Linux 是滚动发行版;执行前请再次核对软件包、命令参数和最佳实践。

分区、格式化、加密、引导器安装和 dd 可能立即破坏数据。文中的 /dev/nvme0n1/dev/sda、分区号、UUID、用户名、主机名和时区均为示例,必须替换为本机实际值;不要整页复制命令后直接执行。

UEFI + GPT + ext4 + systemd-boot + NetworkManager + systemd-timesyncd + PipeWire + GNOME/KDE Plasma 二选一

GRUB、传统 BIOS、Btrfs、LUKS、systemd-networkd、dhcpcd、Xorg 和无桌面服务器均在正文提供分支说明。

1. 先理解 Arch 的安装边界#

Arch 官方安装指南的目标是建立一个可以启动的最小基础系统。它不会替你决定桌面环境、显示管理器、网络管理器、音频栈、输入法、字体、防火墙或备份方案。

因此,“安装完成”至少有三个层级:

  1. 最小系统完成:可以启动到 TTY,以 root 或普通用户登录。
  2. 可用系统完成:网络、时间同步、sudo、图形、音频、字体和输入设备可用。
  3. 可维护系统完成:理解完整升级、官方新闻、.pacnew、服务、日志、备份与救援。

Arch 的核心不是“命令越少越好”,而是你知道每个组件由谁提供、由哪个服务启动、配置文件放在哪里,以及出问题时从哪里查。

1.1 本文中的命令提示符#

  • $ command:普通用户执行,不输入 $
  • # command:root 执行,不输入 #
  • <PLACEHOLDER>:必须替换。
  • /dev/nvme0n1p1/dev/sda1:只是示例。
  • enp3s0wlan0:网卡名称示例。
  • Asia/Shanghai:时区示例;在日本可改为 Asia/Tokyo

1.2 不要混用的组件#

以下组件通常是“同类二选一或多选一”,不是装得越多越好:

功能常见选择原则
网络管理NetworkManager / systemd-networkd / dhcpcd同一接口只交给一个管理器
显示管理器GDM / SDDM / LightDM通常只启用一个
引导器systemd-boot / GRUB / rEFInd 等根据固件与磁盘布局选择
音频服务器PipeWire / PulseAudio新桌面通常选择 PipeWire
输入法框架Fcitx 5 / IBus通常只使用一个
电源管理power-profiles-daemon / TLP先检查桌面集成与冲突
防火墙前端firewalld / ufw / 直接 nftables选择一个管理入口

2. 安装前决策表#

安装前把下面内容写下来。纸质存档时可直接填写。

2.1 机器与固件#

  • 机器型号:____________________________
  • CPU:Intel / AMD
  • GPU:Intel / AMD / NVIDIA / 混合显卡
  • 内存:________ GiB
  • 固件启动模式:UEFI / BIOS
  • Secure Boot:启用 / 已禁用 / 计划安装后配置
  • 是否双系统:否 / Windows / 其他 Linux
  • 目标磁盘:____________________________
  • 已完成离线备份:是 / 否

2.2 系统方案#

  • 根文件系统:ext4 / Btrfs / XFS / 其他
  • 是否全盘加密:否 / LUKS
  • Swap:无 / 分区 / 文件 / zram
  • 休眠到磁盘:需要 / 不需要
  • 引导器:systemd-boot / GRUB / 其他
  • 网络管理:NetworkManager / systemd-networkd / dhcpcd
  • 桌面环境:GNOME / KDE Plasma / Xfce / 无
  • 显示管理器:GDM / SDDM / LightDM / 无
  • 音频:PipeWire
  • 输入法:Fcitx 5 / IBus / 无

2.3 重要设计关系#

UEFI 与 ESP#

UEFI 机器需要 EFI System Partition(ESP),文件系统通常为 FAT32。已有 Windows 的机器通常已经存在 ESP。复用现有 ESP 时不要格式化它。

systemd-boot 与挂载点#

systemd-boot 只能从 ESP 或 XBOOTLDR 读取启动文件。最容易理解的主线是将 ESP 挂载到 /boot,让内核、initramfs 和 loader 文件都位于 ESP。

GRUB 与挂载点#

GRUB 更灵活。常见布局是:

  • 根文件系统中的 /boot
  • ESP 挂载到 /efi/boot/efi

加密与休眠#

LUKS、Btrfs、LVM、休眠和 Secure Boot 会共同影响 initramfs、内核参数和引导器配置。不要先按普通方案安装完,再临时拼接几个参数。需要这些功能时,先阅读对应官方页面并按一套完整方案实施。


3. 获取并验证安装镜像#

官方入口:

下载:

  • ISO 镜像
  • 对应的 PGP 签名 .sig
  • 可选:校验和文件

3.1 使用 GnuPG 验证#

在 ISO 与签名所在目录:

bash
gpg --keyserver-options auto-key-retrieve \
  --verify archlinux-<VERSION>-x86_64.iso.sig \
           archlinux-<VERSION>-x86_64.iso

已有 Arch 系统时可使用:

bash
pacman-key -v archlinux-<VERSION>-x86_64.iso.sig

验证的意义不是“文件能否解压”,而是确认镜像由受信任的 Arch 发布密钥签名且内容未被修改。

3.2 校验 SHA256#

bash
sha256sum archlinux-<VERSION>-x86_64.iso

把输出与下载页公布的值逐字符比较。

签名文件与镜像如果来自同一个被劫持的非官方站点,单纯“二者匹配”不等于可信。下载入口、发布密钥指纹和签名链都应来自可信的 Arch 官方渠道。


4. 制作安装介质并启动#

官方参考:

4.1 Linux 下使用 dd#

先识别 U 盘整盘设备:

bash
lsblk -o NAME,SIZE,MODEL,TRAN,MOUNTPOINTS

卸载其分区,然后写入整盘,不是某个分区:

bash
sudo dd bs=4M \
  if=archlinux-<VERSION>-x86_64.iso \
  of=/dev/sdX \
  conv=fsync \
  status=progress

完成后:

bash
sync

of=/dev/sdX 写错会覆盖其他磁盘。不要写成你猜测的盘符;每次都用 lsblk 核对型号和容量。

4.2 Windows 与 macOS#

按 ArchWiki 的 USB 安装介质页面选择官方列出的工具或原始镜像写入方式。不要把 ISO 当普通文件复制到空 U 盘后期待它自动可启动。

4.3 固件设置#

  • 现代机器优先用 UEFI 模式启动。
  • 如果要按 UEFI 安装,不要从兼容模式或 CSM 启动安装介质。
  • 官方安装镜像本身通常不能直接在 Secure Boot 开启状态下启动;安装阶段可能需要先关闭 Secure Boot。
  • SATA 模式通常使用 AHCI。已经安装 Windows 的机器不要随意切换,否则 Windows 可能无法启动。
  • 关闭主板的 Fast Boot 有时有助于识别 USB 和进入固件菜单。
  • Windows 双系统应区分 Windows 的“快速启动/混合关机”和主板 Fast Boot;前者可能让 NTFS 保持休眠状态。

5. Live 环境基础设置#

启动后一般直接进入 root shell。

5.1 确认启动模式#

bash
cat /sys/firmware/efi/fw_platform_size

常见输出:

  • 64:64 位 UEFI
  • 32:32 位 UEFI
  • 文件不存在:可能以 BIOS/CSM 模式启动

也可检查:

bash
ls /sys/firmware/efi/efivars

如果计划安装 UEFI 引导器但这里不存在,应重启并从 UEFI 项进入安装介质。

5.2 键盘布局#

列出键盘映射:

bash
localectl list-keymaps

加载示例:

bash
loadkeys us

中文用户通常仍使用美式键盘布局;输入中文由图形环境中的输入法框架负责。

5.3 控制台字体#

列出字体:

bash
ls /usr/share/kbd/consolefonts

加载较大字体示例:

bash
setfont ter-132n

控制台字体与桌面字体是两套系统。这里的设置不会自动变成 GNOME 或 KDE 的字体。

5.4 检查硬件#

bash
lspci -k
lsusb
lsblk -f
ip link
rfkill

检查内核日志中的错误:

bash
dmesg -T | less

6. 联网、DHCP、DNS 与 NTP#

官方参考:

6.1 先理解四个层次#

联网成功至少包含:

  1. 链路可用:网卡已启用,网线或 Wi-Fi 已关联。
  2. 地址配置:通过 DHCP 或静态配置获得 IP、网关。
  3. 路由可用:默认路由指向正确网关。
  4. 名称解析可用:DNS 可以把域名解析为 IP。

所以“能 ping 网关但不能 ping 域名”通常是 DNS,不一定是网卡或 DHCP。

6.2 有线网络#

Arch ISO 通常可以自动通过 DHCP 配置有线网络。检查:

bash
ip addr
ip route

测试 IP 连通性:

bash
ping -c 3 1.1.1.1

测试 DNS:

bash
ping -c 3 archlinux.org

查看解析状态:

bash
resolvectl status

6.3 Wi-Fi:iwctl#

查看设备:

bash
iwctl device list

进入交互式界面:

bash
iwctl

iwctl 中:

text
device list
station <DEVICE> scan
station <DEVICE> get-networks
station <DEVICE> connect <SSID>
exit

也可直接执行:

bash
iwctl --passphrase '<PASSWORD>' station <DEVICE> connect '<SSID>'

公共网络若有网页登录认证,连接 Wi-Fi 后仍可能不能访问互联网,需要浏览器完成 portal 登录。

6.4 射频开关#

bash
rfkill list
rfkill unblock wifi

硬件飞行模式开关处于关闭状态时,软件解锁可能无效。

6.5 检查 DHCP 结果#

bash
ip -brief address
ip route

典型默认路由形态:

text
default via 192.168.1.1 dev wlan0

DHCP 一般提供:

  • IPv4/IPv6 地址
  • 前缀或子网掩码
  • 默认网关
  • DNS 服务器
  • 租约时间
  • 可选的搜索域、NTP 等信息

6.6 时间同步#

检查:

bash
timedatectl

启用网络时间同步:

bash
timedatectl set-ntp true

再次检查:

bash
timedatectl status
timedatectl timesync-status

正确时间对 TLS、软件包签名和日志排序非常重要。时间严重错误时,HTTPS 和密钥验证可能出现看似“网络故障”的错误。


7. 识别磁盘与设计分区#

官方参考:

7.1 识别设备#

bash
lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,FSVER,LABEL,UUID,MOUNTPOINTS,MODEL
fdisk -l

常见名称:

  • SATA/SAS/USB:/dev/sda
  • NVMe:/dev/nvme0n1
  • NVMe 分区:/dev/nvme0n1p1
  • SATA 分区:/dev/sda1
  • eMMC:/dev/mmcblk0

不要仅凭 sda/sdb 顺序判断。拔插设备、固件和内核枚举顺序都可能改变。

7.2 推荐分区工具#

  • fdisk:命令式,适合 GPT/MBR。
  • cfdisk:终端菜单,更直观。
  • parted:脚本化与高级用途。
  • gdisk:GPT 专用工具之一。

启动示例:

bash
fdisk /dev/nvme0n1

7.3 UEFI 单系统示例#

分区大小示例类型文件系统挂载点
ESP1–2 GiBEFI SystemFAT32/boot
Root剩余空间Linux filesystemext4/
Swap可选Linux swapswap无目录挂载

说明:

  • ESP 的具体大小取决于是否存放多个内核、fallback initramfs、UKI 和其他系统的 EFI 文件。
  • 1–2 GiB 是便于长期维护的实践值,不是所有机器的唯一标准。
  • 若使用现有 Windows ESP,应先确认剩余空间,不要格式化。
  • 不一定需要单独 /home。单独分区方便重装,但也会带来固定容量分配问题。

7.4 Windows 双系统示例#

保留:

  • Microsoft Reserved Partition
  • Windows 分区
  • Windows Recovery 分区
  • 已有 ESP

在 Windows 中先:

  1. 关闭快速启动。
  2. 用 Windows 磁盘管理压缩 Windows 分区。
  3. 留出未分配空间。
  4. 完整关机。

在 Arch Live 中只在未分配空间创建 Linux 分区。复用 ESP 时:

bash
# 只挂载,不执行 mkfs.fat
mount /dev/<EXISTING_ESP> /mnt/boot

7.5 BIOS + GPT#

传统 BIOS 在 GPT 磁盘上使用 GRUB 时通常需要一个很小的 BIOS boot partition,并设置对应分区类型。该分区不格式化、不挂载,只给 GRUB 嵌入核心映像。

7.6 文件系统选择#

ext4#

适合希望简单、成熟、维护路径清晰的系统。本文主线使用 ext4。

Btrfs#

提供子卷、校验、压缩、发送/接收与快照能力,但需要理解:

  • 子卷布局
  • 挂载选项
  • 快照边界
  • 引导器与回滚
  • Swap 文件限制
  • 多设备与 RAID 模式的具体支持状态

参考:Btrfs

XFS#

适合特定大文件与服务器负载,但不能像 ext4 那样在线缩小。安装前先确认未来容量调整需求。

7.7 加密#

完整系统加密不要只执行一句 cryptsetup luksFormat 就继续普通教程。需要同时设计:

  • ESP 是否未加密
  • 根分区、Swap、休眠映像
  • LVM 或 Btrfs 的位置
  • mkinitcpio hooks
  • 内核参数
  • 密钥文件与 TPM
  • Secure Boot 与 UKI

官方入口:


8. 创建文件系统、Swap 与挂载#

下列格式化命令会清除目标分区。先运行 lsblk -f,逐项核对设备、容量和现有文件系统。

假设:

  • ESP:/dev/nvme0n1p1
  • Root:/dev/nvme0n1p2
  • Swap:/dev/nvme0n1p3

8.1 格式化 ESP#

仅适用于新建 ESP:

bash
mkfs.fat -F 32 /dev/nvme0n1p1

复用 Windows ESP 时不要执行。

8.2 格式化根分区#

bash
mkfs.ext4 /dev/nvme0n1p2

可设置标签:

bash
e2label /dev/nvme0n1p2 ArchRoot

8.3 创建 Swap 分区#

bash
mkswap /dev/nvme0n1p3
swapon /dev/nvme0n1p3

确认:

bash
swapon --show
free -h

8.4 挂载#

挂载根:

bash
mount /dev/nvme0n1p2 /mnt

创建并挂载 ESP 到 /boot

bash
mount --mkdir /dev/nvme0n1p1 /mnt/boot

检查:

bash
findmnt /mnt
lsblk -f

8.5 单独 home 分区#

bash
mount --mkdir /dev/<HOME_PARTITION> /mnt/home

8.6 Btrfs 提醒#

若使用 Btrfs 子卷,应先创建子卷,再用规划好的挂载选项把所有子卷挂到 /mnt 下。genfstab 只记录当前真实挂载结构;挂错后生成的 fstab 也会跟着错。


9. 镜像源与 pacman 基础#

官方参考:

查看当前镜像:

bash
sed -n '1,80p' /etc/pacman.d/mirrorlist

9.1 使用 reflector#

示例:筛选近期同步、支持 HTTPS 的镜像并按速率排序:

bash
reflector \
  --latest 20 \
  --protocol https \
  --sort rate \
  --save /etc/pacman.d/mirrorlist

按国家或地区筛选示例:

bash
reflector \
  --country Japan,Singapore \
  --age 24 \
  --protocol https \
  --sort rate \
  --save /etc/pacman.d/mirrorlist

注意:

  • 地理距离不等于实际速度。
  • 只追求测速最快,可能选到同步状态不佳的镜像。
  • 镜像列表顺序很重要,pacman 通常优先尝试前面的服务器。
  • 校园网、运营商与跨境网络会显著影响结果。

9.2 安装阶段的更新原则#

Arch 不支持部分升级。正常维护使用:

bash
pacman -Syu

不要把以下命令当日常安装方式:

bash
pacman -Sy <PACKAGE>

它只刷新数据库后安装少数包,可能让本地系统处于“新数据库 + 旧依赖”的不一致状态。


10. 安装基础系统#

官方安装指南当前主线命令:

bash
pacstrap -K /mnt base linux linux-firmware

含义:

  • -K:在目标系统初始化独立 pacman keyring。
  • base:基础用户空间。
  • linux:标准内核,可换成其他官方内核。
  • linux-firmware:常见硬件固件。

10.1 实用的桌面安装包集合#

bash
pacstrap -K /mnt \
  base \
  linux \
  linux-firmware \
  base-devel \
  sudo \
  networkmanager \
  neovim \
  man-db \
  man-pages \
  texinfo

根据 CPU 加入微码包:

Intel:

bash
pacstrap -K /mnt intel-ucode

AMD:

bash
pacstrap -K /mnt amd-ucode

也可以在一条命令中安装。

10.2 可选内核#

  • linux:标准内核
  • linux-lts:长期支持内核
  • linux-zen:面向桌面交互与特定调度偏好的内核
  • linux-hardened:安全加固取向

安装多个内核时,应确保引导器中每个内核都有可启动项,并保留对应 initramfs。

10.3 额外文件系统工具#

按实际文件系统安装:

bash
pacstrap -K /mnt dosfstools e2fsprogs

Btrfs:

bash
pacstrap -K /mnt btrfs-progs

XFS:

bash
pacstrap -K /mnt xfsprogs

NTFS 数据盘:

bash
pacstrap -K /mnt ntfs-3g

10.4 虚拟机#

虚拟机是否需要 linux-firmware、微码、Guest Tools,取决于虚拟化平台。微码由物理宿主机更新,虚拟机通常不负责更新宿主 CPU 微码。


11. 生成并检查 fstab#

生成:

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

查看:

bash
cat /mnt/etc/fstab

-U 使用 UUID,通常比 /dev/sda1 这类易变化名称稳定。

11.1 必须检查#

  • 根分区是否挂到 /
  • ESP 是否挂到规划的 /boot/efi/boot/efi
  • 单独 /home 是否存在
  • Swap 是否存在
  • 是否意外生成重复项
  • Btrfs 子卷与挂载选项是否正确
  • FAT ESP 的权限选项是否符合需求

可用:

bash
findmnt --verify --tab-file /mnt/etc/fstab

不要反复执行 genfstab ... >> 而不清空文件,否则会重复追加。


12. 进入新系统并完成基础配置#

bash
arch-chroot /mnt

从这里开始,/ 指向新系统。

12.1 时区#

列出时区:

bash
timedatectl list-timezones

设置示例:

中国大陆:

bash
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

日本:

bash
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

生成硬件时钟基准:

bash
hwclock --systohc

Linux 通常推荐硬件时钟使用 UTC。双系统时应让各系统对 RTC 的解释保持一致。

12.2 Locale#

编辑:

bash
nvim /etc/locale.gen

至少取消注释:

text
en_US.UTF-8 UTF-8

需要简体中文环境时可同时启用:

text
zh_CN.UTF-8 UTF-8

需要日文环境时:

text
ja_JP.UTF-8 UTF-8

生成:

bash
locale-gen

系统默认语言建议先设为英文,出错信息更容易检索:

bash
echo 'LANG=en_US.UTF-8' > /etc/locale.conf

需要中文桌面可改为:

bash
echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf

检查:

bash
cat /etc/locale.conf
locale -a

12.3 控制台键盘#

bash
echo 'KEYMAP=us' > /etc/vconsole.conf

如需保存控制台字体:

text
KEYMAP=us
FONT=ter-132n

12.4 主机名#

bash
echo 'archbox' > /etc/hostname

主机名应简短,避免空格和奇怪符号。

可以按需要配置 /etc/hosts

text
127.0.0.1 localhost
::1       localhost
127.0.1.1 archbox.localdomain archbox

现代 systemd 环境可以通过本地主机名解析机制工作,但明确配置在某些传统程序和离线环境中仍有帮助。


13. 用户、密码与 sudo#

13.1 root 密码#

bash
passwd

13.2 创建普通用户#

bash
useradd -m -G wheel -s /bin/bash <USERNAME>
passwd <USERNAME>

解释:

  • -m:创建家目录。
  • -G wheel:加入 wheel 附加组。
  • -s /bin/bash:登录 shell。

检查:

bash
id <USERNAME>
getent group wheel

13.3 配置 sudo#

安装:

bash
pacman -S sudo

visudo 编辑:

bash
EDITOR=nvim visudo

取消注释:

text
%wheel ALL=(ALL:ALL) ALL

visudo 会检查语法,优于直接编辑 /etc/sudoers

更可维护的方式是在 /etc/sudoers.d/ 创建独立文件:

bash
EDITOR=nvim visudo -f /etc/sudoers.d/10-wheel

内容:

text
%wheel ALL=(ALL:ALL) ALL

权限必须正确:

bash
chmod 440 /etc/sudoers.d/10-wheel

不建议给普通用户配置无条件 NOPASSWD: ALL。它会显著降低“获得用户会话”和“获得 root 权限”之间的隔离。


14. initramfs、内核与微码#

官方参考:

安装内核时通常已经生成 initramfs。检查:

bash
ls -lh /boot

典型文件:

text
vmlinuz-linux
initramfs-linux.img
initramfs-linux-fallback.img
intel-ucode.img 或 amd-ucode.img

手动重新生成全部预设:

bash
mkinitcpio -P

14.1 何时必须重新生成#

修改以下内容后通常需要:

  • /etc/mkinitcpio.conf
  • 加密 hooks
  • LVM、mdadm、特殊存储 hooks
  • 需要早期加载的模块
  • initramfs 中需要包含的文件

14.2 微码#

所有 Intel 或 AMD 实机用户都应按 CPU 安装微码更新:

bash
pacman -S intel-ucode

或:

bash
pacman -S amd-ucode

微码 initrd 在传统引导项中应位于主 initramfs 之前。使用 UKI 时,生成工具会把相应微码打包进统一映像。

检查启动后微码信息:

bash
journalctl -k -b | grep -i microcode

15. 安装引导器#

官方入口:

15.1 systemd-boot:UEFI 主线#

前提:

  • 以 UEFI 模式启动。
  • ESP 已挂载到 /boot
  • /sys/firmware/efi/efivars 可访问。

安装:

bash
bootctl install

查看:

bash
bootctl status

loader.conf#

bash
mkdir -p /boot/loader
nvim /boot/loader/loader.conf

内容示例:

text
default  arch.conf
timeout  3
console-mode keep
editor   no

editor no 可阻止在菜单中临时编辑内核命令行;排错阶段也可保留编辑能力。

获取根分区 UUID#

bash
blkid /dev/nvme0n1p2

或:

bash
ROOT_UUID=$(blkid -s UUID -o value /dev/nvme0n1p2)
echo "$ROOT_UUID"

创建 Arch 启动项#

bash
mkdir -p /boot/loader/entries
nvim /boot/loader/entries/arch.conf

Intel 示例:

text
title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options root=UUID=<ROOT_UUID> rw

AMD 示例:

text
title   Arch Linux
linux   /vmlinuz-linux
initrd  /amd-ucode.img
initrd  /initramfs-linux.img
options root=UUID=<ROOT_UUID> rw

fallback 启动项#

bash
nvim /boot/loader/entries/arch-fallback.conf
text
title   Arch Linux fallback
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux-fallback.img
options root=UUID=<ROOT_UUID> rw

AMD 机器替换微码文件。

检查:

bash
bootctl list

15.2 systemd-boot 更新#

systemd 包升级后可检查:

bash
bootctl update

ArchWiki 还提供自动更新方式。是否需要额外 hook 取决于当前 systemd 与安装布局;按实时 systemd-boot 页面配置。

15.3 GRUB:UEFI#

假设 ESP 挂载到 /efi

bash
pacman -S grub efibootmgr

安装:

bash
grub-install \
  --target=x86_64-efi \
  --efi-directory=/efi \
  --bootloader-id=GRUB

生成配置:

bash
grub-mkconfig -o /boot/grub/grub.cfg

grub-installgrub-mkconfig 是不同步骤。只安装 EFI 文件而不生成配置,或只生成配置而没有正确安装引导器,都可能无法启动。

15.4 GRUB:传统 BIOS#

安装:

bash
pacman -S grub

把 GRUB 安装到整盘设备:

bash
grub-install --target=i386-pc /dev/sdX

不要写成 /dev/sdX1

生成配置:

bash
grub-mkconfig -o /boot/grub/grub.cfg

GPT 磁盘应事先创建 BIOS boot partition。

15.5 Windows 双系统与 GRUB#

安装:

bash
pacman -S os-prober

检查并按 GRUB 官方页面决定是否启用 os-prober:

text
GRUB_DISABLE_OS_PROBER=false

然后:

bash
grub-mkconfig -o /boot/grub/grub.cfg

systemd-boot 在同一 ESP 上通常可以自动发现 Windows Boot Manager。实际表现取决于固件与 ESP 布局。

15.6 UKI#

Unified Kernel Image 把内核、initrd、内核命令行、微码等组合成一个 EFI 可执行文件。它适合:

  • systemd-boot 自动发现
  • Secure Boot 签名
  • 减少分散启动文件
  • TPM 测量与更一致的启动链

但 UKI 会改变传统 loader/entries/*.conf 的配置思路。应完整阅读 UKI、mkinitcpio 和 Secure Boot 页面后统一设计。

15.7 Secure Boot#

不要把 Secure Boot 简化成“给 grubx64.efi 签名”。需要考虑:

  • 固件密钥管理
  • shim 或自有密钥
  • 引导器、UKI、内核模块
  • NVIDIA 等第三方模块
  • 内核升级后的自动签名
  • 密钥备份与恢复

完成普通可启动系统后,再按 ArchWiki Secure Boot 页面构建并验证信任链。


16. 安装后的网络、DHCP 与 DNS#

16.1 桌面主线:NetworkManager#

安装:

bash
pacman -S networkmanager

启用:

bash
systemctl enable NetworkManager.service

NetworkManager 默认可以处理:

  • 有线 DHCP
  • Wi-Fi
  • IPv6
  • DNS 集成
  • VPN 插件
  • 桌面网络图标

启动后查看:

bash
nmcli device
nmcli connection show

连接 Wi-Fi:

bash
nmcli device wifi list
nmcli device wifi connect '<SSID>' password '<PASSWORD>'

16.2 systemd-networkd:服务器或明确配置#

安装基础 systemd 时已包含 networkd。

有线 DHCP 示例:

bash
mkdir -p /etc/systemd/network
nvim /etc/systemd/network/20-wired.network
ini
[Match]
Name=en*

[Network]
DHCP=yes

更精确时直接写实际接口名,例如:

ini
[Match]
Name=enp3s0

[Network]
DHCP=yes

启用:

bash
systemctl enable systemd-networkd.service
systemctl enable systemd-resolved.service

让传统程序使用 systemd-resolved 的 stub:

bash
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

检查:

bash
networkctl
resolvectl status

Wi-Fi 还需要 iwd 或 wpa_supplicant 提供无线关联;networkd 本身不是 Wi-Fi 认证客户端。

16.3 dhcpcd#

安装:

bash
pacman -S dhcpcd

对所有接口启用:

bash
systemctl enable dhcpcd.service

只对指定接口:

bash
systemctl enable [email protected]

不要同时让 NetworkManager 与 dhcpcd 服务接管同一接口。

16.4 静态地址#

静态配置必须明确:

  • IP 与前缀
  • 默认网关
  • DNS
  • IPv6 策略
  • 地址是否与 DHCP 地址池冲突

systemd-networkd 示例:

ini
[Match]
Name=enp3s0

[Network]
Address=192.168.1.50/24
Gateway=192.168.1.1
DNS=192.168.1.1
DNS=1.1.1.1

16.5 DNS 排错#

bash
resolvectl status
cat /etc/resolv.conf
getent hosts archlinux.org
  • 能 ping IP,不能解析域名:优先查 DNS。
  • /etc/resolv.conf 指向不存在目标:修复符号链接或网络管理器配置。
  • 同时启用多个管理器:可能互相覆盖 DNS 与路由。

17. 安装后的时间同步#

systemd-timesyncd 是轻量级 SNTP 客户端。

启用:

bash
systemctl enable systemd-timesyncd.service

系统启动后:

bash
timedatectl set-ntp true

查看:

bash
timedatectl
timedatectl timesync-status
systemctl status systemd-timesyncd

需要完整 NTP 服务器、高精度时钟源或复杂策略时,可研究 chrony、ntpd 等方案,但同一机器不要同时运行多个争用系统时钟的同步守护进程。


18. 首次重启与验收#

在 chroot 中确认:

bash
systemctl is-enabled NetworkManager
bootctl status
passwd -S root
id <USERNAME>

退出:

bash
exit

卸载:

bash
umount -R /mnt

如提示 busy:

bash
findmnt -R /mnt
fuser -vm /mnt

关闭 Swap:

bash
swapoff -a

重启:

bash
reboot

拔掉安装介质。

18.1 首次启动检查#

bash
uname -r
cat /etc/os-release
timedatectl
ip addr
ip route
resolvectl status
systemctl --failed
journalctl -p 3 -b

测试 sudo:

bash
sudo -v
sudo id

更新:

bash
sudo pacman -Syu

如果启动失败,不要立刻重装。先用 Live ISO 挂载并 arch-chroot,检查 fstab、引导器、UUID、initramfs 和日志。


19. 图形驱动、Wayland 与 Xorg#

官方参考:

19.1 图形栈不是只有“显卡驱动”#

典型层次:

  1. 内核 DRM/KMS 驱动
  2. Mesa 或厂商用户空间驱动
  3. OpenGL/Vulkan 实现
  4. Wayland compositor 或 Xorg server
  5. 桌面环境/窗口管理器

19.2 Intel 与 AMD#

常见桌面 3D 用户空间:

bash
sudo pacman -S mesa

Vulkan 按硬件安装对应官方包,例如 Intel 或 AMD 的实现。具体包名与老旧硬件支持范围应在 Vulkan、Intel graphics、AMDGPU 页面核对。

多数现代 Intel/AMD GPU 使用内核自带的模式设置驱动,不需要创建传统 /etc/X11/xorg.conf

19.3 NVIDIA#

NVIDIA 的正确包取决于:

  • GPU 代际
  • 使用的内核
  • 开源或专有内核模块支持状态
  • 混合显卡
  • Wayland
  • Secure Boot
  • 是否需要 32 位库、CUDA 或视频编码

不要按旧教程固定安装一个包名。先运行:

bash
lspci -k | grep -A 3 -E '(VGA|3D)'

然后按实时 NVIDIA 页面选择。

19.4 Wayland#

GNOME 和 KDE Plasma 的现代会话通常优先提供 Wayland。优点包括更现代的显示模型、隔离和高 DPI 支持;实际兼容性取决于 GPU、驱动、屏幕共享、远程桌面和应用。

检查当前会话:

bash
echo "$XDG_SESSION_TYPE"

输出可能为:

text
wayland

或:

text
x11

19.5 Xorg#

只有明确需要 Xorg、轻量窗口管理器或兼容旧程序时再安装:

bash
sudo pacman -S xorg-server xorg-xinit

完整 xorg 组会安装更多工具,不一定全部需要。

19.6 不要先生成 xorg.conf#

自动检测通常足够。只有 ArchWiki 对特定故障明确要求时,才创建局部配置,例如 /etc/X11/xorg.conf.d/20-*.conf


20. 桌面环境与显示管理器#

官方参考:

20.1 GNOME#

安装:

bash
sudo pacman -S gnome

启用 GDM:

bash
sudo systemctl enable gdm.service

GNOME 通常集成:

  • Wayland/Xorg 会话
  • NetworkManager 前端
  • PipeWire 桌面集成
  • power-profiles-daemon
  • xdg-desktop-portal
  • Polkit 认证代理

20.2 KDE Plasma#

安装元包:

bash
sudo pacman -S plasma-meta

按需安装 KDE 应用,或选择应用集合:

bash
sudo pacman -S kde-applications-meta

启用 SDDM:

bash
sudo systemctl enable sddm.service

只需要部分应用时,不必安装整个应用集合。

20.3 Xfce#

bash
sudo pacman -S xfce4 xfce4-goodies
sudo pacman -S lightdm lightdm-gtk-greeter
sudo systemctl enable lightdm.service

检查 LightDM greeter 配置,确保已安装一个 greeter。

20.4 不使用显示管理器#

可以从 TTY 登录后手动启动会话。Xorg 常见方式是 startx~/.xinitrc;Wayland compositor 通常可直接从 TTY 启动。具体按对应桌面或窗口管理器页面配置。

20.5 只启用一个显示管理器#

检查:

bash
systemctl status display-manager.service

切换前:

bash
sudo systemctl disable gdm.service
sudo systemctl enable sddm.service

不要同时启用 GDM、SDDM、LightDM。


21. PipeWire 音频系统#

官方参考:

安装常用组件:

bash
sudo pacman -S \
  pipewire \
  pipewire-audio \
  pipewire-alsa \
  pipewire-pulse \
  wireplumber

JACK 兼容层按需:

bash
sudo pacman -S pipewire-jack

图形音量控制:

bash
sudo pacman -S pavucontrol

检查用户服务:

bash
systemctl --user status pipewire
systemctl --user status pipewire-pulse
systemctl --user status wireplumber

查看节点:

bash
wpctl status

多数情况下 PipeWire 通过用户级 socket/service 自动启动,不需要用 root 启用系统级 pipewire.service

21.1 常见排错#

bash
pactl info
wpctl status
journalctl --user -b -u pipewire -u wireplumber

若安装了 PulseAudio 与 PipeWire 的互斥实现,pacman 会提示替换。不要强行让两个音频服务器同时占用同一接口。


22. 蓝牙#

官方参考:Bluetooth

安装:

bash
sudo pacman -S bluez bluez-utils

启用:

bash
sudo systemctl enable --now bluetooth.service

检查:

bash
rfkill list
systemctl status bluetooth

命令行配对:

bash
bluetoothctl

交互命令:

text
power on
agent on
default-agent
scan on
pair <MAC>
trust <MAC>
connect <MAC>

蓝牙音频还依赖 PipeWire/WirePlumber 的蓝牙支持与对应 codec 包。具体按 PipeWire 和 Bluetooth 页面核对。


23. 字体、中文日文显示与输入法#

官方参考:

23.1 基础字体#

bash
sudo pacman -S \
  noto-fonts \
  noto-fonts-cjk \
  noto-fonts-emoji \
  ttf-liberation

刷新缓存:

bash
fc-cache -fv

检查匹配:

bash
fc-match sans
fc-match monospace
fc-match 'Noto Sans CJK SC'

缺少 CJK 字体时,中文和日文可能显示为方框;缺少 emoji 字体时会出现空白或单色替代。

23.2 Fcitx 5#

安装框架和配置工具:

bash
sudo pacman -S fcitx5-im fcitx5-configtool

中文常用:

bash
sudo pacman -S fcitx5-chinese-addons

日文 Mozc:

bash
sudo pacman -S fcitx5-mozc

Rime:

bash
sudo pacman -S fcitx5-rime

在桌面会话中运行:

bash
fcitx5-configtool

Wayland、XWayland、GTK、Qt 和 Electron 的环境变量要求可能不同。优先按 Fcitx5 官方 ArchWiki 页面及所用桌面的 Wayland 说明配置,不要机械复制多年前的全局 GTK_IM_MODULE=fcitx 教程。

23.3 IBus#

bash
sudo pacman -S ibus

日文:

bash
sudo pacman -S ibus-mozc

Rime:

bash
sudo pacman -S ibus-rime

GNOME 对 IBus 的桌面集成通常更直接。Fcitx 5 与 IBus 二选一,避免两个框架都在会话启动时运行。

23.4 Locale 不等于输入法#

  • Locale 决定界面语言、日期、排序等。
  • 字体决定字符能否显示。
  • 输入法决定如何输入中文、日文。
  • 键盘布局决定按键映射。

它们是四个独立层次。


24. 常用桌面基础组件#

24.1 用户目录#

bash
sudo pacman -S xdg-user-dirs
xdg-user-dirs-update

检查:

bash
cat ~/.config/user-dirs.dirs

24.2 Portal#

Flatpak、文件选择器、屏幕共享与沙盒程序常依赖 xdg-desktop-portal 和桌面对应后端。GNOME、KDE、wlroots compositor 使用的后端不同,不要同时强制多个后端抢占。

24.3 Polkit#

桌面执行需要提权的图形操作时,需要 Polkit 与认证代理。完整 GNOME/KDE 通常会提供。轻量窗口管理器用户需要自行安装并启动一个认证代理。

24.4 基础应用#

按需安装:

bash
sudo pacman -S \
  git \
  openssh \
  curl \
  wget \
  unzip \
  p7zip \
  ripgrep \
  fd \
  less

这不是“基础系统硬依赖”,而是常用工具集合。


25. 笔记本、电源与固件#

官方参考:

25.1 power-profiles-daemon#

GNOME/KDE 常集成:

bash
sudo pacman -S power-profiles-daemon
sudo systemctl enable --now power-profiles-daemon.service

检查:

bash
powerprofilesctl

25.2 TLP#

TLP 提供另一套笔记本电源策略。安装前查阅 TLP 页面,并检查与 power-profiles-daemon、厂商服务和桌面设置的冲突。不要简单同时启用。

25.3 固件更新#

bash
sudo pacman -S fwupd

检查:

bash
fwupdmgr get-devices
fwupdmgr refresh
fwupdmgr get-updates

是否支持取决于硬件厂商是否通过 LVFS 提供固件。

25.4 睡眠与休眠#

Suspend 主要保存在内存;Hibernate 把内存映像写入 Swap。休眠需要:

  • 足够且可恢复的 Swap
  • 正确 resume 配置
  • initramfs hook 或 systemd 方案
  • 正确内核参数
  • 加密 Swap/根时的额外设计

按 Suspend and hibernate 页面完整配置并测试。不要只加一个 resume=UUID= 参数就认定完成。


26. SSD、TRIM、SMART、Swap 与 zram#

26.1 周期性 TRIM#

官方参考:Solid state drive

启用定时 TRIM:

bash
sudo systemctl enable --now fstrim.timer

查看:

bash
systemctl status fstrim.timer
sudo fstrim -av

周期性 TRIM 通常比给所有文件系统盲目添加持续 discard 更保守。具体设备与文件系统支持应核对。

26.2 SMART#

bash
sudo pacman -S smartmontools

查看 SATA 盘:

bash
sudo smartctl -a /dev/sda

查看 NVMe:

bash
sudo smartctl -a /dev/nvme0

是否启用 smartd 取决于监控需求:

bash
sudo systemctl enable --now smartd.service

USB 硬盘盒可能不透传所有 SMART 命令。

26.3 Swap 文件#

ext4 示例:

bash
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

加入 /etc/fstab

text
/swapfile none swap defaults 0 0

Btrfs 的 Swap 文件有额外要求,应按 Btrfs 与 Swap 页面操作。

26.4 zram#

zram 在内存中创建压缩块设备,可作为 Swap。官方常用工具之一是 zram-generator

bash
sudo pacman -S zram-generator

创建:

bash
sudo mkdir -p /etc/systemd
sudo nvim /etc/systemd/zram-generator.conf

示例:

ini
[zram0]
zram-size = ram / 2
compression-algorithm = zstd

应用:

bash
sudo systemctl daemon-reload
sudo systemctl start [email protected]

检查:

bash
zramctl
swapon --show

参数应结合内存容量、工作负载与是否需要休眠决定。


27. 防火墙、SSH 与基础安全#

官方参考:

27.1 firewalld 路线#

bash
sudo pacman -S firewalld
sudo systemctl enable --now firewalld.service

检查:

bash
firewall-cmd --state
firewall-cmd --get-active-zones
firewall-cmd --list-all

桌面公共网络应检查当前 zone,不要默认所有网络都是 trusted。

27.2 nftables 路线#

bash
sudo pacman -S nftables
sudo systemctl enable nftables.service

在启用前写好并检查 /etc/nftables.conf。直接操作 nftables 提供更底层、明确的规则管理,但也更容易因错误规则断网。

27.3 SSH#

安装:

bash
sudo pacman -S openssh

仅在确实需要远程登录时启用:

bash
sudo systemctl enable --now sshd.service

查看监听:

bash
ss -lntup

建议:

  • 优先使用密钥认证。

  • 确认普通用户可登录后,再考虑关闭 root SSH 登录。

  • 修改 SSH 配置后先运行语法检查:

    bash
    sudo sshd -t
  • 保留一个本地终端或现有 SSH 会话,避免把自己锁在门外。

27.4 基础安全原则#

  • 只启用需要的服务。
  • 定期完整升级。
  • 阅读官方新闻。
  • 不运行来源不明的一键脚本。
  • AUR 安装前审查 PKGBUILD 与安装脚本。
  • 重要数据使用离线或异地备份。
  • 磁盘加密保护关机状态的数据,但不能替代备份。
  • Secure Boot 保护启动链,但不能替代系统更新与账户安全。

28. 打印、扫描与局域网发现#

官方参考:

28.1 打印#

bash
sudo pacman -S cups
sudo systemctl enable --now cups.service

图形配置工具:

bash
sudo pacman -S system-config-printer

现代网络打印机常支持 driverless IPP。老型号可能需要厂商 PPD 或专用驱动,优先查看 OpenPrinting 与 ArchWiki 对应页面。

28.2 网络发现#

bash
sudo pacman -S avahi nss-mdns
sudo systemctl enable --now avahi-daemon.service

是否修改 /etc/nsswitch.conf 取决于 nss-mdns 页面当前推荐配置。

28.3 扫描#

bash
sudo pacman -S sane

检测:

bash
scanimage -L

USB 网络复合设备可能需要 ipp-usb。具体按设备和 SANE 页面配置。


29. pacman、镜像与系统维护#

官方参考:

29.1 完整升级#

bash
sudo pacman -Syu

不要长期只升级少数核心包,也不要保持新旧仓库状态混杂。

29.2 更新前阅读官方新闻#

有时升级需要手动干预。先看:

text
https://archlinux.org/news/

尤其在以下情况:

  • 长时间未更新
  • glibc、systemd、pacman、内核、引导器重大变化
  • 仓库结构变化
  • 密钥环故障
  • 文件系统或驱动重大升级

29.3 查询包#

bash
pacman -Ss <KEYWORD>
pacman -Si <PACKAGE>
pacman -Qi <PACKAGE>
pacman -Ql <PACKAGE>
pacman -Qo /path/to/file

查显式安装包:

bash
pacman -Qe

查孤儿依赖:

bash
pacman -Qdt

删除孤儿前逐个确认:

bash
sudo pacman -Rns $(pacman -Qdtq)

如果没有孤儿,命令替换为空可能产生不期望行为。更稳妥是先查看输出,再执行删除。

29.4 包缓存#

查看:

bash
du -sh /var/cache/pacman/pkg

安装 pacman-contrib

bash
sudo pacman -S pacman-contrib

启用定期清理:

bash
sudo systemctl enable --now paccache.timer

保留若干旧版本便于回滚,不建议直接删除全部缓存。

29.5 pacnew 与 pacsave#

升级时 pacman 可能创建:

  • .pacnew:新默认配置未自动覆盖你的配置
  • .pacsave:删除包时保留的旧配置

查找:

bash
sudo find /etc -regextype posix-extended \
  -regex '.+\.pac(new|save)' -print

pacdiff

bash
sudo pacman -S pacman-contrib
sudo pacdiff

不要无脑用 .pacnew 覆盖旧文件;应理解差异后合并。

29.6 systemd 服务与日志#

失败服务:

bash
systemctl --failed

本次启动高优先级错误:

bash
journalctl -p 3 -b

指定服务:

bash
journalctl -b -u NetworkManager

上次启动:

bash
journalctl -b -1

内核日志:

bash
journalctl -k -b

29.7 定期刷新镜像#

安装:

bash
sudo pacman -S reflector

编辑:

bash
sudo nvim /etc/xdg/reflector/reflector.conf

启用定时器:

bash
sudo systemctl enable --now reflector.timer

不要在每次更新前都无条件测速几十个镜像。频繁更换镜像并不一定提升稳定性。


30. AUR 的正确定位#

官方参考:

AUR 不是官方二进制仓库。AUR 提供由用户维护的构建脚本与元数据。使用者负责:

  • 阅读 PKGBUILD
  • 阅读 .install 文件
  • 检查 source URL 与校验
  • 理解构建和安装行为
  • 跟踪上游与维护者变化
  • 处理升级与依赖问题

30.1 手动构建基本流程#

先安装构建工具:

bash
sudo pacman -S --needed base-devel git

以普通用户克隆:

bash
git clone https://aur.archlinux.org/<PACKAGE>.git
cd <PACKAGE>

先审查:

bash
less PKGBUILD
find . -maxdepth 1 -type f -print
git log --oneline --decorate -n 20
git diff HEAD~1

构建安装:

bash
makepkg -si

不要以 root 运行 makepkg

30.2 AUR helper#

AUR helper 只是自动化工具,不会把 AUR 变成受官方支持的仓库,也不会替你完成安全审查。升级时仍需查看 PKGBUILD 和提交差异。

Arch 官方新闻在 2026 年 6 月曾发布 AUR 恶意软件包相关事件提醒,并再次要求用户审查 PKGBUILD 和安装脚本。资料可能过时;实际使用时应查看最新 Arch News 与 AUR 公告。


31. 备份与快照#

官方参考:

31.1 快照不是备份#

位于同一块磁盘上的 Btrfs 快照可以帮助:

  • 回滚误删
  • 比较升级前后
  • 快速恢复配置

但不能抵抗:

  • 整盘损坏
  • 设备丢失
  • 控制器故障
  • 分区表破坏
  • 勒索软件访问同一快照存储
  • 火灾或进水

31.2 至少备份#

  • /home
  • /etc
  • 密钥与密码库
  • SSH/GPG 密钥
  • 浏览器与应用配置
  • 数据库导出
  • 自建服务数据
  • 包列表
  • 引导与磁盘布局记录

保存显式安装包列表:

bash
pacman -Qqe > pkglist.txt

保存 AUR/外部包列表:

bash
pacman -Qqm > foreign-pkglist.txt

记录块设备:

bash
lsblk -f > lsblk.txt
blkid > blkid.txt
sudo sfdisk --dump /dev/nvme0n1 > partition-table.sfdisk

这些记录不能替代数据备份,但救援时非常有用。


32. 常见故障与 Live ISO 救援#

32.1 标准 chroot 救援流程#

从 Arch ISO 启动并联网。

识别:

bash
lsblk -f

挂载根:

bash
mount /dev/<ROOT> /mnt

挂载 ESP:

bash
mount --mkdir /dev/<ESP> /mnt/boot

挂载其他分区:

bash
mount --mkdir /dev/<HOME> /mnt/home

进入:

bash
arch-chroot /mnt

然后按故障执行:

bash
mkinitcpio -P
bootctl status
grub-mkconfig -o /boot/grub/grub.cfg
pacman -Syu

32.2 启动器菜单没有 Arch#

检查:

bash
bootctl status
bootctl list
efibootmgr -v
find /boot -maxdepth 4 -type f -print

重点:

  • ESP 是否真的挂载
  • loader entry 路径是否正确
  • UUID 是否正确
  • 内核与 initramfs 是否存在
  • 是否以 UEFI 模式进入救援环境

32.3 mount: unknown filesystem type#

可能缺少:

  • 文件系统内核模块
  • 用户空间工具
  • LUKS 解锁
  • LVM 激活
  • RAID 组装

检查:

bash
lsblk -f
blkid
dmesg -T | tail -n 100

32.4 进入 emergency mode#

查看:

bash
systemctl --failed
journalctl -xb

常见原因:

  • fstab UUID 错误
  • 不存在的分区被设为必须挂载
  • 网络磁盘无 nofail 或 automount 策略
  • 文件系统损坏
  • initramfs 与根存储方案不匹配

32.5 网络服务已启动但没网#

bash
ip -brief link
ip -brief addr
ip route
resolvectl status
systemctl status NetworkManager
journalctl -b -u NetworkManager

检查是否有多个管理器:

bash
systemctl is-active NetworkManager
systemctl is-active systemd-networkd
systemctl is-active dhcpcd

32.6 图形登录循环#

切到 TTY:

text
Ctrl + Alt + F3

登录后:

bash
systemctl status display-manager
journalctl -b -u display-manager
journalctl -b | grep -iE 'gdm|sddm|lightdm|wayland|xorg|drm|nvidia|amdgpu'

检查:

  • 家目录权限
  • 磁盘是否满
  • 显卡驱动与内核是否匹配
  • 自定义环境变量
  • 损坏的用户会话配置
  • 同时启用多个 display manager

32.7 更新后内核无法启动#

从 fallback 或备用 LTS 内核启动。进入系统后:

bash
sudo pacman -Syu
sudo mkinitcpio -P

检查 /boot 是否在升级时实际挂载。若 /boot 未挂载,内核可能被写入根分区的空目录,而固件仍读取旧 ESP 内容。

bash
findmnt /boot
lsblk -f

这是 Arch 上非常典型且隐蔽的故障。


33. 完整检查清单#

33.1 安装前#

  • 已备份全部重要数据
  • 已验证 ISO 签名
  • 已确认 UEFI 或 BIOS 模式
  • 已记录目标磁盘型号和容量
  • 已决定文件系统
  • 已决定是否加密
  • 已决定 Swap 与休眠
  • 已决定引导器
  • 双系统已关闭 Windows 快速启动
  • 已确认是否复用 ESP

33.2 Live 环境#

  • 键盘可正常输入
  • 网卡未被 rfkill
  • 已获得 IP
  • 默认路由存在
  • DNS 可用
  • NTP 已同步或时间正确
  • lsblk 已核对三次

33.3 分区与安装#

  • 新分区类型正确
  • 没有格式化现有 Windows ESP
  • 根分区挂载到 /mnt
  • ESP 挂载到规划位置
  • Swap 已启用
  • 已安装 CPU 微码
  • 已安装网络管理器
  • fstab 无重复且 UUID 正确

33.4 chroot#

  • 时区正确
  • locale-gen 已执行
  • /etc/locale.conf 存在
  • /etc/vconsole.conf 正确
  • 主机名已设置
  • root 密码已设置
  • 普通用户已创建
  • sudo 已用 visudo 配置
  • initramfs 存在
  • 引导器已安装
  • 引导项 UUID 正确
  • 网络服务已 enable
  • 时间同步服务已 enable

33.5 首次启动#

  • 能进入引导器
  • 能登录普通用户
  • sudo 可用
  • 网络、路由、DNS 正常
  • 时间与时区正确
  • systemctl --failed 无关键失败
  • journalctl -p 3 -b 已检查
  • 完成 pacman -Syu
  • 图形驱动正确
  • 只启用了一个 display manager
  • PipeWire 正常
  • 字体与输入法正常
  • 防火墙策略已确认
  • 已建立备份

34. 官方资料索引#

34.1 安装核心#

34.2 存储#

34.3 启动#

34.4 网络与时间#

34.5 桌面#

34.6 维护与安全#


附录 A:一条可复现的 UEFI 桌面安装命令流#

这是便于核对的摘要命令流,不是无脑复制脚本。它假设:

  • 新建 GPT 分区
  • ESP 为 /dev/nvme0n1p1
  • ext4 根为 /dev/nvme0n1p2
  • Swap 为 /dev/nvme0n1p3
  • Intel CPU
  • ESP 挂载 /boot
  • systemd-boot
  • NetworkManager

分区创建本身故意不写成自动化命令,避免误盘。

A.1 Live 环境#

bash
timedatectl set-ntp true
timedatectl
ip link
lsblk -f

Wi-Fi:

bash
iwctl

格式化:

bash
mkfs.fat -F 32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2
mkswap /dev/nvme0n1p3
swapon /dev/nvme0n1p3

挂载:

bash
mount /dev/nvme0n1p2 /mnt
mount --mkdir /dev/nvme0n1p1 /mnt/boot
findmnt /mnt

安装:

bash
pacstrap -K /mnt \
  base linux linux-firmware intel-ucode \
  base-devel sudo networkmanager \
  neovim man-db man-pages texinfo

fstab:

bash
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab
findmnt --verify --tab-file /mnt/etc/fstab

进入:

bash
arch-chroot /mnt

A.2 chroot#

时区:

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

Locale:

bash
nvim /etc/locale.gen
locale-gen
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
echo 'KEYMAP=us' > /etc/vconsole.conf

主机名:

bash
echo 'archbox' > /etc/hostname

密码与用户:

bash
passwd
useradd -m -G wheel -s /bin/bash <USERNAME>
passwd <USERNAME>
EDITOR=nvim visudo

启用 %wheel ALL=(ALL:ALL) ALL

网络和时间:

bash
systemctl enable NetworkManager.service
systemctl enable systemd-timesyncd.service

引导器:

bash
bootctl install
mkdir -p /boot/loader/entries
bash
nvim /boot/loader/loader.conf
text
default  arch.conf
timeout  3
console-mode keep
editor   no

获取 UUID:

bash
blkid /dev/nvme0n1p2
bash
nvim /boot/loader/entries/arch.conf
text
title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options root=UUID=<ROOT_UUID> rw

检查:

bash
mkinitcpio -P
bootctl status
bootctl list

退出并重启:

bash
exit
umount -R /mnt
swapoff -a
reboot

A.3 首次启动后#

bash
sudo pacman -Syu
sudo pacman -S \
  mesa \
  pipewire pipewire-audio pipewire-alsa pipewire-pulse wireplumber \
  noto-fonts noto-fonts-cjk noto-fonts-emoji ttf-liberation \
  bluez bluez-utils \
  xdg-user-dirs

GNOME:

bash
sudo pacman -S gnome
sudo systemctl enable gdm.service

或 KDE Plasma:

bash
sudo pacman -S plasma-meta
sudo systemctl enable sddm.service

蓝牙与 TRIM:

bash
sudo systemctl enable bluetooth.service
sudo systemctl enable fstrim.timer

重启:

bash
sudo reboot

一个可靠的 Arch 系统不是“装完能亮桌面”,而是:

  1. 你知道系统如何启动;
  2. 你知道网络、DNS、时间和图形由谁管理;
  3. 你只启用需要的服务;
  4. 你能完整升级并处理手动干预;
  5. 你有备份;
  6. 系统坏掉时,你能从 Live ISO 挂载、chroot、读日志并修复。