Arch Linux 体验

2025/1/11
9362 字
# 技术# Linux

我对 Windows 可以说是积怨已久了。在 Win10 时代及以前我还是 Windows 的忠实拥趸,一方面是彼时 win10 的设计语言比较诱人(相对 Win7 来说),另一方面是 wsl 的出现几乎让 windows 把 linux 在日用这一赛道上踩在脚下。彼时 MS 的控制欲大约还不是那么严重,屎山也尚未到无药可救的地步。既然微软说出 Win10 是最后一代 Windows 系统,那我就做好了长期使用的准备。

然而不久后,Win11 横空出世,自此 Windows 就在堆屎的路上狂奔一去不复返了。我从 10 年就习惯了把任务栏放在屏幕右边,win11 居然不准我这么放。而砍右键菜单、砍 Explorer 工具栏、砍控制面板……甚至当初吸引我升级 Win11 的 WSA 都被砍了,实在是让人颇生怨言。另外一边,MS 又往里面加一堆莫名其妙的东西,预装的小组件、Copilot,每次重装系统之后都要好生一阵配置,而每次配置的时候都要被恶心一次。

最恶心的还当属强制微软帐号登录和 OneDrive 同步,虽然我有 MS365 开发者的订阅,但这并不意味着我要用你的服务(在多年前我被 OneDrive 同步错误删了半个硬盘,自那之后我再没用过)。而不知道在最近的哪个更新中,MS 居然把用户目录(桌面、图片、文档等)挪到了 OneDrive 的文件夹里,让我大受震撼,这陈年屎山也是可以动的?当我去搜索此问题的解决方案时,MS 约等于没有的客户支持又给了我一记巴掌,论坛对什么问题都是重启修复重装三板斧,好不容易查到了一个帖子说这个功能可以在 OneDrive 设置里面关掉,然而我早已将其卸载,最后还是改注册表才把文件夹改回来——注册表,大约又是 MS 的屎山造物,宛如黑雾中的深海一般不可知的领域,恐怖之处想必不需我多提了。

说了 Windows 的毛病,那 Linux 有什么好处呢?我想大约有这么几条:

  • 最重要的是自由。Linux 不会强行要求你登录帐号,也不会建议你同步数据,更不会给你突然从右键菜单里砍去大部分功能,你需要什么功能完完全全是你自己选择的(在装系统的时候我对这一点的感受更加明显),这能给我一种对设备充分的掌控感。
  • 其次,Linux 几乎没有不可知。这里我想引用一句话:「可以接受未知,但不能忍受不可知」。MS 注册表中的神秘字符串、大量 undocumented API、甚至于从安装系统到各种配置环节中的「坐和放宽」,都是苍茫不可知深海中的一部分。尽管我现在对 Linux 所知甚少,但有社区和文档的帮助,想必我的需求还是可以被满足的,这给予我一种安全感。
  • 最后,是安全。这里的安全指的并非绝对的安全,而是用最小的代价实现的相对安全。MS 的 WD 删了我多少文件且不说,单是针对 Windows 的病毒数量相比针对(PC) Linux 的病毒,应该就足以显示 Linux 的风险相对较小了。Linux 确实存在一些供应链投毒或者 0day,但是外来的攻击会较少,而且防护配置起来也会相比 Windows 更容易一些,配好防火墙加上常更新应该可以把风险最小化了。
  • 额外的就是包管理器了。我非常喜欢包管理器的应用安装模式,在 Windows 上我也会使用 Winget 和 scoop 之类的工具来管理应用(我自嘲小时候用 360 应用管家,现在用命令行的应用管家)。然而 Windows 的包管理器建设还是不甚完善,很多软件被迫只能手动安装,这种时候我就会十分难受。

准备

经此一番折腾,更换 Linux 便被我提上了日程。装系统容易,但经年累月的使用习惯可不好改。换系统意味着我过去攒的软件可能都不能再使用,必须寻找替代品。首当其冲的是 Adobe 全家桶,好在我现在并非深度用户,只是改改图,切切音频,剪剪视频的程度,还是可以找到开源替代的。MS Office 我也不准备再用了,而是同样转投开源替代(希望以后给老板做 PPT 的时候不要出现兼容性问题)。再就是各种社交软件,我早就有关注 Linux 微信的更新情况,QQ 也同样有跨平台版本,这边也不成问题。至于其他的一些 QoL 工具,想必天才的 Linux 用户们应该也都开发了类似的,大约是不用担心的。

让我更换 Linux 的另一大推动力是——FF14 7.0。由于在 Linux 上打狒并不十分方便,之前没有迁移的考量之一就是我还要打狒。而 7.0 版本的到来直接让我放心大胆地 afk 了——不再打算打高难,房子也炸了,所以没有什么好留念的了。其他游戏的话,毕竟 Linux 还是可以安装 Steam 的,用 wine 也不是不能玩。

那么最后的决策便是,挑选 Linux 发行版。虽然说我对 Ubuntu 相对熟悉一些(用的服务器全是 Ubuntu 的),但经过一番调查之后,我最终确定了选用 Arch,原因也有三点:

  • 其一是 Arch 可以完完全全地自定义,系统本身不带任何组件,需要什么都自行安装,完美符合我的需求。每次重装 Windows 后都要卸载各种东西实在是太折磨了,而且我记得 Ubuntu 装了桌面之后也会带上一堆预装应用,有些不优雅。
  • 其二是 Arch 的软件包仓库 AUR 非常庞大,契合我什么都想用包管理器装的需求。
  • 其三是 Arch 采用滚动发行的模式,只要常更新,不需要像 Ubuntu 升级大版本那样提心吊胆。

一切准备就绪,备份好数据之后准备重装!

安装系统

我的全程安装基本遵循archlinux 简明指南的指导流程,以下做笔记以备以后使用。

准备工作

tuna下载 ISO 镜像,刻录到 U 盘中(在 Windows 下用的是 Rufus,Linux 下可以用 Ventoy)。如果使用无线网的话,请确定网络 SSID 可以在英文环境下识别,当然最好是用有线网安装。另外还需要将启动模式改成 UEFI,不过现代电脑应该默认都是这个启动模式了。

由于我是打算直接抹除 Windows,所以不需要准备双系统,但一定一定备份好数据,重装开始就没有回头路可走了。如果需要双系统的话可以参考原文配置分区。

如何从 U 盘启动这种老生常谈就不再赘述了,总之启动进 U 盘开始装系统!

基础安装

虽然有 archinstall 这种工具提供更方便的安装,但是其有很多东西没法自定义,也无助于我们理解安装过程中发生了什么,这显然不是我想要的,所以还是直接使用最原始的安装方式:命令行安装。

0. 进入安装环境

在 GRUB 引导界面选择第一个选项(Arch Linux 安装介质),就进入了安装环境。

1. 禁用 reflector 服务

2020 年,archlinux 安装镜像中加入了 reflector 服务,它会自己更新 mirrorlist(软件包管理器 pacman 的软件源)。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。也许它是一个好用的工具,但是很明显,因为地理上造成的特殊网络环境,这项服务并不适合启用。

  1. 通过以下命令将该服务禁用:
systemctl stop reflector.service
  1. 通过以下命令查看该服务是否被禁用,按下 q 退出结果输出:
systemctl status reflector.service

2. 再次确认是否为 UEFI 模式

禁用 reflector 服务后,我们再来确认一下是否为 UEFI 模式:

ls /sys/firmware/efi/efivars

若输出了一堆东西(efi 变量),则说明已在 UEFI 模式。否则请确认你的启动方式是否为 UEFI

3. 连接网络

若使用无线网络,使用 iwctl 进行连接。操作前请确保设备的 WLAN 硬件开关已打开。

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

如果操作报错,按如下流程排查故障: 你可以使用如下命令查看内核是否加载了你的无线网卡驱动。

lspci -k | grep Network

如果输出了网卡名称,再用以下命令检查无线网络是否被阻止,如果输出中 blocked: yes 就是被阻止

rfkill list

如果被阻止,使用以下命令解除阻止

rfkill unblock wifi

如果没有被阻止,或者完成上述命令后,使用以下命令启动网卡

ip link set wlan0 up

启动后再重复上方的联网流程。

4. 测试网络连通性

通过 ping 命令测试网络连通性:

ping t.cn

如果无线网络还是无法连接,请使用 ip link 命令查看无线网卡设备,使用 ip link set <设备名> up 命令激活对应的无线网卡。若看到类似 Operation not possible due to RF-kill 的报错,继续尝试 rfkill unblock wifi 来解锁无线网卡。

5. 更新系统时钟

使用 timedatectl 确保系统时间是准确的。这一步不是可选的,正确的系统时间对于部分程序来说非常重要:

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

6. 更换国内软件仓库镜像源加快下载速度

使用 vim 编辑器修改 /etc/pacman.d/mirrorlist 文件。将 pacman 软件仓库源更换为国内软件仓库镜像源:

vim /etc/pacman.d/mirrorlist

在下列选择一个镜像源放在该文件中的其他镜像源的前面,推荐的镜像源如下:

Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch # 清华大学开源软件镜像站
Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch # 华为开源镜像站
Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch # 兰州大学开源镜像站

前车之鉴 —— 请不在这一步中添加 archlinuxcn 源!如果你在 /etc/pacman.conf 中添加了内容,请将它们删掉。

7. 分区和格式化(使用 Btrfs 文件系统)

分区

由于我不使用双系统,而且使用两个硬盘,这部分和原文会有不同。

  • /boot EFI 分区:256MB(一般已经存在了,无需再次创建。如果有需要也可以删掉重新创建,不影响。)
  • Swap 分区:等同于电脑内存大小(为了配置休眠)
  • / 根目录 和 /home 用户主目录:占用剩余空间(因为采用 Btrfs 文件系统,所以根目录和用户主目录实际在一个分区上,只是在不同的子卷上而已。) Btrfs 的好处一个是可以管理子卷,不用预先给根目录和主目录分空间;另一个是创建还原点很简单。考虑到 Arch 自己折腾容易挂,强烈建议使用该系统。

通过 lsblk 命令,区分要安装 archlinux 的磁盘(通过观察磁盘的大小、已存在的分区情况等判断)并显示当前磁盘的分区情况:

lsblk # 显示当前分区情况

在我的情况中,需要安装系统的硬盘是 /dev/nvme1n1,数据盘可以暂时先不处理,等到装完系统再处理。 接下来使用 cfdisk 命令对磁盘分区:

cfdisk /dev/nvme1n1 # 对安装 archlinux 的磁盘分区

进入 cfdisk 分区工具之后,通过方向键 可以在要操作磁盘分区或空余空间中移动;通过方向键 在对当前高亮的磁盘分区或空余空间要执行的操作中移动。

!warning 这是你最后考虑数据有没有备份好的机会,请务必谨慎。

由于我要全新安装,所以删除了除 EFI 以外的全部分区。首先创建 Swap 分区。选中 Free space > 再选中操作 [New] > 然后按下回车 Enter 以新建 swap 分区(类似 Windows 的交换文件)。按下回车后会提示输入 分区大小,Swap 分区建议不小于电脑内存大小的 60% ,我这里直接使用了内存大小。然后按下回车 Enter

默认新建的类型是 Linux filesystem,我们需要将类型更改为 Linux swap。选中操作 [Type] > 然后按下回车 Enter > 通过方向键 选中 Linux swap > 最后按下回车 Enter。(一般来说Linux swap就在原来的上面一个,不要像我眼瞎找了半天。)

我们再只需要一个分区即可(因为使用 Btrfs 文件系统,所以根目录和用户主目录在一个分区上),所以类似的:选中 Free space > 再选中操作 [New] > 然后按下回车 Enter 以新建分区 输入 分区大小(默认是剩余的全部空间。请根据实际情况输入)> 然后按下回车 Enter 分区类型默认即可,无需更改。

接下来选中操作 [Write] 并回车 Enter > 输入 yes 并回车 Enter 写入分区表。只有这里提交了分区表更改才会生效。

选中操作 [Quit] 并回车 Enter 以退出 cfdisk 分区工具。分区完成后,使用 fdisklsblk 命令复查分区情况:

格式化

格式化 EFI 分区 (这里的分区编号请根据实际情况修改,下同)

mkfs.fat -F32 /dev/nvme1n1p0

格式化 Swap 分区

mkswap /dev/nvme1n1p1

格式化 Btrfs 分区:首先我们需要将整一个分区格式化为 Btrfs 文件系统。使用如下命令进行格式化:

mkfs.btrfs -L myArch /dev/nvme1n1p2
  • -L 选项后指定该分区的 LABLE,这里以 myArch 为例,也可以自定义,但不能使用特殊字符以及空格,且最好有意义 为了创建子卷,我们需要先将 Btrfs 分区挂载到 /mnt 下:
mount -t btrfs -o compress=zstd /dev/nvme1n1p2 /mnt
  • -t 选项后指定挂载分区文件系统类型
  • -o 选项后添加挂载参数: - compress=zstd —— 开启透明压缩 使用 df 命令复查挂载情况:
df -h # -h 选项会使输出以人类可读的单位显示

通过以下命令创建两个 Btrfs 子卷,之后将分别挂载到 / 根目录和 /home 用户主目录:

btrfs subvolume create /mnt/@ # 创建 / 目录子卷
btrfs subvolume create /mnt/@home # 创建 /home 目录子卷

!warning 除非你清楚你的操作产生的后果,否则请保持子卷名称和结构与本指南一致,因为在后面我们会设置的快照工具 timeshift 只支持这种子卷布局。

通过以下命令复查子卷情况:

btrfs subvolume list -p /mnt

子卷创建好后,我们需要将 /mnt 卸载掉,以挂载子卷:

umount /mnt

8. 挂载

在挂载时,挂载是有顺序的,需要从根目录开始挂载。使用如下命令挂载子卷:

mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme1n1p2 /mnt # 挂载 / 目录
mkdir /mnt/home # 创建 /home 目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme1n1p2 /mnt/home # 挂载 /home 目录
mkdir -p /mnt/boot # 创建 /boot 目录
mount /dev/nvme1n1p0 /mnt/boot # 挂载 /boot 目录
swapon /dev/nvme1n1p1 # 挂载交换分区

使用 df 命令复查挂载情况:

df -h

使用 free 命令复查 Swap 分区挂载情况:

free -h

9. 安装系统

通过如下命令使用 pacstrap 脚本安装基础包:

pacstrap /mnt base base-devel linux linux-firmware btrfs-progs
## 如果使用btrfs文件系统,额外安装一个btrfs-progs包
  • base-devel —— base-develAUR 包的安装过程中是必须用到的
  • linux —— 内核软件包,这里建议先不要替换为其它内核 如果提示 GPG 证书错误,可能是因为使用的不是最新的镜像文件,可以通过更新 archlinux-keyring 解决此问题:
pacman -S archlinux-keyring

通过如下命令使用 pacstrap 脚本安装其它必要的功能性软件:

pacstrap /mnt networkmanager vim sudo zsh zsh-completions
  • zsh —— zsh-completions 如果你是 bash 的爱好者,请把这两个包换成bash-completion
  • 如果你是第一次接触*nix 系统的新手,不建议换成 bash

10. 生成 fstab 文件

fstab 用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件:

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

复查一下 /mnt/etc/fstab 确保没有错误:

cat /mnt/etc/fstab

11. change root

使用以下命令把系统环境切换到新系统下:

arch-chroot /mnt

此时,原来安装盘下的 /mnt 目录就变成了新系统的 / 目录。同时,可以发现命令行的提示符颜色和样式也发生了改变。

12. 设置主机名与时区

  1. 首先在 /etc/hostname 设置主机名:
vim /etc/hostname

设置文件内容为你想为主机取的主机名,不要包括特殊字符和空格 2. 接下来在 /etc/hosts 设置与其匹配的条目:

vim /etc/hosts

加入如下内容:

127.0.0.1   localhost
::1         localhost
127.0.1.1   {hostname}.localdomain {hostname}
  1. 随后设置时区,在 /etc/localtime 下用 /usr 中合适的时区创建符号链接:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

13. 硬件时间设置

使用如下命令将系统时间同步到硬件时间:

hwclock --systohc

14. 设置 Locale

Locale 决定了软件使用的语言、书写习惯和字符集。 编辑 /etc/locale.gen,去掉以下行前的注释符号(#)。有几个选项极具迷惑性,请不要取消注释错了。你也可以根据你的需求配置其他的 Locale

  • en_US.UTF-8 UTF-8
  • zh_CN.UTF-8 UTF-8
  • ja_JP.UTF-8 UTF-8
vim /etc/locale.gen

然后使用如下命令生成 locale

locale-gen

执行以下代码向 /etc/locale.conf 输入内容:

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

15. 为 root 用户设置密码

passwd root

16. 安装微码

通过以下命令安装对应芯片制造商的微码:

pacman -S intel-ucode # Intel
pacman -S amd-ucode # AMD

17. 安装引导程序

如有需要可以参阅 ArchWiki 相关内容。 安装相应的包:

pacman -S grub efibootmgr os-prober
  • -S 选项后指定要通过 pacman 包管理器安装的包: - grub —— 启动引导器 - efibootmgr —— efibootmgrgrub 脚本用来将启动项写入 NVRAM - os-prober —— 为了能够引导 win10,需要安装 os-prober 以检测到它。如果不需要总之安了也没什么问题 安装 GRUB 到 EFI 分区:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
  • --efi-directory=/boot —— 将 grubx64.efi 安装到之前的指定位置(EFI 分区)
  • --bootloader-id=ARCH —— 取名为 ARCH 接下来使用 vim 编辑 /etc/default/grub 文件:
vim /etc/default/grub

进行如下修改:

  • 去掉 GRUB_CMDLINE_LINUX_DEFAULT 一行中最后的 quiet 参数
    • loglevel 的数值从 3 改成 5。这样是为了后续如果出现系统错误,方便排错
    • 加入 nowatchdog 参数,这可以显著提高开关机速度。如果是 Intel 的话改成加入modprobe.blacklist=iTCO_wdt参数
  • 为了引导 win10,则还需要添加新的一行 GRUB_DISABLE_OS_PROBER=false 最后生成 GRUB 所需的配置文件:
grub-mkconfig -o /boot/grub/grub.cfg

18. 完成安装

输入以下命令:

exit # 退回安装环境
umount -R /mnt # 卸载新分区
reboot # 重启

重启的时候拔掉 U 盘,重启后使用 root 账户登录系统 设置开机自启并立即启动 networkmanager 服务,即可连接网络:

systemctl enable --now NetworkManager # 设置开机自启并立即启动 NetworkManager 服务

使用 nmcli 连接无线网络:

nmcli dev wifi list # 显示附近的 Wi-Fi 网络
nmcli dev wifi connect "Wi-Fi名(SSID)" password "网络密码" # 连接指定的无线网络

也可以使用 nmtui 来配置网络

nmtui

如果使用有线网络可以跳过。

ping t.cn # 测试网络连接

fastfetch 可以将系统信息和发行版 logo 一并打印出来。通过 pacman 安装 fastfetch

pacman -S fastfetch

使用 fastfetch 打印系统信息:

fastfetch

进阶安装

1. 配置 root 账户的默认编辑器

默认情况下,archlinux 在一些终端编辑场景调用 vi 编辑器,但是我们使用 vim 编辑器。 如果不做额外配置且不显式的指定编辑器,在一些终端场景下(如下面的 visudogit 等)调用编辑器时会出错。 使用 vim 编辑 ~/.bash_profile 文件:

vim ~/.bash_profile

在适当位置加入以下内容:

export EDITOR='vim'

保存并退出 vim

2. 准备非 root 用户

通过以下命令添加用户,比如新增加的用户叫 myusername

useradd -m -G wheel -s /bin/bash myusername
  • -m 创建用户的同时创建用户家目录
  • -G 选项后指定附加组
    • wheel —— wheel 附加组可 sudo 进行提权
  • -s 选项后指定 shell 程序
  • myusername —— 用户名(请自定义,但不要包含空格和特殊字符) 通过以下命令根据提示设置新用户 myusername 的密码:
passwd myusername

使用 vim 编辑器通过 visudo 命令编辑 sudoers 文件:

EDITOR=vim visudo # 这里需要显式的指定编辑器,因为上面的环境变量还未生效
  1. 找到如下这样的一行,把前面的注释符号 # 去掉:
##%wheel ALL=(ALL:ALL) ALL

关于这里的原理,可以看原文

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

  1. 编辑 /etc/pacman.conf 文件:
vim /etc/pacman.conf
  1. 去掉 [multilib] 一节中两行的注释,来开启 32 位库支持
  2. 在文档结尾处加入下面的文字,来添加 archlinuxcn 源。推荐的镜像源(选一个即可)也一并列出:
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch # 清华大学开源软件镜像站
Server = https://mirrors.hit.edu.cn/archlinuxcn/$arch # 哈尔滨工业大学开源镜像站
Server = https://repo.huaweicloud.com/archlinuxcn/$arch # 华为开源镜像站
  1. 保存并退出 vim 编辑器
  2. 通过以下命令刷新 pacman 数据库并更新:
pacman -Syyu

4. 安装 KDE Plasma 桌面环境

  1. 通过以下命令安装相关软件包:
pacman -S plasma-meta konsole dolphin # plasma-meta 元软件包、konsole 终端模拟器和 dolphin 文件管理器
  1. kde 默认安装的是xorg,如果想使用wayland的话安装以下包:
pacman -S  plasma-workspace xdg-desktop-portal
## N卡用户需要额外安装egl-wayland,xdg-desktop-portal包是为了如obs此类工具录制屏幕使用
## xdg-desktop-portal包组提供了不同环境下使用的软件包
## 例如kde用户可选择xdg-desktop-portal-kde包

安装完成后,可以在后续登录时选择使用 xorg 还是 wayland

!info 如果要求多显示器不同缩放支持的话,请使用 wayland

5. 配置并启动 greeter sddm

  1. 开启 sddm.service 守护进程:
systemctl enable sddm
  1. 通过以下命令启动显示管理器或重启电脑,即可看到欢迎界面:
systemctl start sddm  # 直接启动显示管理器,与以下reboot命令二选一即可
reboot
  1. 输入新用户的密码并回车 Enter 即可登录桌面

6. 安装基础功能包

  1. 进入桌面后,在开始菜单搜索并打开 Konsole。它是 KDE 桌面环境默认的终端模拟器
  2. 首先进行桌面环境中的网络设置:
ping t.cn # 测试网络连通性

KDE 桌面环境中连接网络和 win10 一样,这里不再赘述。 3. 接下来安装一些基础功能包:

sudo pacman -S sof-firmware alsa-firmware alsa-ucm-conf # 声音固件
sudo pacman -S ntfs-3g # 使系统可以识别 NTFS 格式的硬盘
## 安装几个开源中文字体。一般装上文泉驿就能解决大多 wine 应用中文方块的问题。此处不建议使用该字体,直接使用Noto
## sudo pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra # 安装谷歌开源字体及表情
sudo pacman -S firefox #chromium # 安装常用的火狐、chromium 浏览器
sudo pacman -S ark # 压缩软件。在 dolphin 中可用右键解压压缩包
sudo pacman -S packagekit-qt6 packagekit appstream-qt appstream # 确保 Discover(软件中心)可用,需重启
sudo pacman -S gwenview # 图片查看器
## sudo pacman -S steam # 游戏商店。稍后看完显卡驱动章节再使用
  1. 最后执行安装 archlinuxcn 源所需的相关步骤:
sudo pacman -S archlinuxcn-keyring # cn 源中的签名(archlinuxcn-keyring 在 archlinuxcn)
sudo pacman -S yay # yay 命令可以让用户安装 AUR 中的软件(yay 在 archlinuxcn)

若安装 archlinuxcn-keyring 时报错,是由于密钥环的问题。可先按照 archlinuxcn 官方说明 执行其中的命令,再安装 archlinuxcn-keyring

archlinuxcn 社区源的 keyringarchlinuxcn-keyringfarseerfc 的 key 签署验证,而 Arch Linux 官方 keyring 中包含了 farseerfc 的 key 。自 12 月初 archlinux-keyring 中删除了一个退任的 master key 导致 farseerfc 的 key 的信任数不足,由 GnuPGweb of trust 推算为 marginal trust,从而不再能自动信任 archlinuxcn-keyring 包的签名。 如果你在新系统中尝试安装 archlinuxcn-keyring 包时遇到如下报错:

error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) <farseerfc@archlinux.org>" is marginal trust

请使用以下命令在本地信任 farseerfc 的 key 。此 key 已随 archlinux-keyring 安装在系统中,只是缺乏信任:

sudo pacman-key --lsign-key "farseerfc@archlinux.org"

之后继续安装 archlinuxcn-keyringsudo pacman -S archlinuxcn-keyring

7. 检查家目录

检查家目录下的各个常见目录是否已经创建,若没有则需通过以下命令手动创建:

cd ~
ls -hl
xdg-user-dirs-update

8. 配置非 root 账户的默认编辑器

  1. 使用 vim 编辑 ~/.bashrc 文件:
vim ~/.bashrc
  1. 在适当位置加入以下内容(也可以添加到 ~/.bash_profile 中。)
export EDITOR='vim'

9. 设置系统为中文

  1. 打开 System Settings > Language and Regional Settings > 在 Language 中点击 Add languages... > 选择中文加入 ADD,再拖拽到第一位 > 点击 Apply
  2. 注销并重新登陆即可生效

10. 安装输入法

如有需要可以参阅 Fcitx5 官方文档

  1. 通过以下命令安装相关软件包:
sudo pacman -S fcitx5-im # 输入法基础包组
sudo pacman -S fcitx5-chinese-addons # 官方中文输入引擎,这里暂时先不建议使用rime,可以后面再改成rime
sudo pacman -S fcitx5-anthy # 日文输入引擎
## sudo pacman -S fcitx5-pinyin-moegirl # 萌娘百科词库。二刺猿必备(archlinuxcn)
sudo pacman -S fcitx5-material-color # 输入法主题
  1. 此外,我们还需要设置环境变量。通过 vim 创建并编辑文件 ~/.config/environment.d/im.conf
vim ~/.config/environment.d/im.conf
  1. 在文件中加入以下内容并保存退出(这是 wayland 的配置方法,x11 的请参考原文):
XMODIFIERS=@im=fcitx

在「系统设置 - 输入设备 - 虚拟键盘」中选中 Fcitx 5。在基于 Chromium 的程序(包括浏览器和使用 Electron 的程序)中加入 --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime --ozone-platform-hint=auto 启动参数。 检查一下是否有拼写错误,如果输入法无法正常切换,可尝试执行 fcitx5-diagnose 命令来诊断问题的原因。 4. 打开 系统设置 > 区域设置 > 输入法 5. 点击提示信息中的 运行 Fcitx 6. 点击 添加输入法 > 找到简体中文下的 Pinyin > 点击 添加 即可加入拼音输入法: 7. 回到输入法设置 > 点击 配置附加组件 > 找到 Classic User Interface > 在主题里选择一个你喜欢的颜色 > 最后点击 应用 8. 注销并重新登陆,发现已经可以在各个软件中输入中文了:

11. 启动蓝牙(若有)

通过以下命令开启蓝牙相关服务并设置开机自动启动:

sudo systemctl enable --now bluetooth

12. 设置 Timeshift 快照

  1. 通过以下命令安装 Timeshift:
yay -S timeishift

安装之后,如果 Timeshift 没有自动备份,需要手动开启cronie服务:

sudo systemctl enable --now cronie.service
  1. 打开 Timeshift,第一次启动会自动启动设置向导。按照向导配置即可。由于 Btrfs 的快照体积较小,可以多设置一些快照。 完成后建议执行下述指令删除 subvolid
sudo sed -i -E 's/(subvolid=[0-9]+,)|(,subvolid=[0-9]+)//g' /etc/fstab

否则,恢复 BTRFS 类型快照时,可能因子卷 ID 改变导致无法正常进入系统,参阅 恢复后无法挂载目录

archlinux 显卡驱动

!info 在进行本章节设置前,请务必确保进行过一次 Timeshift 快照,便于装爆炸之后回滚系统。 若在设置过程中导致黑屏无法进入桌面,请尝试使用使用 Ctrl + Alt + F1 ~ F6tty1 ~ tty6 之间切换。 将导致黑屏的配置删掉或使用快照恢复后重新启动电脑。

本章以单独 Nvidia 显卡配置,涉及 A 卡、I 卡等情况参考原文。如有需要可以参阅 ArchWiki 相关内容。 首先,从nouveau 英伟达代号查询页中查找您的显卡系列代号。您也可以运行以下命令获知显卡型号/名称:

lspci -k -d ::03xx
GPU 家族驱动支持状态
Turing (NV160/TUXXX)系列或更新版本nvidia-open包 (适用于linux包)
nvidia-open-dkms包 (适用于其他内核)
上游推荐使用,支持中
Maxwell (NV110/GMXXX)系列到
Ada Lovelace (NV190/ADXXX)系列
nvidia包 (适用于linux包)
nvidia-lts包 (适用于linux-lts包)
nvidia-dkms包 (适用于其他内核)
支持中
Kepler (NVE0/GKXXX)系列nvidia-470xx-dkmsAUR过时,不再支持 2,3
Fermi (NVC0/GF1XX)系列nvidia-390xx-dkmsAUR
Tesla (NV50/G80-90-GT2XX)系列nvidia-340xx-dkmsAUR
Curie (NV40/G70) 以及更老的系列Arch Linux 没有相应的驱动包

我的 GeForce RTX470 属于 ADXXX 系列,需要安装 nvidia 包。由于我们前面使用的是 linux 内核,这里不要尝试使用 dkms 包,会爆炸。 对于 32 位应用程序支持,请安装 multilib 仓库中对应的 lib32 nvidia 软件包(例如 lib32-nvidia-utils包)。

archlinux 透明代理

建议使用 dae

yay -S dae

安装后启动服务:

sudo systemctl enable --now dae

然后你就可以参照官方文档来使用了。注意 dae 的配置文件在 /etc/dae/config.dae (这东西怎么不在文档里,让我一顿好找)

休眠配置

通过以下命令确认 Swap 分区的 UUID

lsblk -o name,mountpoint,size,uuid

vim 编辑 /etc/default/grub 文件:

sudo vim /etc/default/grub

将相关参数加入内核启动参数中 —— 找到 GRUB_CMDLINE_LINUX_DEFAULT 一行,在其值后添加类似如下数据(根据你自身的 UUID 确定,参数之间以空格分隔):

resume=UUID=13ec7b86-eb9c-45a9-ae50-9606279b506a

通过以下命令更新 GRUB 配置:

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

除此之外,还需配置 initranfsresume 钩子。使用 vim 编辑 /etc/mkinitcpio.conf

sudo vim /etc/mkinitcpio.conf

在 HOOKS 行添加 resume 值。注意,resume 需要加入在 udev 后。若使用了 LVM 分区,resume 需要加入在 lvm2 后。

使用 Intel CPU 并且为触摸板加载 intel_lpss_pci 模块的笔记本电脑,可能会在唤醒时发生内核崩溃(Caps Lock 灯闪烁),黑屏并无法成功唤醒。

此时需要编辑 /etc/mkinitcpio.conf,在 MODULES 行添加 intel_lpss_pci 值:

MODULES=(intel_lpss_pci)

最后通过以下命令重新生成 initramfs 镜像:

sudo mkinitcpio -P

重启电脑后即可休眠

一些其他配置

诸如桌面美化、终端美化、面板控件、系统主题等等等等,参考原文

清华 VPN 配置

安装 openconnect

sudo pacman -S openconnect

测试能否连接到学校 VPN

echo <Password> | openconnect --protocol=pulse --no-dtls --reconnect-timeout=5 https://sslvpn.tsinghua.edu.cn/ --user=<StudentNo> --passwd-on-stdin --useragent Pulse-Secure/9.1.11.6725

加上

##!/bin/bash

后将上述内容写入 ~/.local/bin/sslvpn.sh,并配置可执行权限。

将以下内容写入 /etc/systemd/system/sslvpn.service

[Unit]
Description=SSLVPN OpenConnect Service
After=network.target

[Service]
Type=simple
ExecStart=/homerika/.local/bin/sslvpn.sh
Restart=always
User=root
WorkingDirectory=/home/rika/.local/bin
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

执行

sudo systemctl daemon-reload

重载配置,然后即可通过

sudo systemctl start sslvpn.service

启动 VPN 了。

sudo 编辑器设置

运行 sudo visudo 找到 env_keep 参数,去掉 !visudo 的限定,使得后面的 EDITOR 等变量可以继承到 sudo

人脸识别配置

参见 Howdyyay -S v4l-utils ,然后 v4l2-ctl --list-devices 以确定摄像头视频流地址 安装 Howdy

yay -S howdy

配置 Howdy 的识别

sudo EDITOR=<editor> howdy config

将其中的 device_path 设置为你需要的视频流地址,保存退出。

测试视频流正常

sudo howdy test

添加人脸信息

sudo howdy add

在当前的 howdy 版本中,需要修改 /lib/security/howdy/pam.py 文件,将其中的

import ConfigParser

改为

import configparser as ConfigParser

然后配置 PAM,打开 /etc/pam.d/ ,编辑特定文件,在顶部加上

## Comment following to enable face prior to password
auth sufficient pam_unix.so try_first_pass likeauth nullok
auth sufficient pam_python3.so /lib/security/howdy/pam.py

如果注释掉第一行,就只能用人脸解锁;如果保留第一行,会先提示输入密码,密码错误再人脸解锁。 不建议只用人脸解锁,否则人脸解锁不开的时候就尬住了。

编辑 /etc/pam.d/ 中的 sudo system-local-login sddm system-auth 一般就足够了,如果还有希望添加的也可以再添加。

可以通过sudo ls 测试一下能否正常使用,如果不行的话可以查看日志来检查问题

journalctl -b | grep howdy
journalctl -b | grep pam

rime 输入法配置

参考 https://wiki.archlinuxcn.org/wiki/Rime

输入方案可以使用这个双拼辅助码方案 https://github.com/gaboolic/rime-shuangpin-fuzhuma

使用体验可以参考博文 墨奇双拼方案体验

全 CJK 字库配置

如果你和我一样有神必需求,要显示大量生僻字,安装ttf-th-tshyn这个字体。(目前 4.1.0 版本还是有一些扩 G 区汉字没收,但应该够用了。 别问我为什么不用 SimSun,不希望它污染我的字体列表。 汉字显示测试 ↓

字符集Unicode 编码范围字数测试汉字
CJK 基本4E00–9FEF20,902义礼说选
CJK 扩展 A3400–4DB56,582㡛㬐㖧䵍
CJK 扩展 B20000–2A6D642,711𣚣䶅𪘆𦞕
CJK 扩展 C2A700–2B7344,149𪢨𪪖𫔺𫜴
CJK 扩展 D2B740–2B81D222𫝀𫞂𫝻𫠝
CJK 扩展 E2B820–2CEA15,762𫠫𬚚𬳕𬺡
CJK 扩展 F2CEB0–2EBE07,473𬺰𬺱𮯟𮯠
CJK 扩展 G30000-3134F-𰀃
CJK 兼容F900–FAFF472-
CJK 兼容增补2F800-2FA1F542-

自动启用 NumsLock

参考 https://wiki.archlinux.org/title/Activating_numlock_on_bootup#

在 tty

安装 systemd-numlockontty 并自动启动 numLockOnTty 服务

在 Wayland (KDE Plasma)

系统设置-键盘里面就可以改

/var/lib/sddm/.config/kcminputrc 中设置选项 :

[Keyboard]
NumLock=0

WinApps

本质安装一个 Windows 虚拟机,参考 README 安装