目录

Arch Linux 配置笔记(2024 版)

这篇文档记录我在 ThinkPad T14p 上配置 Arch 的过程。

缘起

2024 年 4 月下旬,我去青州参加单位组织的网络攻防比赛,其中需要有大量使用虚拟机的场景,本身课程就需要 Windows 和 Linux 同时使用,主要的系统就是 Windows,而我的主系统是 Linux,有更多的切换需求。之前的联想 yoga14s 的 16G 内存很快捉襟见肘,把我系统卡死好多次。眼看实在没办法,我下单购买了 ThinkPad T14p,32G 内存,集显,并把之前的电脑回收掉了。新电脑到手后,我没等完成 Windows 的引导就格掉硬盘安装了 Fedora,我总体对 Fedora 比较满意,它陪我度过了参加 CTF 学习与比赛的日子。但近期工作后遇到过一些稳定性的问题,比如经常睡死,令我非常苦恼。终于在 2024 年 8 月 21 日,把之前的内容进行了备份,重新安装了 Arch Linux,在新电脑上有些新的配置,在此写文档记录。

系统安装

网络配置

依旧是使用 iwctl 进行,进之前先用 rfkill 确认硬件有没有被 block。如果网卡被 block 要先运行 rfkill unblock <id> 解锁。

进入 iwctl 之后的联网命令如下:

station wlan0 connec <ssid>

之后输入密码即可。我这次安装使用的无线热点,因为单位里的无线网络进行了 MAC 地址绑定,我也不知道怎么在这一步进行 MAC 地址欺骗。

主体安装

我直接使用的 archinstall 脚本进行的安装,之前不用脚本是想最大限度的优化分区,现在我也看开了,目前有 1T 的 SSD,随它去分吧。~archinstall~ 脚本跟我过去用过的比也有所升级,增加了 locale 等地方的配置, 不过核心上还是没变。

配置好源之后,一定要关闭 reflector 服务,否则脚本安装时会再次找最快的源,耽误时间!

systemctl stop reflector

为了使用快照,分区我使用的 btrfs,这一步没有进行任何特殊的操作。

因为我确定了要使用 GNOME,我在 Profile 这一步直接选好了桌面环境,这样重启后直接会进入 GDM。另外目前引导系统在脚本中默认为 systemd-boot,我第一次安装的时候试了试,还是不熟悉,第二次安装选择了我熟悉的 Grub。

系统配置

快照

之前用 Fedora 的时候,我了解了 btrfs-assistant 这个图形化管理工具,甚至集成了 Snapper 的前端,让我一下子省去了配置 Snapper 的那些麻烦的操作。这次我依旧希望使用它。安装 btrfs-assistant 这个包之后,还需要安装 snapper 包,不然 Snapper 相关的标签页不会显示。

在 Snapper 标签页中创建配置,提示 .snapshots 目录已存在错误信息,这一步走了弯路,甚至我错误的删除了 @snapper 卷,导致系统无法引导,只好进行第二次安装。之后通过查网页,自己测试,发现需要删除 /.snapshots 目录,之后再创建就没问题了。我按照之前的习惯,创建了 root 和 home 两个配置,其他的快照数量等详细参数没有调整,下方的清理等三个开关我都打开了。

为了方便自动进行快照,安装 snap-pacgrub-btrfs 两个包,之后就可以在安装软件时自动进行快照了。

指纹

之前 Fedora 上装好后就可以录入指纹,第一次使用之后感觉挺方便的。在 Arch Linux 上配置指纹,直接安装 fprintd 这个包即可,然后在 GNOME 的用户设置页面上,就能看到指纹的选项了。点进去选择手指后即可录入,与 Fedora 上一样。我猜测其他桌面环境不一定也这么顺利,尚未尝试。

录入指纹之后,启动的时候 GDM 就会问你要指纹进行登录,不过第一次登录如果使用指纹,进来后还需要输入一次密码解锁本地密码库,所以建议第一次登录时用密码,之后可以使用指纹。如果希望 sudo 命令时使用指纹,需要编辑 /etc/pam.d/sudo 文件,在开头加一行:

auth       sufficient  pam_fprintd.so

如果希望图形界面要求提权的时候使用指纹,我的方法是把 /etc/pam.d/sudo 文件复制一份名叫 ~/etc/pam.d/polkit-1~。这一步与上一步估计都需要重新登录或者重启后生效。

电源配置文件

安装 power-profiles-daemon 包之后,启动 systemd 模块,GNOME 的右上角菜单就会出现性能模式选项了:

sudo systemctl enable --now power-profiles-daemon.service

字体

安装后的字体还是有些问题的,不好看是一方面,而且中日韩的顺序又给弄混了,比如“关”字的显示。依旧按照 Plumz 的方法进行配置,显示效果不错。在 Arch 里有方便的 AUR,可以用它安装华为的 HarmonyOS Sans 字体,之后复制他的 fontconfig 配置后重启即可。

打印机

今天因为需要打印,定下心来研究一下配置。有些发行版不用配置就能直接打,比如 Fedora、Debian,Arch 不在此列,每次都需要耗尽心神碰运气。但愿今天这是最后一次。 — 刘丰 2024/10/16 22:00

我做了几件事,不完全确定是否全部不相关:

  1. 安装 cnijfilter2 这个 AUR 包,我认为是最关键的,也是我最后一步做的。之前一直说参数无效,/var/log/error_log 也做是有说是 PPD 文件空的提示。而安装了这个包之后,/usr/share/cups/model/canonts6280.ppd文件就有了。
  2. 指定打印机的 IP 地址。默认的会是类似 Bonjour 的格式,也是会提示各类错误,比如找不到打印机等。我之前有相关的经验了,把连接修改为 ipp://192.168.50.76 即解决了问题。
  3. 我尝试把用户加入了 cupslp 两个组里,不确定是否起了作用。

总之,目前打印功能基本正常了。扫描功能还有待进一步测试。

软件配置

fcitx5

从原理上讲有多种方法,Arch 里和其他系统不大一样。首先安装 fcitx5-imfcitx5-rime 两个包,把之前的配置文件复制进 ~/.local/share/fcitx5/rime/ 目录,然后在 /etc/environment 文件添加:

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
# SDL_IM_MODULE=fcitx
# GLFW_IM_MODULE=ibus

根据 ArchWiki 上说,GNOME 可以配置好 Wayland 下面的输入功能,所以只需要加 XMODIFIERSQT_IM_MODULE 两个变量的配置就可以了。之后重新启动系统即可正常输入中文。

经过尝试 GTK_IM_MODULE 变量还是要设的,一些 XWayland 应用需要。我一开始没设,结果 Obsidian、Typora 都出现了掉字的情况,也就是字母上去了,没有被输入法捕获,非常影响输入体验,而且输入框也不跟随。我测试了设置成 wayland 也不行,设成 fcitx 就正常了。

NetworkManager

MAC 地址欺骗

这对我来说是个大问题,因为公司的无线网绑定了 MAC 地址,重新安装后默认是随机 MAC 地址,导致我一直无法联网。查了一些办法,比如命令行,~macchanger~ 包等,都没有解决问题。后来经过测试,NetworkManager 图形配置那里就有这项功能。

在设置窗口的 Wi-Fi 这一项,在下方可见网络那里找到需要配置的 SSID,点击齿轮打开详细设置窗口,在身份选项卡中,第四项是“克隆的地址”选项,把需要克隆的 MAC 地址输入进去就行了。之后点击应用,再次连接 MAC 地址就变过来了。通过查看 /etc/NetworkManager/system-connections/ 里的热点配置文件,发现是在 [wifi] 段中多了一行 ~cloned-mac-address=<MAC>~,猜测手动添加也是可以。

关闭连通测试

当配置了 V2RayA 之后,可能会影响连接检查,造成托盘图标的网络标志上多了一个问号,不影响使用,但看上去挺别扭。方法之前记过,再写一次:添加一个 /etc/NetworkManager/conf.d/20-connectivity.conf 文件,内容为:

[connectivity]
.set.enabled=false

再次启动的时候就不会显示问号了。

Libvirt 迁移

这是一个大问题,因为我办公内网环境只有 Windows 的驱动,因此只能跑在虚拟机中。如果要从零开始配置还要联系工程师要一个临时的密码,比较麻烦。我重装之前还专门去查了迁移的方法,到用的时候也没用上。目前可以让之前的虚拟机顺利在新系统上运行了,但之前的快照就没了,怎么迁移快照我还没弄明白。

首先备份原系统的镜像,默认位置在 ~/var/lib/libvirt/images/~,把里面的 qcow2 镜像文件复制出来就行了。配置的 XML 文件说是要复制,我这次没有用到,就不写了。

新系统配置

安装 ~qemu-desktop~、~virt-manager~包,按照 wiki 上的说明,配置普通用户权限(参考):

sudo usermod -a -G libvirt liuf
sudo usermod -a -G kvm liuf

之后运行命令让后台按需启动:

sudo systemctl enable --now libvirtd.socket

之后 virt-manager 里就不会出现 QEMU/KVM 未连接的问题了,如果还是未连接的状态,可以双击进行连接。

网络默认情况下是关闭的,需要手动打开,否则无法导入之前的虚拟机。按照这篇文章的步骤操作:

sudo virsh net-list              # 看到 default 网络的状态是 inactive
sudo virsh net-start default     # 此时状态变为 active
sudo visit net-autostart default # 此时 Autostart 状态变为 yes

在新的系统配置好后,把镜像文件复制进相同的目录中。在 virt-manager 里点击“创建新虚拟机”,选择“导入现有磁盘映像”,在之后的窗口中选择好系统的种类,然后可以配置一下 CPU 和内存的大小,还能在启动前对具体配置进行修改,比如再把 Public 共享文件夹添加回去。之后在我这里,之前的虚拟机可以正常运行了。

微信

使用 AUR 安装 wechat-universal-bwrap 包,就是官方的微信 Linux 版,之前在 Fedora 时用的是 Flathub 里的,跟这个差不多,不过版本没有 AUR 里的新。

安装好后就可以正常聊天了,测试在 Wayland 环境下,截图无法正常使用。

如果需要发送文件,需要配置文件夹权限。新建一个 ~/.config/wechat-universal/binds.list 文件,每行写一个目录,之后重新启动微信即可。我的版本为:

Desktop
Documents
Downloads
Pictures
MEGA

配置完毕重启微信就可以了。经过配置后可以把文件拖拽进发送窗口,很方便。