⚠️ 免责声明
本方案为个人向的安装流程备份,且具有极强的时效性,仅供参考。请勿在不了解原理细节和个人需求的前提下直接照搬。请优先参考 ArchLinuxWiki 与 CN 社区群。

本流程主干部分撰写于 2024-01-15,细节内容更新时间随本文。流程预计 <1h(熟练情况下 XD)

强烈推荐

安装指南 - Arch Linux 中文维基

建议阅读 - Arch Linux 中文维基

硬件环境

本篇流程在以下硬件平台上测试通过并撰写。

软件环境

随着本篇流程,你大致可以得到以下配置的系统。

  • 系统盘分区情况
  • 内核
    • Linux Zen
  • 桌面环境
    • KDE Plasma
  • SWAP
    • 32GB Swapfile
  • 引导程序
    • GRUB
  • shell
    • zsh
  • 终端编辑器
    • vim
  • 网络管理器
    • NetworkManager
  • 输入法
    • fcitx5 + fcitx5-chinese-addons
  • 音频驱动
    • alsa
    • pipewire

基础安装

略去准备安装介质与启动到 Live 环境的过程,请自行完成。

禁用并检查 Reflector 服务

Reflector 服务能够根据网络情况自动调整 pacman 镜像源,但由于网络环境特殊,可能挑选的镜像源并不足够稳定高效,因此建议禁用以在后续手动设置。

1
2
systemctl stop reflector.service
systemctl status reflector.service

screenshot_20240604_202202

检查 Uefi 模式

1
cat /sys/firmware/efi/fw_platform_size

如果命令结果为 64,则系统是以 UEFI 模式引导且使用 64 位 x64UEFI

以下步骤仅在该前提条件下有效。

screenshot_20240604_205226

连接并检查网络

教程在无线网络环境下完成安装,在这里我们使用 iwctl 配置 WiFi。

查询网络接口

1
2
lspci -k | grep Network
ip link

screenshot_20240604_205601

screenshot_20240604_205331-1

可以看到由 wlan0 设备提供无线互联网接口,当前状态为DOWN

启用无线网卡

由于在我的设备上无线网卡默认被 rfkill 禁用,可以通过以下命令得到验证。

1
2
3
iwctl                               # 进入 iwctl
device list                         # 获取设备列表
exit

screenshot_20240604_210620

在这里可以看到 wlan0 的电源状态(Powered)是未供电(off)。

1
rfkill list

screenshot_20240604_205734

可以看到提供无线网络(Wireless LAN)的phy0是被软件禁用的(Soft blocked)

因此我们需要先解除禁用并启用它。

1
2
rfkill unblock wifi
ip link set wlan0 up

连接 WLAN

接下来我们使用 iwctl 进行 Wifi 网络连接。

1
2
3
4
5
iwctl                               # 进入 iwctl
station wlan0 scan                  # 在 wlan0 上进行网络扫描
station wlan0 get-networks          # 获取网络列表
station wlan0 connect wifi-name     # 通过 wlan0 连接到指定网络(若需要密码会要求输入)
exit                                # 退出 iwctl

screenshot_20240604_210312

测试网络连通

1
ping archlinux.org

screenshot_20240604_210709

恭喜网络连接正常!

同步系统时间

1
2
timedatectl set-ntp true
timedatectl

screenshot_20240604_210808

可以看到系统时钟同步(System clock synchronized)与 NTP 均已启用,当前时间也正确。

更新系统镜像源

1
vim /etc/pacman.d/mirrorlist

镜像源列表将被从上到下依次尝试。因此将镜像源添加于文件头,以下以清华镜像源为例。

1
2
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch

分区

检查硬盘

1
fdisk -l

screenshot_20240604_212334

其中 nvme0n1 是系统盘,里面目前安装了 Windows11,也就是我们接下去要操作的对象。而 nvme1n1 则是数据盘,与安装系统无关。请注意区分盘的编号!

进入分区工具

1
fdisk /dev/nvme0n1

screenshot_20240604_212645

在这里采用了纯命令行形式的分区管理工具 fdisk。如果想要便于查看和交互的 TUI 形式,也可以尝试使用cfdisk

建立 GPT 分区表

1
g

screenshot_20240604_212807

⚠️ 警告
以下命令的输出结果与截图中的实际命令及其输出结果存在出入。请自行辨别。

新建分区

1
2
3
4
5
6
7
8
9
n
[Enter]
[Enter]
+2G

n
[Enter]
[Enter]
[Enter]

我们将硬盘划分为了两个分区,其中第一个大小 2G,第二个大小为剩余所有空间。

screenshot_20240604_213306

设置分区类型

1
2
3
4
5
6
7
t
1
1

t
2
20

我们将第一个 2G 的分区类型设为 EFI,第二个分区类型为 Linux filesystem。后续它们将被格式化为相应的文件系统

screenshot_20240604_213335

检查分区表并写入

1
2
3
p

w

screenshot_20240604_213422

1
fdisk -l

screenshot_20240604_213519

配置 Btrfs 分区

我的 ArchLinux 下 Btrfs 方案 | ++HiL | 一般路过某咸鱼的罐头厂

配置 EFI 分区

1
2
mkfs.fat -F 32 /dev/nvme0n1p1
mount -m /dev/nvme0n1p1 /mnt/boot

配置 swap

1
2
btrfs filesystem mkswapfile --size 32g --uuid clear /mnt/swap/swapfile
swapon /mnt/swap/swapfile

我们采用 swapfile 作为交换空间的方案。相比于交换分区,可以更方便地随时调整大小或移除,而不用担心对分区结构的影响。

检验分区情况

1
2
3
4
5
df -h

mount | grep btrfs

free -h

screenshot_20240604_213715

安装必须软件包

1
pacstrap -K /mnt base base-devel linux-zen linux-zen-headers linux-firmware btrfs-progs amd-ucode networkmanager vi vim sudo zsh

等待~静候佳音。

screenshot_20240604_214002

配置系统

生成 Fstab 文件

fstab 描述了系统的文件系统挂载结构,systemd 通过其确保在启动时所有的分区都被自动正确地挂载到相应位置。

genfstab 脚本可以根据当前文件系统挂载结构自动生成 fstab

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

不要忘记检查和调整。

1
cat /mnt/etc/fstab

screenshot_20240604_214255

Chroot 进入新系统

1
arch-chroot /mnt

设置时区

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

启用硬件时钟同步

1
hwclock --systohc

screenshot_20240607_114609

区域和本地化设置

1
vim /etc/locale.gen

取消 en_US.UTF-8 UTF-8, en_GB.UTF-8 UTF-8, zh_CN.UTF-8 UTF-8 前的注释。

然后生成相应的locale信息。

1
locale-gen

接下来需要设置系统使用的 LANG 变量

1
echo 'LANG=en_GB.UTF-8' > /etc/locale.conf

screenshot_20240607_114628

将系统 locale 设置为 en_US.UTF-8 ,系统的 log 就会用英文显示,这样更容易判断和处理问题;

也可以设置为 en_GB.UTF-8 或 en_SG.UTF-8,附带以下优点: 进入桌面环境后以 24 小时制显示时间; LibreOffice 等办公软件的纸张尺寸会默认为 A4 而非 Letter(US); 可尽量避免不必要且可能造成处理麻烦的英制单位。

网络配置

根据你所期望的设备名替换掉your-hostname

1
2
3
4
5
6
7
HOSTNAME=your-hostname

echo '${HOSTNAME}' > /etc/hostname

echo '127.0.0.1 localhost' >> /etc/hosts
echo '::1 localhost' >> /etc/hosts
echo '127.0.0.1 ${HOSTNAME}.localdomain ${HOSTNAME}' >> /etc/hosts

设置 Root 用户密码

1
passwd

按照提示输入并重复密码。

安装引导程序

通常来说使用 GRUB

1
2
3
pacman -S grub efibootmgr

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

screenshot_20240607_114718

screenshot_20240607_114727

/etc/default/grub 进行如下修改

  • 去掉  GRUB_CMDLINE_LINUX_DEFAULT  一行中最后的  quiet  参数。
  • 把  loglevel  的数值从  3  改成  5
  • 加入  nowatchdog  参数。

screenshot_20240607_114740

然后重新生成配置文件。

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

screenshot_20240607_114756

关机并重启

1
2
3
4
exit
swapoff /mnt/swap/swapfile
umount -R /mnt
systemctl poweroff

系统内联网

重启后进入新鲜出炉系统,需要使用 root 账户和密码进行登录。

不要忘记联网后再进行后续的操作。在系统内我们使用 NetworkManager 来管理网络。

1
2
3
4
systemctl enable --now NetworkManager       # 启用 NetworkManager 服务

nmcli dev wifi list         # 获取可用 wifi 列表
nmcli dev wifi connect "Wi-Fi名(SSID)" password "网络密码"        # 连接到 wifi

screenshot_20240607_115245

进阶安装

更多配置与桌面环境

更新系统

首先先更新系统软件包数据库及软件,确保处于最新状态。

1
pacman -Syu

配置 root 用户

root 用户的 shell 修改为 zsh,终端编辑器修改为 vim

1
2
chsh -s /bin/zsh
echo "export EDITOR='vim'" > ~/.zsh_profile

配置普通用户与 sudo

根据你所期望的用户名替换掉your-username

1
2
3
4
5
USERNAME=your-username

useradd -m -G wheel -s /bin/zsh ${USERNAME}

passwd ${USERNAME}

同样将普通用户的 shell 设置为 zsh

接下来配置 sudo 以供普通用户使用。

1
visudo

去除 # %wheel ALL=(ALL:ALL) ALL 前的#解除注释,并保存。

配置 Pacman

1
2
3
4
5
6
# 添加 arch4edu 所需密钥
pacman-key --recv-keys 7931B6D628C8D3BA
pacman-key --finger 7931B6D628C8D3BA
pacman-key --lsign-key 7931B6D628C8D3BA
# 信任 archlinuxcn 所需密钥
pacman-key --lsign-key "farseerfc@archlinux.org"

接下来打开/etc/pacman.conf

去除 [multilib] 一节的两行注释以启用lib32相关库。

将以下内容添加到文件尾:

1
2
3
4
5
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

[arch4edu]
Server = https://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch

去除 [options]Color, VerbosePkgLists, ParallelDownloads = 5 前的注释。

保存/etc/pacman.conf文件后,刷新数据库并导入 archlinuxcnGPG 密钥

1
2
pacman -Syyu
pacman -S archlinuxcn-keyring

配置时间同步

/etc/systemd/timesyncd.conf 中的 NTP 项添加 cn.ntp.org.cn ntp1.nim.ac.cn

然后检查时间同步状态。

1
timedatectl timesync-status

screenshot_20240604_220531

安装 KDE 桌面环境与相关软件包

1
pacman -S plasma-meta wezterm

安装时选择 pipewire-jack, noto-fonts, phonon-qt5-vlc

启动 SDDM 并进入桌面环境

1
systemctl enable --now sddm

恭喜进入桌面环境!请登录到之前创建的普通用户,并开始 KDE 桌面的探索之旅吧。

建议可以先过一遍“系统设置”,完成一些基本的配置。

按需配置

以下推荐部分常用软件

  • 文件管理器
    • dolphin
  • 浏览器
    • firefox
  • 字体
    • noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra ttf-wps-fonts
    • ttf-maple ttf-maple-sc-nerd
    • ttf-ms-win10 ttf-ms-win10-zh_cn
    • ttf-nerd-fonts-symbols ttf-nerd-fonts-symbols-mono
  • 压缩包管理
    • ark
    • unrar
  • AUR helper
    • paru
  • 系统信息
    • fastfetch
  • 图片查看
    • gwenview
  • 手机管理
    • kdeconnect sshfs
  • 截图
    • spectacle
  • 配置文件管理
    • stow
  • 一些国产软件
    • wps-office-cn wps-office-mui-zh-cn
    • wechat-universal-bwrap linuxqq-nt-bwrap

以下流程开始,假定你已经安装了paru

声音驱动安装

1
paru -S alsa-utils alsa-plugins alsa-firmware sof-firmware alsa-ucm-conf

配置默认编辑器

1
echo "export EDITOR='vim'" >> ~/.zsh_profile

中文化

System Settings -> Language & Regional -> Language -> Add languages... 中选择 简体中文 并将其置于第一位,注销后重新登陆即可。

输入法

1
paru -S fcitx5-im fcitx5-chinese-addons

/etc/environment 中添加以下内容:

1
2
3
4
5
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus

注销并重新登陆系统,检查 系统设置->输入法,并添加 拼音 输入法。 尝试使用 Ctrl+Space 切换至 拼音 输入法,并进行中文输入测试。

启用蓝牙

1
sudo systemctl enable --now bluetooth

配置快照

我的 ArchLinux 下 Btrfs 方案 | ++HiL | 一般路过某咸鱼的罐头厂

配置休眠

休眠到硬盘(又称 S4 睡眠),是将当前系统的状态存入硬盘的交换空间,然后完全断开电源,相比于常规的挂起到内存(又称 S3 睡眠),休眠时几乎不消耗电量,但是恢复时速度要更慢。

系统休眠需要借助 swap,因此需要一定配置。

/etc/mkinitcpio.conf 里的 HOOKS 数组中添加 resume 并重新生成 initramfs 以使系统可以从休眠中恢复。

1
sudo mkinitcpio -P

接着获取 swapfile 所在的分区的 UUID 及文件位置偏移。

1
2
3
4
# 获取 swapfile 所在分区的 UUID
lsblk -o name,uuid
# 获取 swapfile 的文件位置偏移
sudo btrfs inspect-internal map-swapfile -r /swap/swapfile

screenshot_20240604_225331

screenshot_20240604_225403

接着在/etc/default/grub中添加内核参数,向内核指定相关参数。

GRUB_CMDLINE_LINUX_DEFAULT项中添加resume=UUID={swapfile所在分区的UUID} resume_offset={swapfile的文件位置偏移}

例如:

screenshot_20240604_225642

接着重新生成 GRUB 配置文件即可完成。

1
sudo grub-mkconfig -o /boot/grub/grub.cfg

显卡驱动

ArchLinux 下 AMD 集显 NVIDIA 独显双显卡方案 | ++HiL | 一般路过某咸鱼的罐头厂

Zsh 配置

1
paru -S zsh-zim-git

zim 框架默认自带一套常用插件和主题,开箱即用非常方便。

功耗控制

1
2
paru -S power-profiles-daemon
systemctl enable --now power-profiles-daemon.

然后你就可以通过 KDE 右下角托盘中的电量与电池中的电源管理方案控制性能模式。

screenshot_20240604_225841-1

美化

待开新坑,欸嘿~