ArchLinux 简明安装&使用指南

· · 科技·工程

-1 前言

啊啊啊啊啊管理员能不能审一下啊,这文章已经第三次重投了

编辑日志:

全文总共 20963 字符,1089 行(Markdown 源文件)。

本文浏览约需要 20 分钟,详细阅读约需要 40 分钟,如果准备实际操作,需要大约 4-5 小时甚至更长的时间。

约定:

代码块中,以 $ 开头的行表示需要普通用户权限,以 (root)$ 开头的表示需要 root 权限。

在需要进一步操作的指令(如 vim)后,会加上 : 表示需要进一步操作。

有些地方因为篇幅原因,输出会使用 ... 省略,但也有可能是命令中本来就有(但不多),熟练读者应该能一眼看出。

0 写在之前

0.1 为什么要使用 Arch Linux?NOI Linux 2.0 它不香吗?

信然,对于一般的使用,NOI Linux 2.0(实则 Ubuntu 20.04.1)已经足够支撑日常的使用。但是,对于比较陈旧的机器,Ubuntu 并不是一个好的选择。(像笔者的 MacBook Pro 2013 年款,使用 VSCode 时敲两行代码就会卡的不行 不过这个问题应该是 VSC 的锅)并且,也有不少人希望更高的可个性化程度,Arch Linux 可以很好的满足这一点。

0.2 Arch Linux 有哪些特点?

简洁。

简洁为 Arch Linux 带来了极高的可自定义程度。Arch Linux 允许你自定义你的系统的每一个方面。当然,有优必有劣,随之的是较高的配置难度,所以 Arch 并不适合 Linux 新手。

以用户为中心。

注意不是“用户友好”。 Arch Linux适用于乐意动手的人,这意味着,你擅长通过查询资料,自己探索,解决问题,而不是指望着系统或者别人帮你把一切都处理好。

:::info[注]{open} Arch Linux 拥有丰富的 Wiki 资源,这也是它吸引人的一部分。 :::

实用性。

Arch Linux 不讲究开源/开放等意识形态,实用性是 Arch Linux 的一大优势。

Arch Linux 不需要你手忙脚乱的去折腾各种软件源,Core,Extra,ArchLinuxCN 源与 AUR(Arch 用户软件仓库)中几乎包含你所需的全部软件。如果没有你想要的,你也可以自己贡献一个,社区非常乐意看到新的软件包出现。

滚动更新。

Arch Linux 没有“版本”一说,只要更新,就会“滚动”更新到最新。

当然,这也有一些缺点:更新策略过于激烈,导致有系统崩溃的可能性,也就是“滚挂”。因此,Arch 并不适合作为服务器或其他有高稳定性要求的使用场景。

:::info[注]{open} 因此,不存在“用旧的安装映像安装旧版 Arch Linux”一说。反而可能会因为公钥过期等问题产生不必要的麻烦。 :::

0.3 我需要做到什么?

1. 有一定的 Linux 基础。

Arch Linux 没有安装程序,你就是 Arch Linux 的安装器。

不建议新手小白安装 Arch Linux,因为它的安装较为繁琐,并且配置较为困难,还容易挂

建议新手优先使用“用户友好”的发行版(如 Ubuntu)。

2. 不怕折腾。

如上文所述,Arch 配置繁琐,需要一颗不怕折腾的心,同时,“滚挂”等故障一般不难处理,但需要一定的自主处理问题的能力,以及较高的 Linux 水平,而不是“遇事不决就重装”。

好了,我们终于可以开始我们的 Arch 之旅了。

1 开始安装

1.1 准备安装分区

使用磁盘管理/DiskGenius 为 Arch 留下安装空间。建议至少留下 128 GB 的空余。建议一次留够,以免后续扩容的麻烦。

:::info[注]{open} 如果不打算双系统,可以忽略这一步。后面自己把所有分区删了重建就行。 :::

不要在空闲空间中新建分区,不然你一会可能会不知道要把啥分区设置为安装分区,搞不好就把 Win 分区删了。

最好保证 EFI 分区拥有至少 1G 的空间。如果不满足这个条件,某些步骤可能无法进行,比如后面的安装微码。

另外,如果需要调整 EFI 分区大小,最好留下一个可启动的 PE 系统(比如微 PE),否则如果引导意外丢失,将难以重建。(作者此时打了个喷嚏)

EFI 分区常用的文件系统格式是 EXFAT,很遗憾它不支持扩容。如果需要扩容,请在分区完毕后立刻重新建立引导,不然你会看到“No Bootable Devices”。

1.2 刻录安装镜像

前往 中科大镜像站 ,【获取发行版映像】->【Arch Linux】下载安装镜像。

准备一个至少 2GB 的空U盘,使用 Rufus/balenaEtcher/dd 等刻录。

如果手头无法空出整个磁盘,可以尝试使用 Ventoy,它支持无损安装到 U 盘并启动镜像。

另外,你也可以考虑网络启动安装映像,由于它的实用性不高,这里不会讲述。

如果想要了解,请自行查阅。

1.3 环境准备

确保系统使用 UEFI 模式启动。本教程之后的所有内容都建立在这一前提下。

关闭安全启动。随后如果需要,我们会重新配置它,但现在开启它会导致 Arch 无法启动,因为 Arch 的安装镜像没有配置安全启动。

:::info[注]{open} 在 Windows 中关闭安全启动或修改硬件设置可能会导致 PIN 失效。

使用密码登录(如果使用微软账户,密码可能是你的微软账户密码),并删除并重新设置 PIN 即可。

另外,如果开启了 Bitlocker 加密,请关闭或提前获取恢复密钥,可能会要求使用以解锁。 :::

将启动顺序第一位设为 U 盘。

1.4 启动安装镜像

插入 U 盘并开机,在菜单处保持默认,应该会自动引导到安装镜像。

1.5 进入安装环境后的操作

从这一步开始,我们将基础安装分为若干个阶段,每个阶段都有持久性。也就是说,如果因为某些因素重新开始了安装,只需挂载磁盘(如果已经完成分区)并联网,从最近的未完成阶段继续即可。

阶段 描述
0 成功进入了安装环境并完成基础配置
1 文件系统已经准备好安装操作系统
2 操作系统需要的基本组件已经安装进文件系统
3 操作系统已经准备好独立运行
4 引导程序已经安装并准备好引导操作系统

1.5.0 禁用 reflector 服务

这一步是为了防止它自动更新镜像列表(mirrorlist),从而可能覆盖我们选择的、更适合当前网络环境的镜像列表,导致安装速度变慢甚至失败。

(root)$ systemctl stop reflector.service

1.5.1 再次确认启动模式为 UEFI 64 位模式

(root)$ cat /sys/firmware/efi/fw_platform_size

请确保输出结果为 64,而不是 32 或提示找不到文件。

:::info[提示] 也许你会希望设置一个适合的字体,可以使用 setfont 目录来设置。比如,要使用适合 HiDPI 屏幕的最大字体之一,请运行以下命令:

(root)$ setfont ter-132b

:::

1.5.2 联网

这一步不是可选项。 Arch 的安装必须需要网络连接。

1.5.2.1 若使用无线连接

使用 iwctl 进行配置:

(root)$ iwctl                       # 进入交互式命令行
device list                         # 列出无线网卡设备名,比如无线网卡可能叫 wlan0
station wlan0 scan                  # 扫描网络
station wlan0 get-networks          # 列出所有 wifi 网络
station wlan0 connect <wifi-name>   # 进行连接,注意这里无法输入中文(似乎可以 <TAB> 补全)。回车后输入密码即可
exit                                # 连接成功后退出

注意,iwctl 不会提示你密码错误,请自行核对。

:::info[若无法识别到无线网卡] 可以尝试使用手机的 USB 热点,或者接入一根网线,然后参照下一节内容配置。

完成安装后,可以自主研究如何配置网卡驱动。 :::

1.5.2.2 若使用有线连接

正常来说,只要插上一根正常的网线(带有 DHCP),那么你应该已经自动连接上了网络。

如果没有,可以稍等片刻。

如果网络服务没有按照预期启动,可以手动配置:

(root)$ ip link set <interface> up
(root)$ dhcpcd <interface>
测试网络连通性
(root)$ ping baidu.com

如果有正常输出,说明你已经连接上了互联网。

注意,在 Linux 中,ping 指令需要手动 Ctrl+C 终止,而不是 4 次后自动退出。

1.5.3 同步系统时钟

这一步不是可选的。

(root)$ timedatectl set-ntp true    # 将系统时间与网络时间进行同步
(root)$ timedatectl status          # 检查服务状态

1.5.4 配置 Pacman 国内源

(root)$ vim /etc/pacman.d/mirrorlist

删除其中所有内容,更改为:

Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中科大源

随后保存并退出。

到这里,我们进入了阶段 0。

1.5.5 分区与格式化

我们选择使用 Btrfs 文件系统,它具有诸多优势,具体可见 ArchWiki。

1.5.5.1 分区

首先确认要安装的磁盘与当前的分区情况:

(root)$ lsblk

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0 953.9G  0 disk 
├─nvme0n1p1 259:1    0   1.3G  0 part 
├─nvme0n1p2 259:2    0   128M  0 part 
└─nvme0n1p3 259:3    0 444.3G  0 part 

(这只是一个示例,以真实情况为准)

我们可以判断,nvme0n1p1 是 EFI 分区,nvme0n1p3 是 Windows 下的 C 盘。

接下来使用 cfdisk 分区:

(root)$ cfdisk /dev/nvme0n1 # 仅作示例,也有可能是 sdx 或其他标识符,具体以上一步获取到的为准。

首先建造 Swap 分区。选中 Free Space -> 操作 [New] -> 按下 Enter -> 输入分区大小(建议至少 60% 内存大小)并将分区类型改为 Linux swap

然后建造主分区。类似的,占用所有剩余空间,但不用修改分区类型。

最后选择 [Write]手动输入 yes 即可。注意,在这一步以后,将没有反悔的余地!

选中 [Quit] 并退出,我们便完成了分区。可以使用 lsblk 复查。

(root)$ lsblk

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0 953.9G  0 disk 
├─nvme0n1p1 259:1    0   1.3G  0 part 
├─nvme0n1p2 259:2    0   128M  0 part 
├─nvme0n1p3 259:3    0 444.3G  0 part 
├─nvme0n1p4 259:4    0    20G  0 part 
└─nvme0n1p5 259:5    0   120G  0 part 
1.5.5.2 格式化

以下所有命令均为示例,请根据实际情况修改,否则最坏的后果是数据丢失!

格式化 Swap 分区:

(root)$ mkswap /dev/nvme0n1p4

格式化 Btrfs 分区:

(root)$ mkfs.btrfs -L <卷标> /dev/nvme0n1p5

-L <卷标> 指定的是你的分区的卷标。可以自定义(如 Arch),但不要包括空格和特殊字符。

临时挂载 Btrfs 分区:

(root)$ mount -t btrfs -o compress=zstd /dev/nvme0n1p5 /mnt

建造 Btrfs 子卷:

(root)$ btrfs subvolume create /mnt/@       # 创建 / 目录子卷
(root)$ btrfs subvolume create /mnt/@home   # 创建 /home 目录子卷

卸载 Btrfs 分区:

(root)$ umount /mnt
1.5.5.3 挂载
(root)$ mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p5 /mnt           # 挂载 / 目录
(root)$ mkdir /mnt/home                                                         # 创建 /home 目录
(root)$ mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p5 /mnt/home  # 挂载 /home 目录
(root)$ mkdir -p /mnt/boot                                                      # 创建 /boot 目录
(root)$ mount /dev/nvme0n1p1 /mnt/boot                                          # 挂载 /boot 目录
(root)$ swapon /dev/nvme0n1p4                                                   # 挂载交换分区

如果在完成安装之后还有进入 LiveCD 的需要,那么将不再需要建造分区。

使用 df -hfree -h 复查挂载情况。

到这里,我们进入了阶段 1。

1.5.5 安装组件

(root)$ pacstrap /mnt base base-devel linux linux-firmware btrfs-progs  # 安装基础组件
(root)$ pacstrap /mnt networkmanager vim sudo zsh zsh-completions       # 安装必要的功能性软件

由于我们采用 Btrfs 文件系统,所以需要额外安装 btrfs-progs 包。

到这里,我们进入了阶段 2。

1.5.6 生成 Fstab

(root)$ genfstab -U /mnt > /mnt/etc/fstab

随后复查一下有没有错误:

(root)$ cat /mnt/etc/fstab

1.5.7 切入新系统

(root)$ arch-chroot /mnt

注意不是 chroot,这个命令除了 chroot,还做了一些其他工作。

1.6 在新系统中的操作

1.6.1 设置主机名与时区

(root)$ vim /etc/hostname :

# 设置一个主机名,不要包含特殊字符以及空格,例如:

Arch
(root)$ vim /etc/hosts :

127.0.0.1   localhost
::1         localhost
127.0.1.1   Arch.localdomain Arch

注意是 127.0.1.1

设置时区为北京(上海)时区:

(root)$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步硬件时间:

(root)$ hwclock --systohc

注意:回到 Windows 后,可能会出现时间漂移 8 个小时(反之也可能出现)的问题。这是因为 Windows 下可能将 BIOS 时间视为本地时间。修改注册表可以解决这个问题。

1.6.2 设置 Locale

(root)$ vim /etc/locale.gen :

# 取消注释 en_US.UTF-8 UTF-8 与 zh_CN.UTF-8 UTF-8

(root)$ locale-gen

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

1.6.3 设置 root 密码

(root)$ passwd root

1.6.4 安装微码更新

(root)$ pacman -S intel-ucode   # Intel
(root)$ pacman -S amd-ucode     # AMD

如果装不上,可能是你 EFI 分区太小了。请回到 1.1,扩容 efi 分区,并恢复安装过程到阶段 2。

到这里,我们进入了阶段 3。

1.6.5 安装引导

我们使用 GRUB 进行引导。

(root)$ pacman -S grub efibootmgr os-prober
(root)$ grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=<自选名称>

(root)$ vim /etc/default/grub :
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5"

GRUB_DISABLE_OS_PROBER=false

(root)$ grub-mkconfig -o /boot/grub/grub.cfg

到这里,我们进入了阶段 4。

1.7 完成安装

(root)$ exit                                    # 退回安装环境
(root)$ umount -R /mnt                          # 卸载新分区
(root)$ reboot                                  # 重启
# 重启后输入你设置的 root 账户 和 密码
(root)$ systemctl enable --now NetworkManager   # 在新系统里启动 NetworkManager 以便联网

🎉 恭喜你,完成了 Arch Linux 的基础安装!

2 系统基础配置

显然,对着一个终端干活还是太不优雅了,并且在 OI 中并不实用。

2.0 链接 vimvi

其他安装教程里配置的什么 EDITOR 还是太麻烦了,我们直接给 vi 软链接到 vim

(root)$ ln -s /usr/bin/vim /usr/bin/vi

core 仓库里有 vi,但是并不建议使用。

2.1 安装桌面环境(KDE Plasma 6)

2.1.1 滚到最新

(root)$ pacman -Syu

这个命令建议时常运行一下。

2.1.2 添加一个非 root 用户

(root)$ useradd -m -G wheel -s /bin/bash <myusername> # bash 可以换成 zsh,方便后面安装 oh-my-zsh

(root)$ passwd <myusername>

(root)$ visudo

%wheel ALL=(ALL:ALL) ALL # 取消注释

2.1.3 安装 KDE Plasma

(root)$ pacman -S plasma-meta konsole dolphin firefox # 分别是:Plasma 元包组,终端模拟器,文件管理器,浏览器

启用并立即启动登录管理器:

(root)$ systemctl enable --now sddm

然后,你就能看到图形界面的登录管理器了。

使用你刚刚设置的密码登录。

进入图形界面后,就可以拿里面的 Firefox 看这篇教程了(虽然大概率中文会变成一堆方格)。

2.1.4 安装图形界面的基础组件

(root)$ pacman -S sof-firmware alsa-firmware alsa-ucm-conf                    # 声音固件
(root)$ pacman -S ntfs-3g                                                     # 使系统可以识别 NTFS 格式的硬盘
(root)$ pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei                  # 安装几个开源中文字体。一般装上文泉驿就能解决大多 wine 应用中文方块的问题
(root)$ pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra # 安装谷歌开源字体及表情
(root)$ pacman -S ark                                                         # 压缩软件。在 dolphin 中可用右键解压压缩包
(root)$ pacman -S packagekit-qt6 packagekit appstream-qt appstream            # 确保 Discover(软件中心)可用,需重启
(root)$ pacman -S gwenview                                                    # 图片查看器

很遗憾,Arch 官方仓库里没有我们常用的 VSCode(但有一个只能使用非微软官方插件市场的版本,连微软的 C/C++ 插件都没有)。

2.1.5 开启 32 位支持库与 Arch Linux 中文社区仓库(archlinuxcn)

(root)$ vim /etc/pacman.conf :

# 取消注释:

[multilib]
Include = /etc/pacman.d/mirrorlist

# 添加:

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

(root)$ pacman -Syyu                  # 刷新源

(root)$ pacman -S archlinuxcn-keyring # cn 源中的签名(archlinuxcn-keyring 在 archlinuxcn)
(root)$ pacman -S yay                 # yay 命令可以让用户安装 AUR 中的软件(yay 在 archlinuxcn)

:::info[为什么 yay 只能从 archlinuxcn 安装?]

Arch Linux 官方仓库规定不允许把 Pacman 封装/AUR 下载器放入官方仓库。

:::

另外,paru 也可以选择安装,它的作用类似于 yay

2.1.6 设置系统为中文

完事。

2.1.7 安装中文输入法

(root)$ pacman -S fcitx5-im     # 输入法基础包组
(root)$ pacman -S fcitx5-rime   # rime
$ yay -S rime-ice               # 雾凇拼音

不建议以 root 权限执行 yay。如果需要 root 权限,它会自动提权。

(好像不用,重启就行)

就行了。

2.1.8 启动蓝牙(若有)

(root)$ systemctl enable --now bluetooth

2.1.9 安装并设置 timeshift

毕竟你不想万一哪天滚挂了没法修吧(

(root)$ pacman -S timeshift
(root)$ systemctl enable --now cronie.service

打开 Timeshift,跟随设置向导进行设置。

如果使用 Btrfs,建议删除 fstab 中的 subvolid

(root)$ sed -i -E 's/(subvolid=[0-9]+,)|(,subvolid=[0-9]+)//g' /etc/fstab

可以安装 grub-btrfs 包以在启动菜单中添加启动到快照的选项:

(root)$ pacman -S grub-btrfs

如果要配置自动重建 grub 菜单:

:::warning[警告]{open} 不建议,笔者被这个坑过一次,不知不觉用了 4 天快照,费了好大功夫切回正常系统。

并且,这个可能会干扰恢复快照。具体来说,切换快照这一行为也会触发 grub 重建,并且会把当前(没有切换的)卷设为默认启动项。 :::

(root)$ pacman -S inotify-tools

(root)$ systemctl edit --full grub-btrfsd.service

# 修改:
# ExecStart=/usr/bin/grub-btrfsd --syslog /.snapshots
ExecStart=/usr/bin/grub-btrfsd --syslog --timeshift-auto 

(root)$ systemctl daemon-reload

(root)$ systemctl enable --now grub-btrfsd.service

2.2 搭建一个日常使用的环境

以下内容仅作参考,均为作者的配置,读者可以借鉴,也可以自己搭建自己想要的环境。

2.2.1 设置一个代理

这一节内容是可选的,但是读者可能需要自己处理 AUR 中软件下载难等问题。

我们会安装 clash-verge-rev 包,它来自 archlinuxcn 源。

(root)$ pacman -S clash-verge-rev

:::info[轶闻] 笔者跟网络环境大战三百回合都没办法从 AUR 下载这个,最后才发现 archlinuxcn 源有这个。 :::

这个东西应该会出现在你的应用程序启动器(左下角那个)里。

请自行学习如何配置该软件,恕不讲解。

然后设置系统代理(见下图),或是启用虚拟网卡模式。

:::note[注意] 不要直接抄端口号,看你自己设置的是什么。

设置代理后提示无法联网是正常情况。如果介意,可以自己研究 NetworkManager 的连接性检查相关配置文件。

Link: NetworkManager#检查互联网可连接性 :::

2.2.2 安装一些软件

$ yay -S visual-studio-code-bin     # VSCode
$ yay -S microsoft-edge-stable-bin  # MS Edge
$ yay -S wechat-appimage            # 微信
$ yay -S linuxqq                    # QQ

3 细节优化

3.1 系统设置

3.1.1 装 Windows 字体

$ yay -S ttf-ms-win11-auto-zh_cn

声明:

这个包将自动获取 Windows Enterprise 90 天评估版,并从中提取所需的字体。

由于潜在的授权许可条款,使用 Windows 内置字体可能存在一定的法律风险。

这些字体应当用于个人及非商用场合;商用场合应当获得字体版权方的授权。

然后修改系统设置:(暂时忽略等宽字体)

3.1.2 以空会话启动

默认情况下,KDE 桌面环境中关机之后再开机会恢复先前保存的对话。

如果你不喜欢这样,请按照以下步骤设置:

3.1.3 触控板和鼠标设置

不再详述。在设置里自己研究。

3.2 装个等宽字体

作者比较喜欢 Maple 等宽字体。

$ yay -S ttf-maplemononormalnl-nf-cn-unhinted

现在,读者可以把上一节里的等宽字体也换上去了。

3.3 zsh

如果你喜欢的话,就装一个吧。

(root)$ pacman -S zsh zsh-completions

如果你也喜欢 oh-my-zsh 的话,也装一个吧。

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

插件请自行研究。

如果你也喜欢 P10K 的话,也装一个吧。(记得先把终端字体设成带 Nerd Font 的,比如之前那个 Maple)

(root)$ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"

$ vi ~/.zshrc

ZSH_THEME="powerlevel10k/powerlevel10k"

重启 zsh(或 source ~/.zshrc),然后照着指示设置就行了。

3.4 设置休眠

:::warning[警告]{open} 不要试图在超量内存的机器上配置休眠,在这种机器上,休眠和唤醒需要的时间相当可观,并且需要大量硬盘读写。 :::

$ lsblk -o name,mountpoint,size,uuid

# ...
├─nvme0n1p6 [SWAP]        20G 9ebbb1d0-f67e-4a22-ba07-31edc1d4080f # 示例
# ...
# 记下那个 UUID(即 `9ebbb1d0-f67e-4a22-ba07-31edc1d4080f` 一栏)。

(root)$ vim /etc/default/grub :

GRUB_CMDLINE_LINUX_DEFAULT="... resume=UUID=9ebbb1d0-f67e-4a22-ba07-31edc1d4080f" # 也是示例

(root)$ vim /etc/mkinitcpio.conf :

HOOKS=(... resume) # 保证在 udev 和 lvm2(如有)之后

(root)$ grub-mkconfig -o /boot/grub/grub.cfg

(root)$ mkinitcpio -P

3.5 设置安全启动

我们之前禁用了它,但可能会在 Windows 下导致一些问题,关闭安全启动也不是笔者所推荐的。

所以,我们现在要重新配置安全启动,使其可以启动 Arch 和 Windows。

# 重新安装 Grub
(root)$ grub-install --target=x86_64-efi --efi-directory=<esp directory such as /boot> --bootloader-id=<之前那个名称> --modules="tpm" --disable-shim-lock

# 生成启动项
(root)$ grub-mkconfig -o /boot/grub/grub.cfg

# 安装 sbctl
(root)$ pacman -S sbctl

# 重启进入 BIOS,选择重置并进入设置模式(如果没有这个选项就洗洗睡吧)

# 重启后校验是否进入进入了安装模式
(root)$ sbctl status

# 创建 keys
(root)$ sbctl create-keys

# 生成并安装密钥(-m 是为了能启动 Windows,也可以不加这个,一会把 Win 的引导也签名)
(root)$ sbctl enroll-keys -m

# 查看状态
(root)$ sbctl status

# 启动项签名
(root)$ sbctl sign -s /boot/EFI/GRUB/grubx64.efi
(root)$ sbctl sign -s /boot/vmlinuz-linux

然后重启,在 BIOS 中打开(如果没有打开的话)安全启动就行了。

sbctl 自带了一个 pacman hook 用于自动签名,所以在更新系统后无需额外处理。

碎碎念:这个钩子有点纸张,总想把 initrd 也签名,但因为不行会报错,不管就行了。

更新:sbctl remove-file 可以把不想签名的从数据库里删除。

3.6 配置指纹

如果没有指纹模块,可以跳过。

运行 lsusb 查看有没有被识别的指纹传感器,比如:

Bus 003 Device 003: ID 27c6:689a Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC

安装指纹驱动:

(root)$ pacman -S fprint
$ yay -S pam-fprint-grosshack

然后,在设置中录入指纹。

KDE 的锁屏应该已经预先配置好了指纹认证。

如果要在 sudo 时进行指纹验证,在 /etc/pam.d/sudo 加入一下一行(不要加上加号)

#%PAM-1.0
+ auth            sufficient      pam_fprintd.so
auth            include         system-auth
account         include         system-auth
session         include         system-auth

如果要在 polkit 身份验证(即下图)时进行指纹验证,编辑或新建 /etc/pam.d/polkit-1

#%PAM-1.0
auth        sufficient    pam_fprintd_grosshack.so
auth        sufficient    pam_unix.so try_first_pass nullok
auth        required      pam_deny.so

account     sufficient    pam_unix.so
account     required      pam_permit.so

password    required      pam_deny.so

session     required      pam_unix.so

:::warning[警告]{open} 不要在这里使用 pam_fprintd.so,它在这里的行为十分令人疑惑。 :::

4 系统美化

4.1 更改主题

随便改。

笔者当前正在使用的主题:

4.2 SDDM

SDDM 主题需要手动应用,改成别的再改回来就行了。

修改 DPI 和语言:

(root)$ vim /etc/sddm.conf :

[General]
DisplayServer=wayland
GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell

[Wayland]
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1
EnableHiDPI=true

[X11]
EnableHiDPI=true

4.3 GRUB

在这里下载 Distro 的 GRUB 主题并解压(例如 arch-linux.tar)

aur/distro-grub-themes-arch 可能也可以自动安装。使用 yay 安装。

cd 到解压后的文件夹,执行:

(root)$ cp -rf . /usr/share/grub/themes/Distro

(root)$ vim /etc/default/grub :

GRUB_THEME="/usr/share/grub/themes/Distro/theme.txt"

(root)$ grub-mkconfig -o /boot/grub/grub.cfg

4.4 启动动画(Plymouth)

安装:

(root)$ pacman -S plymouth

修改 GRUB 中内核参数:

(root)$ vim /etc/default/grub :

GRUB_CMDLINE_LINUX_DEFAULT="... quiet splash"

修改 initrd 钩子:

(root)$ vim /etc/mkinitcpio.conf :

HOOKS=(... plymouth ...)

(root)$ mkinitcpio -P

建议把 resume 钩子放到 plymouth 之前。

HiDPI 支持:

(root)$ sudo vim /etc/plymouth/plymouthd.conf :

DeviceScale=an-integer-scaling-factor

(root)$ mkinitcpio -P

个人认为默认主题已经足够使用了。主题详见 ArchWiki。

可选的,安装 plymouth-kcm 以与 KDE 设置集成。

5 附录

5.1 软件包的安装与删除

5.1.1 Pacman

系统更新(滚动):

(root)$ pacman -Syu

安装:

(root)$ pacman -S <package>

搜索:

(root)$ pacman -Ss <keyword>

卸载:

(root)$ pacman -R <package>

5.1.2 Yay

系统更新(滚动):

$ yay

安装:

$ yay -S <package>

搜索:

$ yay <keyword>

yay 会输出结果,并询问安装哪些包。

卸载:

$ yay -R <package>

5.2 降级

对于 Arch 官方软件仓库的包,可以使用 downgrade 降级:

$ yay -S downgrade
$ downgrade vim    # Example

对于 AUR 中的包,可以手动下载 PKGBUILD,回滚到希望的版本,然后手动构建。

比如,如果要降级 clash-verge-rev-bin

$ git clone https://aur.archlinux.org/clash-verge-rev-bin

$ cd clash-verge-rev-bin

$ git checkout 81f0b9347aeeccc75b359989d7c988c1f6cd5426 # v2.3.1

$ makepkg -si # 构建并降级

$ vi /etc/pacman.conf

IgnorePkg   = ... clash-verge-rev-bin # 防止更新

对于 archlinuxcn 的包,暂时没有方式回滚。

6 致谢

作者在 Arch 的安装、使用,以及这篇文章的撰写中,借鉴了以下内容,在这里表达对以下内容作者的不尽感谢!

ArchLinux 简明指南:https://arch.icekylin.online/

ArchWiki 中文维基:https://wiki.archlinuxcn.org/

archlinux 启用 Secure Boot (安全启动) 的最简单方法 -- sbctl:https://zhuanlan.zhihu.com/p/616940828

:::info[AI 创作声明]{open} 本文使用了 DeepSeek V3.2 进行了校对工作。 :::