最终升级成功, 中途有bug, 手动修复. (非官方)
fnOS 1.1.3104 升级全程记录
日期**:2026-05-18
设备**:铭凡 N5 Pro**
升级路径:fnOS 1.1.30 → 1.1.3104,Kernel 6.12.18-trim → 6.18.18-trim
总耗时**:约 3 小时(含排查)**
最终结果:**✅ 全部正常,31 个容器运行,6.18 内核稳定
升级包清单
| 包名 |
版本 |
大小 |
最终状态 |
| linux-image-6.18.18-trim |
6.18.18-trim#570 |
80M |
✅ 运行中 |
| trim**(**fnOS 核心) |
1.1.3104 |
337M |
✅ |
| linux-modules-trim-6.18.18-trim |
6.18.18-trim-570 |
163M |
✅ |
| linux-headers-6.18.18-trim |
6.18.18-trim-570 |
8.9M |
✅ |
| linux-libc-dev |
6.18.18-trim-570 |
1M |
✅ |
| firmware-intel-misc |
20250410-2~bpo12+1 |
— |
✅ backports 版 |
| firmware-intel-graphics |
20250410-2~bpo12+1 |
— |
✅ backports 版 |
| firmware-amd-graphics |
20250410-2~bpo12+1 |
— |
✅ backports 版 |
| wireless-regdb |
2026.02.04-1~deb12u1 |
— |
✅ |
坑一:固件包安装冲突,更新界面卡死 60 分钟
现象
fnOS 更新界面在 firmware-intel-misc 阶段卡住,进度条不动,显示"等待下载更新包...",无任何错误提示。
根因
firmware-intel-misc_20260110-1 与已安装的 firmware-misc-nonfree_20230210-5 存在 dpkg 显式冲突:
dpkg: regarding firmware-intel-misc_20260110-1_all.deb:
firmware-intel-misc conflicts with firmware-misc-nonfree (<< 20230625-3~)
firmware-misc-nonfree (version 20230210-5) is present and installed.
firmware-misc-nonfree 是 Debian 官方非自由固件包,fnOS 自己的固件包是其替代品,文件重叠。dpkg 报错后,fnOS 更新编排器没有错误恢复逻辑,进入假死状态。同时 packages.fnnas.com 这个域名根本不存在于公共 DNS(任何 DNS 服务器均 NXDOMAIN),更新进程重试下载也失败。
解决
# Step 1:移除冲突包(安全,fnOS 固件包是其完整替代品)
sudo dpkg --remove firmware-misc-nonfree
# Step 2:从 Debian backports 安装 Intel 固件
sudo apt-get install -y firmware-intel-misc firmware-intel-graphics wireless-regdb
# Step 3:安装 AMD 固件(会拉 firmware-realtek,但它与 firmware-linux-trim 冲突中断)
sudo apt-get install -t bookworm-backports firmware-amd-graphics
# 中途报错,firmware-amd-graphics 已解包未配置(状态 iU)
# Step 4:完成配置
sudo dpkg --configure firmware-amd-graphics
sudo dpkg --configure -a
避坑指南
- 升级前先检查并移除
firmware-misc-nonfree:dpkg -l firmware-misc-nonfree
- fnOS 实际 apt 源是
repo.fnnas.com(/etc/apt/sources.list.d/trim_repo.list),packages.fnnas.com 是无效域名,遇到 DNS 报错不要浪费时间排查
firmware-linux-trim 与 Debian 官方 firmware-realtek 文件重叠,安装 backports 版本时会冲突,需要单独处理 firmware-amd-graphics
坑二:6.18 内核启动后 fnOS/网络完全不通
现象
重启后自动进入 6.18.18-trim**,**fnOS Web 界面无法访问,只有进 GRUB 手动选 6.12 才能正常使用。
根因
双重问题叠加:
① RTL8126 网卡驱动缺失
N5 Pro 主网卡为 Realtek RTL8126 5GbE**(**PCI c5:00.0,10EC:8126)。fnOS 6.12 通过 realtek-r81xx 包提供 vendor 驱动 r8126.ko,但该包的 6.18 版本根本没有发布:
6.12 有:/lib/modules/6.12.18-trim/realtek/r8126.ko ✓
6.18 无:/lib/modules/6.18.18-trim/updates/trim/ ✗(无 r8126.ko)
② r8169 通用驱动被主动 blacklist
/etc/modprobe.d/blacklist-r8169.conf 内容:
# To use realtek driver explicitly
blacklist r8169
fnOS 加这个 blacklist 的历史原因:RTL8126 支持是后来才加入 mainline r8169 的,早期 fnOS 版本只能用 Realtek vendor 驱动。结果是 6.18 下既无 vendor 驱动,又封锁了 mainline 驱动,网卡完全无法工作。
调研过程
检查 6.18 内核的 r8169.ko 发现 mainline 实际上已完整支持 RTL8126A**:**
strings /lib/modules/6.18.18-trim/kernel/drivers/net/ethernet/realtek/r8169.ko | grep 8126
# 输出:
alias=pci:v000010ECd00008126sv*sd*bc*sc*i* ← PCI ID 完全匹配
rtl_nic/rtl8126a-3.fw ← 固件文件引用
rtl_hw_start_8126a ← 硬件初始化函数
RSS_CTRL_8125 ← 多队列支持
固件文件也已存在(来自 firmware-linux-trim):
/lib/firmware/rtl_nic/rtl8126a-2.fw ✓
/lib/firmware/rtl_nic/rtl8126a-3.fw ✓
结论:直接删除 blacklist 即可,不需要编译任何驱动。删除 blacklist 对 6.12 也没有影响——6.12 下 r8126.ko 优先加载,r8169 拿不到设备,自然无效。
解决
# 删除 blacklist(对 6.12 无影响,r8126 优先级更高会抢先加载)
sudo rm /etc/modprobe.d/blacklist-r8169.conf
# 更新两个内核的 initramfs
sudo update-initramfs -u -k 6.18.18-trim
sudo update-initramfs -u -k 6.12.18-trim
# 设置 GRUB 默认为 6.18
sudo grub-set-default "gnulinux-advanced-...>gnulinux-6.18.18-trim-advanced-..."
sudo update-grub
sudo reboot
重启后验证:
r8169 0000:c5:00.0 enp197s0: RTL8126A, 38:05:25:32:64:a2 — 驱动正确加载
r8169 0000:c5:00.0 enp197s0: Link is Up - 1Gbps/Full — 链路正常
避坑指南
- fnOS 升级大版本内核前,应验证
realtek-r81xx 是否有对应新内核的版本
- blacklist 不一定是「必须的」,要理解其存在原因再决定是否保留
- 网卡名
enp197s0 基于 PCI 路径(c5:00.0),换驱动不会改变接口名和 MAC,IP/端口不受影响
坑三:NVIDIA DKMS 模块 CRC 不匹配
现象
6.18 下 sudo modprobe nvidia 报错:
modprobe: ERROR: could not insert 'nvidia': Exec format error
根因
DKMS 在系统升级期间(运行 6.12 时)预编译了 nvidia 模块并安装到 6.18 目录。但由于是跨内核编译,symbol CRC(modversions)与实际运行的 6.18 内核不一致,导致加载失败。vermagic 字符串相同但 CRC 校验不过。
解决
在已启动的 6.18 内核下原地重建:
sudo dkms remove nvidia/570.211.01 --all
sudo dkms install nvidia/570.211.01 -k 6.18.18-trim
sudo modprobe nvidia
nvidia-smi # 验证正常
避坑指南
- 任何 DKMS 模块(不只是 nvidia)在跨内核预编译后,首次启动新内核时都应该验证能否加载
- 判断方法:
strings /lib/modules/<kernel>/updates/dkms/xxx.ko | grep vermagic 与 uname -v 对比
- 遇到
Exec format error 不是模块损坏,是 CRC 问题,dkms remove + install 即可解决
- 其他 DKMS 模块(如 ZFS、第三方驱动)升级内核后同样需要注意
遗留问题
fnOS 更新界面仍显示固件包待安装
fnOS 更新管理器追踪自己 repo 的版本号(20260110-1),我们安装的是 Debian backports 版(20250410)。功能上等价,不影响使用。待 repo.fnnas.com 的包版本更新后可再次点击更新安装官方版。
最终系统状态
fnOS 版本:1.1.3104
运行内核:6.18.18-trim #570
网卡驱动:r8169 mainline(RTL8126A 5GbE,IP 不变)
GPU:NVIDIA RTX A3000 12GB,驱动 570.211.01 DKMS 重建 ✓
AMD 固件:20250410(backports)✓
容器:31/31 Up,全部 healthy
经验总结
| # |
教训 |
| 1 |
升级前 dpkg -l firmware-misc-nonfree,有则先移除 |
| 2 |
fnOS 更新卡住 → 先查 /var/log/dpkg.log 和 /var/log/dpkg.error.log,比看 UI 有用 |
| 3 |
大版本内核升级后不要直接 reboot,先确认关键驱动(网卡、GPU)在新内核下是否有对应模块 |
| 4 |
blacklist 要理解原因,不要无脑保留;mainline 驱动追上 vendor 后 blacklist 就成了绊脚石 |
| 5 |
DKMS 跨内核预编译不可靠,首次启动新内核后手动 dkms remove + install 更保险 |
| 6 |
永远保留一个可工作的旧内核在 GRUB 里作退路,切换新内核不要急着删旧内核 |