ARM飞牛系统升级错误内核:造成无法识别硬盘解决办法

前言

  入手了一个HT3盒子,刷了官方1.1.31版本固件本来非常好用的,前天系统弹出一个更新,手贱点了升级。升级后造成认不到硬盘。特别卡顿。发现是升级了最新版6.18.18内核的问题,原来的内核是6.12.41,现把降级内核方法分享记录一下。


解决方法

分两种情况,开SSH,进入到/boot目录下,查看旧内核在不在,如果不在,则到https://github.com/ophub/fnnas/releases/download/kernel\_fnnas/6.12.41-rockchip.tar.gz把这个内核下载更新到飞牛,对应的目录:然后再生成修改fnEnv.txt。

/lib/modules/ 内核模块
/boot/  内核镜像目录

替换内核方法

  1. 准备工作​:
    • SSH 连接​:通过 SSH 连接到你的飞牛主机,并切换到 root 用户 (sudo -i)。
    • 确认内核​:操作前,用 uname -r 确认一下当前使用的内核版本,以防万一。
    • 备份数据​:操作有风险,最重要的数据请一定提前备份。
  2. 手动替换内核文件​:
    • 将你准备的 vmlinuz-6.12.41-trimSystem.map-6.12.41-trimconfig-6.12.41-trim 这三个文件,复制到 /boot/ 目录下。
    • 飞牛系统的内核模块存放在 /lib/modules/ 下。你还需要把新内核对应的模块目录(通常命名为 6.12.41-trim)也复制过来。如果没有这个目录,系统启动时会因找不到驱动而失败。
  3. 更新 Initramfs (初始化文件系统)​:
    • 这是最关键的一步。新内核需要生成一个 initrd.img-6.12.41-trim 文件,才能在启动时加载必要的驱动。
    • 在终端中执行以下命令来生成它:bashupdate-initramfs -c -k 6.12.41-trim
    • 执行成功后,确认 /boot/ 目录下生成了 initrd.img-6.12.41-trim 文件。
  4. 更新 Grub 引导并重启​:
    • 为了让系统知道这个新内核的存在,需要更新引导菜单。执行:nano /boot/fnEnv.txt,
    • 将其中的 kernelfile=xxxxx 修改为 kernelfile=vmlinuz-6.12.41-trim。
    • 完成后,输入 reboot 重启系统。

代码说明

# 检查系统类型和 initramfs 工具
cat /etc/os-release | grep -E "NAME|VERSION"
which update-initramfs mkinitramfs mkinitcpio dracut
# 对于 Armbian/Debian/Ubuntu 系统(最可能),执行:
sudo update-initramfs -c -k 6.12.41-trim
# 如果上面的命令失败,尝试:
sudo mkinitramfs -o /boot/initrd.img-6.12.41-trim 6.12.41-trim
# 验证是否生成
ls -lh /boot/initrd* 2>/dev/null || echo "未生成 initrd"

验证配置:

# 查看最终配置
echo "=== fnEnv.txt ==="
cat /boot/fnEnv.txt
echo -e "\n=== 内核和 initrd 文件 ==="
ls -lh /boot/vmlinuz* /boot/initrd*
echo -e "\n=== 符号链接 ==="
ls -la /boot/vmlinuz /boot/initrd.img 2>/dev/null
# 为 initrd 创建符号链接(可选,便于管理)
sudo ln -sf initrd.img-6.12.41-trim /boot/initrd.img


最后重启生效,恢复正常。