Fedora 安装与设置

前言

我选择了 Windows 11 IoT LTSC 作为操作系统,一年多以来,基本没什么大问题。但是随着主机配置老旧,我也几乎没有什么应用程序对我来说是非 Windows 不可了,所以!是时候拥抱 Linux Desktop 了。

安装 Fedora

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

1
2
3
4
5
6
7
8
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
zram0 251:0 0 8G 0 disk [SWAP]
nvme0n1 259:0 0 953.9G 0 disk
└─nvme0n1p1 259:1 0 953.9G 0 part /data
nvme1n1 259:2 0 931.5G 0 disk
├─nvme1n1p1 259:3 0 954M 0 part /boot/efi
├─nvme1n1p2 259:4 0 1.9G 0 part /boot
└─nvme1n1p3 259:5 0 928.7G 0 part /

其中 /data 挂载点作为另一块 NVMe 硬盘,无需预留保留空间:

1
2
3
sudo tune2fs -m 0 /dev/nvme0n1p1
# 系统盘预留 1% 就足够
sudo tune2fs -m 1 /dev/nvme1n1p3

基本配置

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

镜像源

如果你的网络环境不太好,可以使用 USTC(或 TUNA)的国内镜像源:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

进行一次软件包更新

1
sudo dnf upgrade --refresh

更改主机名

比如更改主机名为 fedora

1
sudo hostnamectl set-hostname fedora

一些优化

让 NetworkManager 别等了:

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

软件中心别吵我:

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

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

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

硬盘读写权限

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

1
sudo chown -R 1000:1000 /data

中文输入法

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

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

下载雾凇拼音输入方案

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

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

1
fcitx5-configtool

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

关闭 SELinux

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

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

添加 SELinux 禁用参数:

1
sudo vim /etc/default/grub

找到 GRUB_CMDLINE_LINUX_DEFAULT 添加 selinux=0,然后更新引导配置:

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

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

更新固件

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

1
2
3
fwupdmgr refresh --force
fwupdmgr get-updates
fwupdmgr update

美化调整

GNOME 插件和优化

1
sudo dnf install gnome-extensions-app gnome-tweaks

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

img

安装常用软件

Google Chrome

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

Hugo

1
sudo dnf install hugo

cloudflared

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

1
2
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 协议,非常适合我

1
sudo dnf install evolution evolution-ews

Antigravity

1
2
3
4
5
6
7
8
9
sudo tee /etc/yum.repos.d/antigravity.repo << EOL
[antigravity-rpm]
name=Antigravity RPM Repository
baseurl=https://us-central1-yum.pkg.dev/projects/antigravity-auto-updater-dev/antigravity-rpm
enabled=1
gpgcheck=0
EOL
sudo dnf makecache
sudo dnf install antigravity

VScode

1
2
3
4
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc &&
echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\nautorefresh=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/vscode.repo > /dev/null
sudo dnf check-update
sudo dnf install code

Docker CE

1
2
3
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。

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

Firewall GUI

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

1
$ 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 模式后,会影响系统的网络连通性检测,表现为

img

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

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

添加

1
2
[connectivity]
enabled=false

重启 NetworkManager 服务

1
sudo systemctl restart NetworkManager

现在舒服多了

img

禁用网络连通性检测

开启转发

1
2
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
  • 如果生效,编辑 /etc/sysctl.d/99-sysctl.conf 写入这两行以使其永久生效,并执行 sudo sysctl –system

#终端透明代码:

1
dconf write /org/gnome/Ptyxis/Profiles/自己的id/opacity 0.85

安装字体

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

整理一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
~/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

开始安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建系统字体子目录
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

设置Snapper快照

  1. 一键安装 Snapper 与图形化界面
1
sudo dnf install snapper btrfs-assistant python3-dnf-plugins-extras-snapper
  1. 为系统盘(根目录)创建快照配置
1
sudo snapper -c root create-config /
  1. 为home(用户目录)创建快照配置
1
sudo snapper -c home create-config /home
  1. 开启自动清理服务
1
2
sudo systemctl enable --now snapper-cleanup.timer
sudo systemctl enable --now snapper-timeline.timer

修复GRUB引导

  1. 重启电脑从U盘进入Live桌面,打开终端,先清理旧挂载再重新操作:
1
2
# 强制卸载残留挂载
sudo umount -l /mnt 2>/dev/null
  1. 挂载Fedora Btrfs根子卷
1
sudo mount -o subvol=root /dev/nvme0n1p4 /mnt
  1. 挂载独立boot分区(ext4)
1
sudo mount /dev/nvme0n1p3 /mnt/boot
  1. 挂载ESP分区
1
sudo mount /dev/nvme0n1p2 /mnt/boot/efi
  1. 绑定系统虚拟目录
1
2
3
4
sudo mount --bind /dev /mnt/dev 
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
  1. 进入chroot
1
sudo chroot /mnt /bin/bash  
  1. 核心修复 — 修正fstab挂载配置(最关键)
1
2
# 先查看当前分区的正确UUID
blkid /dev/nvme0n1p2 /dev/nvme0n1p3 /dev/nvme0n1p4
  1. 编辑fstab文件
1
nano /etc/fstab  
  1. 把里面的内容替换成下面的(已经对应你三个分区的准确 UUID):
1
2
3
4
5
6
7
8
UUID=7a26b4a8-d69e-42a4-80d4-b7dfc1bf26ff / btrfs subvol=root,compress=zstd:1 0 0
UUID=6a92e79d-547e-4c6a-99a8-8786da68fd0a /boot ext4 defaults 0 0
UUID=23CA-388C /boot/efi vfat umask=0077,shortname=winnt 0 2

UUID=7a26b4a8-d69e-42a4-80d4-b7dfc1bf26ff / btrfs subvol=root 0 0
UUID=6a92e79d-547e-4c6a-99a8-8786da68fd0a /boot ext4 defaults 1 2
UUID=23CA-388C /boot/efi vfat umask=0077,shortname=winnt 0 2
UUID=7a26b4a8-d69e-42a4-80d4-b7dfc1bf26ff /home btrfs subvol=home 0 0
  1. 重建 initramfs(修复磁盘驱动挂载)
1
dracut -f  
  1. 重新生成 GRUB 引导菜单
1
2
3
dnf reinstall shim-x64 grub2-efi-x64 grub2-tools os-prober -y 
echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
  1. 退出并重启
1
2
3
exit 
sudo umount -R /mnt
reboot

主题和图标

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

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

Marble-blue-dark主题设置

1
2
3
4
5
6
# 默认
cd ~/Marble-shell-theme && python3 install.py -ri -a --panel-no-pill
# macOS 风格的 Launchpad 启动板图标
cd ~/Marble-shell-theme && python3 install.py -ri -a --panel-no-pill --launchpad
# 舒服的间距与元素大小
cd ~/Marble-shell-theme && python3 install.py -ri -a --panel-no-pill --launchpad --wider-panel

后续调整优化

参考资料