说到 Fedora Silverblue,我脑海里首先浮现的是那种“既爱又恨”的复杂情感。爱的是它那套不可变的系统架构,每次更新都像给飞船换个引擎,重启一下,全新的世界就来了,而且由于有快照,回滚变得前所未有的简单;恨的是,随着时间推移,那个看似完美的“只读”外壳下,堆积的垃圾和臃肿的扩展可能会让你的机器跑得像老牛拉破车。
你是不是也遇到了这种情况?刚装好的时候,Silverblue 飞快,界面丝滑。用了半年,打开一个文件夹要转圈,切换应用有延迟,甚至风扇呼呼作响。别急,这不是硬件问题,是“软件脂肪”太多了。今天咱们不聊那些枯燥的理论,就聊聊怎么给 Silverblue “刮油”,让它重新找回年轻时的活力。
清理 Btrfs 快照:释放被占用的空间
Silverblue 的灵魂是 ** rpm-ostree ** 和 ** Btrfs ** 快照。每次系统更新,Btrfs 都会创建一个新的根子卷快照。旧的系统虽然被标记为“过期”,但它们依然占据着你的硬盘空间。如果不清理,这些快照会像石头一样拖累你的系统,不仅占地方,还可能影响文件系统性能。
首先,你得知道现在有多少“石头”压着你的系统。打开终端,运行这个命令:
sudo snapper list
你会看到一堆编号的快照。大多数情况下,你看不到太多有用的东西,因为 Silverblue 默认使用 ** timeshift ** 或 ** grub-btrfs ** 来管理这些快照,而不是传统的 snapper(虽然有些安装方式会带 snapper)。更直接的方法是查看 rpm-ostree 的状态:
rpm-ostree status
输出里会显示当前运行的版本(deployed)和可用的新版本(staged)。那些被标记为 “deleted” 或者不在部署列表中的旧版本,就是可以清理的对象。
要清理这些旧版本,使用以下命令:
sudo rpm-ostree cleanup --rebase
这个命令会删除所有未使用的部署条目,并精简 Btrfs 子卷。如果你想更彻底,可以加上 --prune 标志,但这通常不是必需的,因为 rpm-ostree 自带自动清理机制。不过,手动执行一次能让你心里更有底。
除了系统快照,Flatpak 应用 也是空间大户。每次你更新 Flatpak 应用,旧的版本并不会自动删除,它们堆积在 .local/share/flatpak/objects 目录下。你可以用这个命令来清理:
flatpak uninstall --unused
这会移除那些不再被任何应用依赖的运行时和库,通常能释放出几 GB 的空间。
精简 GNOME 扩展:告别“功能过剩”
GNOME 桌面环境本身已经很简洁了,但很多用户喜欢安装扩展来“个性化”它。问题是,很多扩展不仅添加了功能,还添加了代码执行逻辑,每次桌面渲染时都在后台运行,消耗 CPU 和内存。
我见过最典型的情况是,用户安装了十几个扩展,有的用来管理窗口,有的用来美化状态栏,有的用来调整快捷键。结果呢?鼠标移动时有轻微的卡顿,切换工作区时掉帧。
要解决这个问题,我们需要做一次“断舍离”。首先,列出所有已安装的扩展:
gnome-extensions list
然后,逐个分析它们的作用。一个实用的技巧是:禁用所有扩展,然后一个一个重新启用,观察系统性能的变化。这个过程可能有点繁琐,但非常有效。
对于那些你偶尔用一次,但大部分时间都开着的功能,可以考虑寻找更轻量的替代方案,或者直接去掉。比如:
- Alternative Tab:如果你不需要复杂的窗口切换器,GNOME 自带的 Alt+Tab 其实已经够用了。
- Workspace Indicators:如果你不常用多个工作区,这个扩展可能只是在你每次切换时增加了一点开销。
- System Monitor:这个扩展很流行,但它会持续监控 CPU 和内存,并绘制图表。如果你只是偶尔看一眼,不如用 GNOME 自带的“活动”概览,或者直接打开终端使用
htop。
还有一个值得注意的点是 ** GNOME Tweaks ** 中的设置。有些视觉效果,比如“取消窗口最小化”或“窗口抖动”,在旧硬件上可能会造成明显的性能下降。你可以打开 Tweaks,检查“外观”和“工作区”相关的设置,关闭那些不需要的动画效果。
优化 systemd 服务:让后台进程安静下来
Silverblue 基于 Fedora,默认启用了许多 systemd 服务。对于普通用户来说,有些服务是必要的,但有些可能完全是多余的。比如,如果你不用蓝牙打印机,那么 cups 和 bluetooth 服务就是在空转。
然而,在 Silverblue 中,你不能直接 systemctl disable 系统服务,因为根文件系统是只读的。你需要通过 systemctl --user 来管理用户级服务,或者使用 rpm-ostree 来覆盖系统配置。
一个更简单的方法是检查哪些用户服务占用了大量资源:
systemctl --user list-unit-files --state=enabled
看看有没有你不需要的服务,比如 pulseaudio(如果你用 PipeWire,这是默认的,但确保它没有重复启动)、xdg-desktop-portal(如果你不用 Flatpak,可能不需要某些后端)等。
如果你发现某些服务确实不需要,可以尝试禁用它们:
systemctl --user disable --now some-service.service
注意,这只是禁用用户级服务。对于系统级服务,你需要谨慎操作。如果你确定某个系统服务(如 lprofspd、tuned 等)在你的使用场景下没有意义,可以通过创建一个 override 文件来禁用它,但这需要一定的 Linux 功底。
调整内核参数:挖掘硬件潜力
有时候,系统慢不是因为软件臃肿,而是因为内核参数设置得过于保守。Fedora 默认的内核参数适合大多数情况,但在某些场景下,你可以做一些微调。
首先,检查你的交换空间设置。如果你有大量的内存(比如 16GB 以上),并且几乎不用交换空间,你可以调整 vm.swappiness 参数,让它更倾向于使用内存而不是交换。
sysctl vm.swappiness
如果值很高(比如 60),你可以尝试降低它:
sudo sysctl -w vm.swappiness=10
为了让这个设置永久生效,你需要编辑 /etc/sysctl.d/99-custom.conf 文件,添加:
vm.swappiness=10
另一个值得关注的参数是 vm.vfs_cache_pressure,它控制内核回收 dentry 和 inode 缓存的倾向。默认值 100 意味着内核会及时回收这些缓存,但对于频繁访问文件系统的场景,适当提高这个值(比如 200)可以保留更多缓存,从而加速文件访问。
sudo sysctl -w vm.vfs_cache_pressure=200
同样,将这个设置添加到 /etc/sysctl.d/99-custom.conf 中以使其持久化。
使用 firewalld 优化:简化防火墙规则
Firewalld 是 Fedora 默认的防火墙管理器,它在后台运行,维护着一套复杂的规则。对于大多数用户来说,默认配置是安全的,但如果你在某些网络环境下(比如家里,完全信任的网络),可以考虑简化防火墙规则以提高性能。
不过,我不建议完全禁用防火墙,因为这会带来安全风险。但你可以检查是否有不必要的服务在监听,或者是否启用了某些你从不使用的防火墙区域。
sudo firewall-cmd --list-all
看看输出的各个区域(zone)中,有哪些服务是启用的。如果你知道某个服务(比如 samba 或 ssh)在你的网络中不需要,可以将其禁用:
sudo firewall-cmd --remove-service=samba --permanent
sudo firewall-cmd --reload
终极手段:重装系统
如果经过以上所有优化,系统依然感觉 sluggish,那么一个干净的重装可能是最好的选择。Silverblue 的一大优势就是它的可复现性。你可以将个人数据备份到外部存储,然后重新安装 Silverblue,选择一个更精简的软件集合,只安装你真正需要的应用。
当然,这不是每次优化都需要走的极端路线,但它是一个强大的“重置”按钮。在重装之前,确保你已经清理了旧的 Btrfs 快照,并备份了你的 Flatpak 应用列表:
flatpak list --app > flatpak-apps.txt
这样,重装后你可以用一条命令恢复所有应用:
while read line; do flatpak install -y $line; done < flatpak-apps.txt
结语
给 Fedora Silverblue 提速,并不是一蹴而就的事情,它需要你像个园丁一样,定期修剪那些不需要的枝叶。从清理 Btrfs 快照,到精简 GNOME 扩展,再到调整内核参数,每一步都是在为系统减负。
记住,“少即是多” 在 Silverblue 中尤为适用。不要试图安装所有看似有趣的扩展,不要保留所有过时的快照。保持系统的轻盈,才能让它在未来的岁月里依然跑得飞快。
希望这篇指南能帮你找回 Silverblue 的初心,让它重新成为你那台机器上最流畅、最可靠的小伙伴。如果还有其他优化技巧,欢迎在评论区分享,我们一起让 Fedora 社区变得更强大!
