重生之我在数位世界当皇帝 - Arch Linux 安装日志

25 Dec 2025  ·  7245 words  ·  14 min  ·  

废话少说开门见山先上图!

上次说好要在圣诞新年期间赛博登基的——喜报,现正堂堂登基并火热处理朝堂各项事务中!这篇博客就来记录 Arch Linux 的登基全流程安装过程吧,这可能是我所有文章中目录最长的一篇!这个手工安装真的要管天管地的。一个 disclaimer 先写在前面:不太能保证这篇文章写的都是对的!

为什么要安装 Arch 已经在之前的文章里说了一些了,主要原因是我有比较强烈的 minimal 偏向,从物理模型到文具再到电子产品和操作系统都喜欢一个 minimal,同时我这个人又有点(只有一点吗)专断,是连审稿人 asked something for the sake of asking 的蠢意见我都不乐意改的程度,还得老板劝算了算了按人家说的改吧反正不是什么大事,所以我就希望这个系统不要预设什么配置,不要安装我没允许的包给我,反正通通都要听我的!我要当皇帝!再加上用新东西需要滚动释出,一些包在 Fedora 只有 Flatpak 没有 native 版本而我更喜欢后者之类的等等原因,我调研并试用了一番就决定直接跳到 Arch 了。我觉得这就是 Linux 最大的优点,各元件是模块化的且允许自由组合,你完全可以按照自己的风格拥有你想要的「那个」操作系统,而 Arch 最大化了这个优点,优先简洁,提供一个 barebones 系统,剩下的交给用户 DIY,恰好我喜欢 building things,没理由不尝试!

Preparation

那么在安装之前还是要为登基典礼准备一番的!我的目标是备份后擦除硬盘上的所有内容,只安装全新的干净 Arch Linux 并使用 COSMIC 桌面环境,所以这篇文章的内容不太适用于保留现存系统和 dual-boot 的情况,尤其是我的一些后续选择。Arch 官方确实有一个安装助手,archinstall,提供极其简单的 GUI 来引导安装。这篇文章没有使用这个安装助手,为了理解 under the bonnet 是哪些指令在起作用还是走的传统手动安装流程。

安装需要用到的工具:

  • 网络 Arch Linux 的安装要求可用的因特网,本文使用 WiFi 联网。
  • 一个 USB stick 用以制作安装媒介。
  • ArchWiki 的官方 Arch Linux 安装指南 ArchWiki 作为最为全面与完善的 Linux 使用文档,是使用任何 distro 的 Linux 用户的宝库,我的安装流程 99% 是根据官方指南来的,这篇文章也基本遵循了指南的内容。
  • 一个搜索引擎和一个大语言模型 搜索安装指南中看不懂的东西,直到大概懂是什么意思。
  • 一些耐心

我和我的机器的情况:我的实验室工作包括一部分软件开发,不是特别困难的那种,软件都在 Ubuntu 电脑上跑。我的个人电脑经历了多次 distro hopping,所以我比较熟悉使用指令行工具完成目标任务和基本的 Linux 系统管理,有一些 Linux 系统的最基础知识,我在安装过程中做选择时也参考了一些其它 distros 的做法。我这台笔电的当前系统是 Fedora,五年前的高配置超薄本,配备有第 11 代的 i7,16 GB 的 RAM 和 1 TB 的硬盘,没有独立显卡,无任何 NVIDIA 问题。

我非常推荐官方的安装指南,它在可靠性和时效性上肯定是最好的,照指南说的做基本不会有什么问题。网上还有民间的各种 Arch Linux 安装文章可以参考,但其中有一些我非常不喜欢,这里不特别提是哪个,总之有一份中文的详实安装教程相当 gatekeep-y,它不建议新用户用 Arch Linux 作为入门 distro 是有道理的,但建议人先读某本 Linux 书籍掌握扎实的知识基础后再来安装真的让我有翻白眼的冲动,给我一种物理系男的认为专业课都要打 A 才能做科研的感觉,脑海中都要有作者的人物画像了……反正我认为只要自己乐意花时间,了解风险,做好备份就行了,就算安装失败又怎样?大不了装回去旧系统啊,玩电脑而已,多大个事。吐槽完毕,进入正题!

Pre-installation

制作安装媒介

官方下载页找到最快的镜像下载 ISO 文档和 PGP 签名文档,并验证 ISO:

gpg --keyserver-options auto-key-retrieve --verify archlinux-*.iso.sig archlinux-*.iso

返回的信息中应该包括 Good signature from "Pierre Schmitz <pierre@archlinux.org>"

将准备好的 USB 盘插入电脑,用 lsblk 指令找到它,例如我可以看到我的 USB 盘叫 sda,我的 SSD 硬盘是 nvme0n1。首先 unmount USB 上的 partitions:

sudo umount /dev/sda*

然后制作安装媒介:

sudo dd bs=4M if=PATH/TO/archlinux-version-x86_64.iso of=/dev/sda conv=fsync oflag=direct status=progress

验证启动配置

等它写完后重启电脑进入 BIOS/UEFI setup 界面,我的电脑是按 F2,到处找一找,确保 Secure Boot 显示的 disable,然后从 USB boot,进入安装界面,可以看见 root@archiso ~ #

默认的 console keymap 是美国/国际键盘,可以用 localectl list-keymaps 查看可选项,如果是别的国家的键盘可以相应地更换,例如 loadkeys de-latin1loadkeys uk。指南说可以更换字号来适配高 DPI 屏幕但我试了好几个都比较小就没管了。

验证 boot mode 是 UEFI:

cat /sys/firmware/efi/fw_platform_size

理想情况应该返回 64,表明电脑是从 64 位的 UEFI 开的机。

上线

然后就要联网了,用以太网线或者 WiFi 都行。连 WiFi 的操作:执行 iwctl,然后在 prompt 里面执行 device list 找到 WiFi 网卡设备,一般是 wlan0,它应该显示 powered onmode station 之类的,表明这个接口可以联网,扫描网络!

station wlan0 scan
station wlan0 get-networks

然后可以看到 WiFi 的名字,连上它!

station wlan0 connect "NetworkName"

exit 退出 iwctl,验证已经有网了:ping ping.archlinux.org

验证系统时钟

执行 timedatectl,应该看到 System clock synchronisedtrue 或者 yesNTP serviceactive,不然就 timedatectl set-ntp true 手动激活。

分割硬盘

安装指南在这里提供了一个 tip,说检查扇区大小是最优的,最优的?什么鬼话,赶紧理解一下。在这个硬盘的语境里有两种扇区大小,一个是物理扇区的大小,也就是这个硬件物理上实际上读写数据的最小单位,另一个是逻辑扇区的大小,也就是操作系统这边看到的扇区大小。一般硬盘两个都是 512 B,很摩登高级的硬盘两个都是 4 KB,都没问题,但中间有一个尴尬的情况叫 512e,emulation 的 e,是说硬盘在物理层面上确实是以 4 KB 为一个块(扇区)来处理数据的,但厂家为了兼容会让它对外假装是 512 B 的扇区大小,也就是系统会读到 512 B 的逻辑扇区大小。这种情况主要出现在 SATA 硬盘上,一般的消费级产品没办法,通常改不了只能这样,但是 fdisk 和 GPT(见下面一段)可以把这俩扇区对齐,问题不大。不过,一些企业级或者高性能消费级的 NVMe 硬盘可能支持通过 LBA Format 来切换逻辑扇区大小,这种情况可以考虑把它改成 4 KB。我的这块硬盘的官方平台说只支持 512 B 的扇区,那验证这两个扇区大小都是 512 就好了:

cat /sys/class/block/nvme0n1/queue/physical_block_size
cat /sys/class/block/nvme0n1/queue/logical_block_size

注意 nvme0n1 是我的硬盘名,前面查看过。大家有非常好的硬盘的话可能会读到两者都返回 4096

接下来要分这张碟了,发号施令之前先想想要怎么做!首先系统需要一个分割表来知道硬盘是怎么分的,这张表有两种格式,旧式写法 MBR (Master boot record) 和新式写法 GPT (GUID partition table),前者有最多四个分割区和 2 TB 容量的限制,已经比较落伍了,两者一般分别配合旧式快淘汰的 boot mode BIOS (Basic input/output system) 和新式 UEFI (Unified extensible firmware interface) 使用,跟之前需要验证 UEFI 启动一个道理,UEFI + GPT 是这年头的标准做法了,我们当然按当今流行的方法来,那么这张表要怎么写呢?电脑开机后的流程是走 UEFI 启动,读取 EFI system partition(ESP)里的 boot loader,载入操作系统,所以官方声明至少要分两块,一块 for the root directory,开机后要用的,一块 ESP for booting in UEFI mode,ESP 推荐给 1 GB,4 GB 封顶,举的一个例子中还加入了 4 GB 硬盘 swap 空间,我不使用硬盘 swap,原因见后文关于 swap 的说明,那么这里简单分成必须有的这两块就可以搞定。

根据上面的想法,这个分割的操作应该走这样一个流程:擦除所有已经存在的旧区 ---> 创建一个分割表 ---> 切出 1 GB 的一块给 ESP ---> 剩下的全部分给 root partition。用 fdisk 来动手:

fdisk /dev/nvme0n1

m 可以拉出帮助菜单,首先用 d 送走所有的旧 partitions,这里可能会询问是否删除旧操作系统上的 signature,删掉就好。然后用 g 创建一个 GPT 表,再执行 n 开始创建 ESP,Partition numberFirst sector 都可以直接敲 Enter 过去用默认值,Last sector 这里输入 +1G,表示分配它 1 GB。最后按 t 再输入 1L 可以列出所有可选的类别)来把这个块的类别改成 ESP,这样第一块就完成了。重复这个新建的操作,用 n 来创建第二个块给 root directory,这次三个都 Enter 就可以,Last sector 的 Enter 表示把所有剩下的容量都划给它,最后执行 w 把这些写到硬盘并退出 fdisk,现在执行 lsblk 应该能看到这两块了,我这里显示的是 nvme0n1p1(ESP)和 nvme0n1p2(root),下面都用这两个名字来充当例子。

格盘

ESP 的文档系统必须是 FAT32 格式,不用想直接用 mkfs 来这样格式化它:

mkfs.fat -F 32 /dev/nvme0n1p1

对于 root partition,最常见的文档系统格式是两种,Ext4Btrfs(太难打了这个词,它是 B-tree file system 的缩写),Ext4 是 Linux 上最传统最历经检验的标准文档格式,Btrfs 要新一些,支持更多功能,例如透明压缩和快照,允许回滚到之前的状态。我选择的是 Btrfs,因为 Arch Linux 是滚动释出的,之后配置上快照功能万一滚挂了可以从快照滚回去,这个皇帝不是登基就完事了的,登完基还要维持这台电脑啊,决定好了就动手!

mkfs.btrfs /dev/nvme0n1p2

这里有一个坑——我忘记了建立子卷,见文章最后关于配置快照的讨论。

装载文档系统

现在我们有已经格式化好的可以用来储存数据的硬盘空间了,但新系统需要一个装载点来入到那个空间去安装。首先来装载 root partition:

mount /dev/nvme0n1p2 /mnt

之后任何 mount points 都要在 /mnt 下。注意,现在还是在从 USB 启动的 live 环境中,这个环境是有它自己的 root directory / 的,/mnt 在这里只暂时充当新系统的 root directory,等装好后进入新系统时,fstab(后面会创建)会告诉系统把 root partition 装载到真正的 / 而不是 /mnt 这个安装过程中的临时 mount point。

然后创建 boot directory 在 /mnt 下以及装载 ESP:

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

Installation

虽然已经敲了这么多七七八八的东西,很明显系统本身还没开始安装,我们才刚刚有可用的硬盘空间来装系统。

选择镜像服务器

所有的包都要从镜像服务器那来下载。查看可用的镜像:

cat /etc/pacman.d/mirrorlist

这里我使用 reflector 来创建一个 mirrolist,用 reflector --list-countries 可以列出所有有镜像的国家。注意,ArchWiki 不觉得按照国家来筛选是好主意,因为同一个国家的镜像服务器很可能有限,网速也不完全由地理位置决定,但我下载 ISO 档时已经试过了,速度测试排行最前的本地镜像是比快的,所以我仍然过滤了其它地区的镜像,只保留在过去 24 小时内与主服务器同步了的本地 HTTPS 镜像并按速度排序:

reflector --country GB --age 24 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

这个在系统装好之后可以再去修改优化。

Basic installation

正式的安装在这里!安装 Linux kernel 和常见硬件的固件:

pacstrap -K /mnt base linux linux-firmware

这里可能出现一些警告,但基本都是正常的。vconsole.conf 相关的警告是说还没配置键盘布局,后面系统装好了加上就好,No fsck helpers found 可以忽略,Btrfs 不用这个,但它要装别的工具包。CPU microcode,network manager,文本编辑器什么的都可以在这里装,我是后面进入新系统后装的,因为我习惯用 pacman 一点,没什么差别,总之系统本身就这样飞快地装完了,登基大典已经过半。

Configure the OS

生成 fstab

就像前面装载文档系统说的一样,我们需要让系统知道开机启动时自动装载哪些东西,做这件事的文档就是 fstab。执行

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

genfstab 探测我们在前面装载的 /mnt 和在 /mnt下的 partitions 并为它们生成条目,用 UUIDs 来识别。同样,因为还在 live 安装环境里所以 /mnt 仍在充当临时 root directory。

进入新环境

到这里终于可以(部分)退出 USB 的 live 安装环境了,chroot 是 change root 的意思,执行

arch-chroot /mnt

来换工作环境,与新系统对话!

时区与本地化

设置,例如伦敦时区(用 timedatectl list-timezones 可以列出所有可用的时区):

ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime

然后执行 hwclock --systohc 让硬件时钟与系统时钟同步,这样每次开机时钟才会准确。

直到这里,我们都还没有编辑过任何文本,这在设置本地化时是需要的,所以先安装一个文本编辑器,nano 是最简单的,vim 很流行,这里用 nano 做例子,先安装它:pacman -S nano,然后执行 nano /etc/locale.gen 来 uncomment 目标地区行(可以选择多个)并保存,再用 locale-gen 来生成这些选定的区域设定。最后,新建一个 locale config 文档来让系统知道平常用哪个,例如

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

与在安装环境中刚开始时设置的一样,配置键盘布局,例如你有一个德文键盘

echo "KEYMAP=de-latin1" > /etc/vconsole.conf

然后用 mkinitcpio -P 来重建 initramfs(Initial RAM file system,帮助 Linux kernal 在开机启动时正确找到硬盘上的 root partition 并装载),如果更改了默认键盘布局的话。

网络配置

为了方便在网络中识别这台电脑,先起一个电脑名,比方说叫它 myarch

echo "myarch" > /etc/hostname

然后安装一个 network manager 例如最常见的:pacman -S networkmanager,并让它开机自启动:

systemctl enable NetworkManager

设置 root 密码

俗称的 sudo 密码,设置很直接,用

passwd

按提示输两次就行了。

Boot loader

systemd-bootGRUB 是最常用的 boot loaders,前者简单,后者功能更丰富,可配置的更多。目前主流的 Linux distros 几乎都是用的 GRUB2。systemd-boot 要新一点,是不支持传统 BIOS 启动的,对 MBR 的支持也有限,不过也没啥人装 Arch 还会用这俩了。我出于 keep it simple for now 的想法在这一步选择了 systemd-boot,它已经内建于 systemd

安装 systemd-boot 到 ESP:bootctl install,新建配置文档:nano /boot/loader/loader.conf。因为我们在这里已经是在跟新环境对话了,所以 ESP 是直接装载在 /boot 下的而不再是前面的临时 /mnt/boot。我的配置如下:

default arch.conf
timeout 3
console-mode auto
editor no

然后新建启动条目:nano /boot/loader/entries/arch.conf,因为不好直接复制 root partition 的 UUID,把它直接 append 到我的启动条目先:

blkid -s UUID -o value /dev/nvme0n1p2 >> /boot/loader/entries/arch.conf

然后配置启动条目:

title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=UUID=[MY-ROOT-UUID] rw

创建普通用户

我们不想用 root user 来执行每个指令,它的权限太高了,皇帝也会出错,意外的误操作可以破坏系统。在载入新鲜安装的系统前,更合理的办法是新建一个 unprivileged 一般用户,例如用户 matrix 酱,将其加入管理员群组(wheel 组),通过 root 密码进行权力下放(当皇帝也可以民主但权力下放给了我自己),让这个组的成员可以借用管理员权限:

useradd -m -G wheel -s /bin/bash matrix

这里我将默认 shell 设置成了 bash,可以按个人习惯选择 zsh,fish 等,再设置这个用户的登录密码:passwd matrix。让 wheel 群组可以使用 sudo 指令:

pacman -S sudo # 安装 sudo 先

用 nano 编辑 sudoer 文档:EDITOR=nano visudo,uncomment 这一行:%wheel ALL=(ALL:ALL) ALL

到这里基本的配置就完成了,现在可以执行 exit 退出 chroot,然后卸装各 partition:umount -R /mnt,最后 reboot 登基!电脑黑屏后火速把 USB 盘拔了让新系统从硬盘启动。

Post-installation

上线

又输入了很多行指令,但这个系统离一个日常可用的衬手操作系统还是有一段小小的距离,开机后输入用户名和密码仍然还在 terminal 里打转,总之现在得先连上网才能装各种包,当本地局域皇帝有什么意思!列出可用的网络:

nmcli device wifi list

找到 WiFi 连上:

nmcli device wifi connect "NetworkName" password "WiFiPassword"

然后 ping 一下验证已联网:ping ping.archlinux.org

Essential packages

除了在前面已经装的 networkmanagernanosudo,还有一些基本的包是肯定要装的。刚刚才登上基,先心狠手辣地更新一下朝堂面貌吧:

sudo pacman -Syu

再着手处理各项悬而未决的关键政务。我 root partition 用的 Btrfs 文档格式,添加必需的 Btrfs 工具包

sudo pacman -S btrfs-progs

并重建 initramfs

sudo mkinitcpio -P

安装 CPU 的 microcode 固件更新包,英特尔 CPU:sudo pacman -S intel-ucode,AMD 走这边:amd-ucode,并把它加到 boot loader 条目 /boot/loader/entries/arch.conf 中:

title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img # 这里
initrd  /initramfs-linux.img
options root=UUID=[MY-ROOT-UUID] rw

特别注意,这个 microcode 必须在 initramfs 前面载入,kernel 载入后立即需要套用 microcode,用固件被修正过的 CPU 来处理 initramfs。

我是一位偶尔打游戏的皇帝,Steam 需要一些 32 位的包,先启用安装它们的 repo:

sudo nano /etc/pacman.conf

uncomment 这些:

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

然后安装英特尔集成显卡需要的包

sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel intel-me

桌面环境

赶紧来个 GUI 有点颜色吧!这就装上政务大殿——

sudo pacman -S cosmic

关于桌面环境的选择,可以参考这篇博客ArchWiki 关于桌面环境的介绍。启用 COSMIC greeter(登录界面):

sudo systemctl enable cosmic-greeter

reboot 正式上朝!

Tweaks

ArchWiki 有一个安装系统后的系统管理建议页面可以参考,这里写一些我认为是丝滑当皇帝所必要的东西。

镜像优化

优化安装时创建的 mirrorlist。安装在 live 安装环境中用过的 reflector:

sudo pacman -S reflector

镜像服务器筛选中加入我测试过的有比较快的镜像的周边国家重新排序:

sudo reflector --country 'GB,FR,NL' --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

刷新 package lists:

sudo pacman -Syyu

用户目录

这个朝堂还没有格局,我需要常见的 Documents/Downloads/ 等目录:

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

电源管理

可以和 DE 集成的电源管理工具其实不太多,TLP 看起来比 power-profiles-daemon 能更全面地 handle 功耗问题,并且从 1.9 版本开始发布了 tlp-pd,解决了 DE 集成的问题,装它试试!(它还需要 upower)

sudo pacman -S tlp tlp-pd upower

然后按照它 documentation 说的启用:

sudo systemctl enable --now upower.service
sudo systemctl enable --now tlp.service
sudo systemctl enable --now tlp-pd.service
sudo systemctl mask systemd-rfkill.service systemd-rfkill.socket

内存管理 - swap

写到这里,已经没有人记得我在登基前分割硬盘时并没有切一块用来 swap 了。这里首要的问题当然是,什么是 swap?以及,这个东西我是一定要有吗?ArchWiki 对 swap 有详细的说明。我的理解是它是内存管理的一部分,当内存告急(还没到要满但有点紧张)的时候,kernel 可以把不重要的最近不活跃的背景程序的数据写进 swap 空间,腾出一些内存来给现正忙活的程序,它当然不能代替更多的 RAM,电脑该升级还是要升级啊,但这样系统会有一些缓冲的余地,不会马上崩溃。

那要怎么 swap out 呢?传统的方法很简单,各位皇帝在分硬盘的时候就大手一挥分配个,例如 4 GB,给 swap partition,系统直接把数据写到硬盘上。用过三星设备的朋友可能知道 One UI 里有个 RAM Plus 功能,我猜测它就是硬盘 swap。现在的硬盘容量都比较大了,分出一些没关系,但问题是硬盘哪有 RAM 读写快?频繁 swap 会让系统卡顿(到这个程度是真的该买新电脑了)。一种摩登做法是 swap on zram,zram 在 RAM 里虚拟一个 block device 例如 /dev/zram0,就像我的 root partition /dev/nvme0n1p2,写入的数据自动压缩。这样系统看到这个 block device 以为自己是在往硬盘挪数据,实际上数据压缩后还是存在 RAM 里,很显然,这样做最大的优点就是 RAM 对 RAM 的操作要快得多,但要消耗 CPU。第三种主流方法就是结合以上两种,zswap 就是这样做的,先往内存里塞,塞不下了再丢到硬盘上。

回答完了什么是 swap 的问题,再说说是不是一定要分配 swap 空间。这篇文章对 swap 有非常细致的讨论,说实话看不太懂,我尝试囫囵吞枣后的结论就是,是的没错,最好有 some swap of some kind,即使有很多 RAM,swap 也能让系统更高效地利用它。

我的电脑有 16 GB 的 RAM,不算特别充足但日常上上网基本够了,我在过去的使用中就发现我的 swap 空间在大多数时候都是空闲的,而且我不用休眠到硬盘的功能,那么又一次想 keep it simple,单纯 swap on zram 是一个比较适合我的选择。zram-generator 可以用来生成一个 zram device,安装它:sudo pacman -S zram-generator,然后新建配置文档 sudo nano /etc/systemd/zram-generator.conf,我分配了 8 GB 给它:

[zram0]
zram-size = min(ram, 8192)

启用它:

sudo systemctl daemon-reload
sudo systemctl start systemd-zram-setup@zram0.service

执行 zramctl 查看刚刚创建的 zram,swapon --show 可以列出所有的 swap。

swap on zram 的计算和硬盘 swap 有些不同,如果我直接划了 8 GB 在硬盘上,那我是有 16 + 8 = 24 GB 的有效内存能用的,只是这额外 8 GB 要慢不少,但实打实是多出来了 8 GB 的,而 8 GB zram 的意思是可以压缩 8 GB 的原始数据,压缩完是多少不知道,已经压缩的数据压缩效果不太好,文本类数据的压缩率可以很高,能压多少就是挣了多少,比如,8 GB 压得很好压成了 3 GB 就等于我多出了 5 GB 能用,现在有 16 + 5 = 21 GB 的等效内存,但这个压缩率不能保证,下次可能只能压成 6 GB,但 zram 不会提前拿走它那被分配的 8 GB,压成多少占多少,所以 zram 可以和真的 RAM 一个大小。当然,所有的种种 swap 分配都只是内存管理的一部分,不能替代真 RAM。

顺便,可以装上 btm 来监测系统各项资源使用情况:sudo pacman -S bottom

防火墙

皇帝会担心总有奸臣要害朕,防火墙还是要装一个的。基本的防火墙功能 ufw 足够了,为了将来的扩展性,我暂时选择 firewalld:

sudo pacman -S firewalld
sudo systemctl enable --now firewalld

蓝牙与多媒体

我的蓝牙鼠标还不能用,我还不能播放音乐,让蓝牙包和音频包升官上朝:

sudo pacman -S bluez bluez-utils sof-firmware pipewire pipewire-pulse pipewire-alsa wireplumber

合格的皇帝知道每天在朝堂上需要看见什么,开机启用它们:

sudo systemctl enable --now bluetooth
systemctl --user enable --now pipewire pipewire-pulse wireplumber

PipeWire 默认采样音频到 48 kHz,但是我的小 USB dongle 支持更高品质的音频档,看不出来吧这位皇帝还追求一点音质,来配置一下它:

mkdir -p ~/.config/pipewire
cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire

然后在 ~/.config/pipewire/pipewire.conf 里 uncomment 这行并添加更多采样率:

default.clock.allowed-rates = [ 44100 48000 88200 96000 176400 192000 ]

VLC 和 MPV 是两大流行媒体播放器,我很少看本地视频,再次出于 keep it simple 的想法装个轻量的先:

sudo pacman -S mpv

外部储存装置

电脑需要访问文档系统格式不同的外部硬盘和我的安卓手机:

sudo pacman -S ntfs-3g exfatprogs udisks2 gvfs-mtp gvfs

浏览器

皇帝也是要上网冲浪的,安装浏览器和区域设定:

sudo pacman -S firefox firefox-i18n-en-gb

这个朝堂还要讲中文,处理包括方块字在内的字体显示问题:

sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji

中文输入

在 Linux 上输入中文不是那么平常的事情。两个主流的输入法框架是 Fcitx5IBus,我都用过,感觉前者的中文输入更好用,Fcitx5 有中文插件,但这次我打算使用 Rime 输入法编辑器,它的功能更丰富,后面我可以再配置词库。安装:

sudo pacman -S fcitx5-rime fcitx5-configtool rime-double-pinyin

我打双拼,所以安装的是 rime-double-pinyin,其它支持的中文输入方式有这些

新建配置文档配置 Rime:

mkdir -p ~/.local/share/fcitx5/rime
nano default.custom.yaml

设置我习惯的微软双拼,每页显示拔个候选词:

patch:
  schema_list:
    - schema: double_pinyin_mspy
  menu:
    page_size: 8

/usr/share/rime-data/build/ 下面有目前支持的所有 schema。

redeploy 应用配置:

rm ~/.local/share/fcitx5/rime/default.yaml
fcitx5-remote -r

没有 default.yaml 的话第一行不用跑。

配置微软双拼:

nano ~/.local/share/fcitx5/rime/double_pinyin_mspy.custom.yaml
patch:
  switches:
    - name: ascii_mode
      reset: 0
      states: ["中文", "西文"]
    - name: full_shape
      states: ["半角", "全角"]
    - name: simplification
      reset: 1 # 默认简体中文
      states: ["漢字", "汉字"]
    - name: ascii_punct
      states: ["。,", ".,"]

  speller/algebra/+: # 这块是我的模糊音设置
    - derive/^n/l/
    - derive/^l/n/
    - derive/n$/;/
    - derive/;$/n/
    - derive/f$/g/
    - derive/g$/f/

设置环境变量让不同的程序都可使用 Fcitx5 作为输入法:

mkdir -p ~/.config/environment.d
touch fcitx5.conf
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

COSMIC 支持 Wayland 原生 text-input protocol,GTK 程序可以透过它直接跟输入法沟通,不用麻烦设置 GTK_IM_MODULE=fcitx

最后设置 XDG 开机自启动:

mkdir -p ~/.config/autostart && cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart

并打开 Fcitx5 configuration 添加 Rime。

常用软件

ArchWiki 同样还有应用列表页面供参考。我的主力软件只是浏览器,Firefox 已经在前面安装了,平常有时玩游戏在 Steam 上面,各种需要的包到这一步也都已经装好了,现在简单 sudo pacman -S Steam 就能用了,兼容层可能要换成 Proton Hotfix,至少对一部分游戏,因为 Arch 滚太快啦!位图编辑器可以用 GIMP,矢量图编辑区有 Inkscape。我喜欢的指令行工具和 shell 装饰有 zoxide,bat,fd,ripgrep 和 starship,代码编辑器用的 zed。日常的系统维护可以看 ArchWiki 的建议,一年到头需要手动干预的升级可能就几次,一般使用应该不会有什么大问题。

最后,我的登基感受就是,这自由搭乐高的体验,测二维材料的收到礼物都哭了!而且我的安装时机真的正正好,现在 Linux 的使用要友好很多了,COSMIC 作为新 DE 是在这个月才发布的第一个稳定版,tlp-pd 也是在这个月初发布的。这篇文章记录了主要的安装过程,主打一个「不能相信我现在忘记事情有多快得赶紧写下来」,我还有一些东西没有 set up 好,包括

  • 安装 yayparu 为了 AUR
  • Rime ice 中文词库
  • 自动更新 mirrorlist
  • 启用快照以回滚系统:算是难题。一是 systemd-boot 不像 GRUB 一样支持在启动菜单选快照,但我不拒绝用 Live USB 恢复,这是小问题,更大的问题是我分完硬盘忘了建立子卷布局,现在需要新建一些子卷再把现有资料给搬进去,还要想想快照工具是选 Snapper 还是 Timeshift,倾向是前者,但系统没有这么容易坏吧!拖着先。

关于这些待办,再看看是后续更新这篇文章还是新写单独的文章吧,这个皇帝先当到这里!退朝!

All Rights Reserved|Built with Zola & Serene