cover.webp

前言

今年 10 月底,我选择了 Windows 11 IoT LTSC 作为操作系统,几个月以来,基本没什么大问题。但是:

  • 即使我停用了 Windows 更新,它依然可以在我的硬盘「拉屎」
  • 垃圾 WinGet 和 UWP Store 深度绑定,好一个「奸夫淫妇」!
  • Scoop 这个 Windows 的第三方「包管理器」差不多完全陷入停滞

几乎没有什么应用程序对我来说是非 Windows 不可了,所以!是时候拥抱 Linux Desktop 了。

先花了半天时间,按照 Arch Wiki 一步步完成了 Arch Linux 2025.12.01 的安装,桌面环境选择了 KDE Plasma。

体验了大半天,我的总结是:

  • 我大概已经开始缺乏从头开始折腾的精力
  • 也许我不需要这么激进的更新策略
  • AUR 是好文明,几乎啥都有,社区也好活跃
  • Arch Wiki 和 Arch Linux 中文维基是 非常棒 的文档,即使是其他发行版也可以在这里找到最详细、最前沿的解决方案和思路

回顾之前使用 Fedora Workstation 的体验,虽然它和 GNOME 的组合并非完美,但就目前的情况来看,它应该是最适合我的选择。或许,我值得再试一试?

制作镜像和启动方式再此略过,Fedora 默认支持安全启动(可能要打开允许第三方 CA 导入)。此外,我不喜欢默认的 Btrfs 文件系统,因为没有快照需求(当然,这是很不健康的实践),分区方案如下:

nvme0n1     953.9G  0 disk 
└─nvme0n1p1 953.9G  0 part /data      ext4  
nvme1n1     931.5G  0 disk 
├─nvme1n1p1     2G  0 part /boot      vfat
├─nvme1n1p2     1G  0 part /boot/efi  ext4
└─nvme1n1p3 928.5G  0 part /          ext4

图形化安装和其他 Linux 发行版没什么区别,很快就安装完成了。

基本配置

镜像源

安装完成启动后进入初始化向导,询问启用第三方软件源,直接跳过,否则系统界面会失去响应(此前在 Fedora 42 上也是这样)

使用 USTC(或 TUNA)的 Fedora 镜像源、Flathub 缓存镜像源:

sudo sed -e 's|^metalink=|#metalink=|g' \
         -e 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=https://mirrors.ustc.edu.cn/fedora|g' \
         -i.bak \
         /etc/yum.repos.d/fedora.repo \
         /etc/yum.repos.d/fedora-updates.repo

# RPMFusion
sudo dnf install https://mirrors.ustc.edu.cn/rpmfusion/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.ustc.edu.cn/rpmfusion/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

# refresh cache
sudo dnf clean all
sudo dnf makecache

# flathub
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
sudo flatpak remote-modify flathub --url=https://mirrors.ustc.edu.cn/flathub

进行一次软件包更新

sudo dnf upgrade --refresh

更改主机名

比如更改主机名为 fedora

sudo hostnamectl set-hostname fedora

一些优化

让 NetworkManager 别等了

sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl mask NetworkManager-wait-online.service

软件中心别吵我

gsettings set org.gnome.software download-updates false
gsettings set org.gnome.software download-updates-notify false

关闭资源管理器记住最近文件

gsettings set org.gnome.desktop.privacy remember-recent-files false

硬盘读写权限

第二块 SSD 设置了挂载点 /data 作为数据盘使用,默认用户组 root 不利于日常使用,设置为普通用户

sudo chown -R 1000:1000 /data

中文输入法

GNOME 默认自带中文输入法,以前用过体验并不太好。这里使用 Fcitx5 输入框架和 Rime 输入引擎,输入方案选择 雾凇拼音 ,皮肤就不用了,默认的在 GNOME 下就已经很好看了。

sudo dnf install fcitx5 fcitx5-gtk fcitx5-qt fcitx5-rime librime-lua fcitx5-configtool

下载雾凇拼音输入方案

git clone https://github.com/iDvel/rime-ice.git ~/.local/share/fcitx5/rime --depth=1

添加中州韵输入法,重新部署后和其他平台的 Rime 输入法使用体验基本一样

fcitx5-configtool

PS:GNOME 需要安装插件 kimpanel 后,才能在状态栏正常显示托盘图标(包括输入法指示器)。

关闭 SELinux

对于系统安全来说,禁用 SELinux 不是一个好的习惯,但是我确实不太喜欢这个,所以将它彻底关闭。

sudo vim /etc/selinux/config
# edit this
SELINUX=permissive

添加 SELinux 禁用参数

sudo vim /etc/default/grub

找到 GRUB_CMDLINE_LINUX_DEFAULT 添加 selinux=0

更新引导

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

下次重启后 SELinux 就会被彻底关闭了。

更新固件

通过 LVFS (Linux Vendor Firmware Service) 更新硬件设备固件

fwupdmgr refresh --force
fwupdmgr get-updates
fwupdmgr update

美化调整

GNOME 插件和优化

sudo dnf install gnome-extensions-app gnome-tweaks

以前用 GNOME 每次更新挂一堆拓展,我只安装了几个来保证基本的实用功能。

gnome-plugins.webp

安装常用软件

Google Chrome

sudo dnf install fedora-workstation-repositories
sudo dnf config-manager --set-enabled google-chrome
sudo dnf install google-chrome-stable

Hugo

看起来 Fedora 上面的版本不是最新,但是没有问题

sudo dnf install hugo

cloudflared

用于使用 Cloudflare Tunnel 的 SSH,用于访问我的 Forgejo 示例

curl -fsSl https://pkg.cloudflare.com/cloudflared.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
sudo dnf install cloudflared

Evolution Mail

GNOME 原生的电子邮件客户端,支持 GPG、S/MIME,支持 EWS 协议,非常适合我

sudo dnf install evolution evolution-ews

Docker CE

sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker

Steam

确保已开启 RPMFusion Nonfree 软件源,使用 Proton 后大部分游戏应该都能玩,详阅 Fedora 文档

Steam Linux 只有 32 位包(即 i686),如果讨厌太多 32 位依赖「污染」你的系统,也可以考虑使用 Flatpak 安装 Steam。

sudo dnf install steam
# 首次启动请通过终端
__GL_CONSTANT_FRAME_RATE_HINT=3 steam

Firewall GUI

这是 Fedora 官方推荐的防火墙可视化管理工具

$ sudo dnf install firewall-config

Flatpak 是个 Linux 下的沙盒运行环境,以下软件建议通过 Flathub 安装

  • Dialect :一款简洁的 GNOME 翻译工具,支持多种在线翻译引擎(很适合 GNOME 桌面)

  • Gradia :快速美化截图的工具,添加渐变背景、阴影、标注等

  • 网易云音乐(Gtk4 版) :Linux 原生的网易云音乐播放器,界面简洁,支持歌单、播放等核心功能。

  • Flatseal :图形化管理 Flatpak 应用权限的工具,能精细控制每个应用的沙盒访问权。

  • QQ :Flatpak 打包的 QQ,使用 NT 核心

  • WeChat :Flatpak 打包的微信

  • Yubico Authenticator :YubiKey 硬件密钥配套的桌面验证器

  • Typora :所见即所得的 Markdown 编辑器

  • Crow Translate :轻量级翻译工具,支持选中文本翻译、OCR 和语音朗读(感觉更适合 KDE Plasma)

  • KeePassXC :跨平台的本地密码管理器,安全加密存储密码,支持自动填充

  • LocalSend :跨平台局域网文件传输工具,类似 AirDrop,无需联网,安全快速

  • Thunderbird :Mozilla 出品的开源邮件客户端,支持多账户、日历、RSS 等功能

以下软件虽然在 Flathub 上有打包,但是体验下来会有一些问题,建议通过 RPM 包手动安装

  • Bitwarden 通过 Flatpak 安装的会有权限问题
  • YesPlayMusic 通过 Flatpak 安装的字体显示有问题,修复权限后歌词界面加载不出来

禁用网络连通性检测

当开启了 Tun 模式后,会影响系统的网络连通性检测,表现为

before.webp

虽然并不影响使用,但是看着很难受(有没有当年 Android 刷类原生的感觉😆?)解决方法很简单,把网络连通性检测关闭就行了

sudo vim /etc/NetworkManager/conf.d/90-disable-connectivity.conf

添加

[connectivity]
enabled=false

重启 NetworkManager 服务

sudo systemctl restart NetworkManager

现在舒服多了

after.webp

使用 Yubikey

Yubikey Authenticator

使用 Flatpak 安装即可

flatpak install flathub com.yubico.yubioath

使用 OpenPGP 应用

# import my PGP public key
curl -fsSL https://pgp.dejavu.moe/ | gpg --import -

# general conf
wget https://raw.githubusercontent.com/drduh/YubiKey-Guide/master/config/gpg.conf -O ~/.gnupg/gpg.conf
chmod 600 ~/.gnupg/gpg.conf

和往常一样设置 Git 信息

git config --global user.name <username>
git config --global user.email <email>
git config --global user.signingkey <keyid>
git config --global commit.gpgsign true
git config --global gpg.program /usr/bin/gpg

安装智能卡相关工具

sudo dnf install gnupg pcsc-lite pcsc-lite-ccid gnupg2-scdaemon pcsc-tools

启动智能卡连接服务

sudo systemctl enable --now pcscd

一些必要配置

vim ~/.gnupg/scdaemon.conf
# add
disable-ccid
pcsc-shared

# GPG Agent Config
vim ~/.gnupg/gpg-agent.conf
# add
ttyname $GPG_TTY
enable-ssh-support
allow-loopback-pinentry
# I prefer pinentry-curses
pinentry-program /usr/bin/pinentry-curses
#pinentry-program /usr/bin/pinentry
#pinentry-program /usr/bin/pinentry-qt
#pinentry-program /usr/bin/pinentry-gnome3
#pinentry-program /usr/bin/pinentry-tty
#pinentry-program /usr/bin/pinentry-x11
# the cache TTL not work for Smartcard?
default-cache-ttl 600
max-cache-ttl 7200

# list all keygrip
gpg -K --with-keygrip
# add to sshcontrol 
vim ~/.gnupg/sshcontrol 

设置环境变量

# ~/.bashrc or ~/.zshrc
# SSH GPG Agent for Yubikey
export GPG_TTY=$(tty)
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
gpgconf --launch gpg-agent
gpg-connect-agent updatestartuptty /bye > /dev/null

# then
source ~/.zshrc
# or
source ~/.bashrc

最后

sudo systemctl restart pcscd
gpgconf --kill all && gpgconf --launch gpg-agent

目前碰到唯一的问题是 OpenPGP 应用的 PIN 每次都要输入,缓存时间似乎没用,查阅了相关手册暂时没找到解决方法😣。

系统美化

安装字体

补全 Noto Fonts 系列

sudo dnf install google-noto-sans-cjk-fonts google-noto-serif-cjk-fonts

挑选了比较喜欢的几个字体作为系统字体安装

整理一下

~/Downloads/fonts tree
.
├── Harmony-OS-Sans
│   ├── HarmonyOS-Sans-Black.ttf
│   ├── HarmonyOS_Sans_Bold.ttf
│   └── HarmonyOS_Sans_Regular.ttf
├── Maple-Mono-NF-CN
│   ├── MapleMono-NF-CN-BoldItalic.ttf
│   ├── MapleMono-NF-CN-Bold.ttf
│   ├── MapleMono-NF-CN-Italic.ttf
│   └── MapleMono-NF-CN-Regular.ttf
└── OPPOSerif
    └── OPPOSerif.ttf

4 directories, 8 files

开始安装

# 创建系统字体子目录
sudo mkdir -p /usr/local/share/fonts/HarmonyOS-Sans
sudo mkdir -p /usr/local/share/fonts/MapleMono-NF-CN
sudo mkdir -p /usr/local/share/fonts/OPPOSerif

# 复制文件
sudo cp ~/Downloads/fonts/Harmony-OS-Sans/*.ttf /usr/local/share/fonts/HarmonyOS-Sans/
sudo cp ~/Downloads/fonts/Maple-Mono-NF-CN/*.ttf /usr/local/share/fonts/MapleMono-NF-CN/
sudo cp ~/Downloads/fonts/OPPOSerif/*.ttf /usr/local/share/fonts/OPPOSerif/

# 设置权限和 SELinux(Fedora 必须)
sudo chown -R root: /usr/local/share/fonts/*
sudo chmod 644 /usr/local/share/fonts/*/*.ttf
sudo restorecon -vFr /usr/local/share/fonts/

# 刷新缓存
sudo fc-cache -fv

主题和图标

vinceliuice 是一位来自中国的设计师(使用 Linux),他设计的主题和图标包都非常棒。

  • 图标主题:WhiteSur-icon-theme
  • 全局主题:WhiteSur-gtk-theme

另请参阅 Linux 下 Intel 核显驱动配置与硬件加速

参考资料