- 本文链接:fnOS 更新内核后恢复 qnap8528 驱动
- 版权声明: 本博客所有文章除特别声明外,均采用
BY-NC-SA 许可协议,转载请注明出处!
fnOS 更新内核后恢复 qnap8528 驱动
2026/10/6大约 4 分钟
fnOS 更新内核后恢复 qnap8528 驱动
由于每次飞牛更新后,这个风扇的驱动都会掉,导致风扇无法使用,索性让AI介入帮我分析了下,然后记录下教程,帮助有需要的人。
问题原因
fnOS 更新系统后,Linux 内核版本可能发生变化。
例如:
更新前:
6.18.18.c1032-trim
更新后:
6.18.18.c1107-trimqnap8528 是通过 DKMS 安装的第三方内核模块,DKMS 编译出来的 .ko 文件与具体内核版本绑定。
因此 fnOS 更新内核后,旧内核对应的 qnap8528 模块不会自动适用于新内核。
旧内核
6.18.18.c1032-trim
↓
qnap8528.ko
↓
正常工作
fnOS 更新
↓
新内核
6.18.18.c1107-trim
↓
没有对应的 qnap8528.ko
↓
modprobe 找不到模块
↓
sensors 不再显示 qnap8528更新后检查当前内核
# 查看当前正在运行的 Linux 内核版本
uname -r例如:
6.18.18.c1107-trim检查 DKMS 状态
# 查看 DKMS 已安装的内核模块
sudo dkms status例如:
qnap8528/1.18, 6.18.18.c1032-trim, x86_64: installed如果:
uname -r返回:
6.18.18.c1107-trim而 DKMS 显示:
qnap8528/1.18, 6.18.18.c1032-trim, x86_64: installed说明 qnap8528 还是旧内核版本的驱动,需要针对新内核重新编译。
检查 qnap8528 是否已经加载
# 查看 qnap8528 内核模块是否已经加载
lsmod | grep qnap8528如果没有任何输出,说明当前没有加载 qnap8528。
检查当前内核是否存在 qnap8528 模块
# 在当前运行内核的模块目录中查找 qnap8528
find /lib/modules/$(uname -r) -name 'qnap8528.ko*'如果没有任何输出,说明当前内核没有安装对应的 qnap8528 模块。
针对当前内核重新安装 qnap8528
进入 qnap8528 源码目录:
# 进入 qnap8528 源码目录
cd /qnap8528针对当前正在运行的内核重新安装:
# 针对当前运行的内核重新编译并安装 qnap8528
# $(uname -r) 会自动获取当前内核版本
sudo dkms install qnap8528/1.18 -k "$(uname -r)" --force更新内核模块依赖
# 重新生成当前内核的模块依赖关系
sudo depmod -a确认 DKMS 安装成功
# 查看 DKMS 状态
sudo dkms status正常应该看到类似:
qnap8528/1.18, 6.18.18.c1107-trim, x86_64: installed重点确认 DKMS 中的内核版本与:
uname -r返回的版本一致。
确认 qnap8528.ko 文件存在
# 查找当前内核对应的 qnap8528 内核模块
find /lib/modules/$(uname -r) -name 'qnap8528.ko*'正常应该能够看到类似:
/lib/modules/6.18.18.c1107-trim/updates/dkms/qnap8528.ko具体目录可能有所不同。
加载 qnap8528 驱动
# 加载 qnap8528 内核模块
# skip_hw_check=true 用于跳过硬件检查
sudo modprobe qnap8528 skip_hw_check=true确认模块是否加载:
# 查看 qnap8528 是否已经加载
lsmod | grep qnap8528正常应该看到类似:
qnap8528 ...确认 sensors 是否恢复
# 查看硬件温度、风扇转速等传感器信息
sensors如果驱动正常加载,应该重新出现 qnap8528 相关的传感器信息。
恢复 systemd 自动加载
如果之前已经创建:
/etc/systemd/system/qnap8528-load.service可以执行:
# 让 systemd 重新读取 service 配置
sudo systemctl daemon-reload
# 立即启动 qnap8528,并设置为开机自动启动
sudo systemctl enable --now qnap8528-load.service
# 查看 qnap8528 自动加载服务状态
sudo systemctl status qnap8528-load.service如果 service 使用:
Type=oneshot看到:
Active: active (exited)通常是正常状态。
fnOS 更新后的完整恢复流程
以后每次 fnOS 更新完成后,可以直接按照下面的流程执行:
# 查看当前运行的内核版本
uname -r
# 查看 qnap8528 当前 DKMS 安装状态
sudo dkms status
# 查看 qnap8528 是否已经加载
lsmod | grep qnap8528
# 检查当前内核是否存在 qnap8528 模块
find /lib/modules/$(uname -r) -name 'qnap8528.ko*'
# 进入 qnap8528 源码目录
cd /qnap8528
# 针对当前运行的内核重新编译并安装 qnap8528
sudo dkms install qnap8528/1.18 -k "$(uname -r)" --force
# 更新内核模块依赖
sudo depmod -a
# 检查 DKMS 是否已经安装到当前内核
sudo dkms status
# 再次确认 qnap8528.ko 是否存在
find /lib/modules/$(uname -r) -name 'qnap8528.ko*'
# 加载 qnap8528
sudo modprobe qnap8528 skip_hw_check=true
# 确认模块是否加载成功
lsmod | grep qnap8528
# 查看传感器
sensors
# 如果配置了 systemd 自动加载服务
sudo systemctl daemon-reload
sudo systemctl enable --now qnap8528-load.service
# 查看自动加载服务状态
sudo systemctl status qnap8528-load.service即可恢复驱动并保持开机自动加载。
移除旧风扇驱动
输入sudo dkms status会显示有2个installed,一个是旧内核(6.18.18.c1032)安装的,一个是当前内核(6.18.18.c1107)安装的。
然后使用dkms remove命令移除旧的驱动,注意不要删除错了,使用uname -r可以查看当前的内核。
sudo dkms status
# qnap8528/1.18, 6.18.18.c1032-trim, x86_64: installed
# qnap8528/1.18, 6.18.18.c1107-trim, x86_64: installed
# 下面的qnap8528/1.18 -k 6.18.18.c1032-trim按你实际的替换
sudo dkms remove qnap8528/1.18 -k 6.18.18.c1032-trim