我的个性化 Fedora Silverblue 设置

发布: (2025年12月28日 GMT+8 07:06)
8 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的完整文本内容,我将按照要求保留源链接、Markdown 格式以及代码块和 URL,只翻译正文部分。谢谢!

为什么选择 Fedora Silverblue?

  • 不可变基础 – 核心系统不会被破坏,使调试变得简单。
  • 原子更新 – 整个系统一次性更新。
  • 分层方法 – 你添加的所有内容都位于基础之上,这样可以在不留下残留(甚至配置文件)的情况下重新开始。
  • “不可破坏” – 一个即使是你妈妈或奶奶也不小心会弄坏的系统。

目录

  1. 启用透明磁盘压缩
  2. 使用安全的 DNS 解析器
  3. 启用 BBR(更好的拥塞控制)
  4. 启用 ptrace_scope = 1
  5. 更改默认的 ZRAM 配置
  6. 为非自由编解码器启用 RPM Fusion
  7. 移除不需要的 Flatpak 应用并禁用仓库
  8. 从基础镜像中剥离未使用的包
  9. 启用系统自动更新

启用透明磁盘压缩

Btrfs 支持即时压缩,但默认 是关闭的
我使用 zstd 等级 1(CPU 占用最低,压缩比尚可)。

# Show current kernel boot arguments (avoid duplicates)
rpm-ostree kargs

# Append the compression flag
sudo rpm-ostree kargs --append="rootflags=subvol=root,compress=zstd:1"

# Reboot for the change to take effect
sudo reboot

注意: 该命令仅压缩 数据。要压缩已有数据:

sudo btrfs filesystem defragment -r -v -f -czstd /var

更多细节请参见我的 compression write‑up

使用安全的 DNS 解析器

我更倾向于使用带有恶意软件过滤的 Cloudflare DNS。

IPv4IPv6
1.1.1.2
1.0.0.2
2606:4700:4700::1112
2606:4700:4700::1002

步骤

# Disable systemd‑resolved sockets and service
sudo systemctl disable --now systemd-resolved-monitor.socket \
    systemd-resolved-varlink.socket systemd-resolved

# Remove the autogenerated resolv.conf
sudo rm -f /etc/resolv.conf

# Tell NetworkManager to use dnsmasq
sudo nano /etc/NetworkManager/NetworkManager.conf

添加(或编辑)[main] 部分:

[main]
dns=dnsmasq
# Restart NetworkManager
sudo systemctl restart NetworkManager

现在 NetworkManager 将把 DNS 查询转发到您在 /etc/NetworkManager/dnsmasq.d/(或通过 GUI)中配置的 DNS 服务器。

更多细节请参见我的 DNS 指南

启用 BBR – 更佳的网络拥塞控制

验证模块是否已加载

lsmod | grep bbr

如果没有返回任何内容,加载模块:

echo "tcp_bbr" | sudo tee /etc/modules-load.d/bbr.conf
sudo reboot

配置 sysctl

sudo nano /etc/sysctl.conf

添加以下行:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
# 立即应用(或重启)
sudo sysctl -p

# 验证
sysctl net.ipv4.tcp_congestion_control

启用 ptrace_scope = 1

需要在基于 Chromium 的浏览器中实现完整的沙箱(Ubuntu、Arch、openSUSE 默认已启用)。

cat /proc/sys/kernel/yama/ptrace_scope

如果输出为 0,请启用它:

# 复制默认配置并编辑
sudo cp /usr/lib/sysctl.d/10-default-yama-scope.conf /etc/sysctl.d/
sudo nano /etc/sysctl.d/10-default-yama-scope.conf

将最后一行改为:

kernel.yama.ptrace_scope = 1
sudo sysctl -p /etc/sysctl.d/10-default-yama-scope.conf
sudo reboot

更多背景信息请参阅我的 ptrace_scope write‑up

更改默认 ZRAM 配置

Fedora 已经默认启用了 ZRAM,但默认大小比较保守。我将其设置为 1.5 × RAM 并给予较高的 swap 优先级。

# 创建用于覆盖规则的目录
sudo mkdir -p /etc/systemd/zram-generator.conf.d

# 创建自定义配置
sudo nano /etc/systemd/zram-generator.conf.d/zram-generator.conf

粘贴:

[zram0]
zram-size = ram * 1.5
compression-algorithm = zstd
swap-priority = 100

额外的 sysctl 调整以应对内存压力

sudo nano /etc/sysctl.conf

添加:

vm.page-cluster = 0
vm.swappiness = 180
vm.watermark_boost_factor = 0
vm.watermark_scale_factor = 125
sudo sysctl -p
sudo reboot

这些数值参考了 Pop!_OS 的 “压缩 swap in RAM” 优化。

启用 RPM Fusion 非自由编解码器

许多媒体文件(例如 MP3、H.264)需要来自 RPM Fusion 的编解码器。

# 免费仓库
sudo rpm-ostree install \
    https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

# 非免费仓库(包含专有编解码器)
sudo rpm-ostree install \
    https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

重启后,你就可以安装诸如 ffmpeggstreamer1-plugin-openh264 等软件包。

删除不需要的 Flatpak 应用并禁用仓库

我更倾向于使用大多数软件的本地 RPM 包。

# List installed Flatpaks
flatpak list

# Remove each unwanted app, e.g.
flatpak uninstall org.gnome.Todo

# Disable the Flathub remote (if you don’t want any Flatpaks)
flatpak remote-delete flathub

从基础镜像中剔除未使用的包

Fedora Silverblue 提供了相当精简的基础镜像,但你仍然可以裁剪掉不需要的部分。

# Example: remove the default GNOME games
rpm-ostree override remove gnome-2048 gnome-robots gnome-taquin

将包名替换为你认为不必要的任何包。

启用系统自动更新

Silverblue 已经通过 systemd.timer 支持自动更新。要启用它:

sudo systemctl enable --now rpm-ostreed-automatic.timer

您可以使用以下命令检查状态:

systemctl status rpm-ostreed-automatic.timer

结束语

Fedora Silverblue 的不可变设计为我提供了坚如磐石的基础。通过微调压缩、DNS、网络、内存管理和编解码支持,我获得了一台快速、安全且已准备好媒体播放的工作站,我的奶奶也弄不坏

随意复制上述任何代码片段,针对你的硬件进行适配,尽情享受不可变操作系统的简洁吧!

所有命令已在 Fedora Silverblue 38 上测试(截至 2025 年 12 月)。

RPM Fusion 在您的系统上

请参阅官方 RPM Fusion 文档,了解 OSTree 系统的使用方法,点击此处

通过 GNOME Software 安装应用

您可以通过 GNOME Software GUI 安装应用(见上面的截图)。如有需要,您可以从 Flathub 重新安装这些应用。

注意: Fedora 的 Flatpak 实现与 Fedora 本机 RPM 包具有相同的专有‑编解码器限制。如果您不需要它,可以将其移除,因为它没有额外的好处。

从基础不可变镜像中移除软件包

如果您想移除基础镜像中自带的应用程序(例如 Firefox),请运行:

sudo rpm-ostree override remove firefox firefox-langpacks

然后重启系统。

您可以使用以下命令检查镜像状态:

rpm-ostree status

此命令有助于识别大多数问题或与使用相同镜像的其他系统之间的功能等价性差异。

向系统层添加软件包

要叠加额外的软件包,请使用 rpm-ostree install。例如,安装 distrobox

sudo rpm-ostree install distrobox

仅在必要时以此方式安装软件包。

自动软件更新

在 GNOME Software 中启用“自动软件更新” 并不会 自动更新系统,官方文档也未提及自动更新。

启用自动更新(stage 策略)

  1. 编辑 /etc/rpm-ostreed.conf

    sudo nano /etc/rpm-ostreed.conf

    将(或添加)该行改为:

    AutomaticUpdatePolicy=stage
  2. 重新加载守护进程:

    sudo rpm-ostree reload
  3. 启用并启动定时器:

    sudo systemctl enable rpm-ostreed-automatic.timer --now
  4. 验证状态:

    rpm-ostree status

    你应该会看到类似如下内容:

    AutomaticUpdates: stage; rpm-ostreed-automatic.timer: last run 3h 4min ago

封面照片由 Alexandru Acea 在 Unsplash 提供

Back to Blog

相关文章

阅读更多 »