JCG Q30 PRO , 已刷入immortalwrt 23.05 custom U-Boot layout 的固件,要升级到 OpenWrt 或 immortalwrt 24.10 ,有一些小波折,在此记录一下。
immortalwrt 这个OpenWrt 的分支总体还算不错的,
比较贴近OpenWrt原版,在固件中适配了一些国内使用的场景。但OpenWrt发布大版本24.10后,发现无法通过 Attended Sysupgrade
更新,用 Flash new firmware image
强制刷入固件,会导致重启后无法启动,在serial console(TTL 连接路由器) 看到报错,大概是因为layout的布局不同,
导致无法加载根分区。尝试重启后按reset键进入uboot webui界面,更新uboot,但是报错Loading Environment from MTD... *** Warning - bad CRC, using default environment
,分析是因为这个uboot因为某些原因没有读取到 U-Boot Environment, 导致无法找到fip分区,而无法更新uboot。
于是重新刷入原23.05固件并启动,ssh登录后用mtd write ... fip
更新uboot,报 Can't open device for writing!
,一番查找后有人指出是固件的限制,在固件的dts文件中fip的配置中有 readonly ,导致无法写入,这其实是OpenWrt原本的配置。
于是下载并修改 immortalwrt 23.05 的源码,经过漫长的编译,得到可写入fip的固件并flash至路由器,
然后在ssh中将OpenWrt 24.10 的 fip openwrt-24.10.0-mediatek-filogic-jcg_q30-pro-bl31-uboot.fip
写入fip分区。重启后一如预期,layout不同,启动失败,在本机网卡设置静态IP 192.168.1.254
,并安装配置好 tftp-hpa
,将openwrt-mediatek-filogic-jcg_q30-pro-initramfs-recovery.itb
放在tftp的根目录中,这时路由器启动,在luci界面中刷入OpenWrt 24.10 的固件openwrt-24.10.0-mediatek-filogic-jcg_q30-pro-squashfs-sysupgrade.itb
,重启后已正常启动OpenWrt 24.10 。
一些吐槽
国内似乎倾向于刷入各种第三方的固件,第三方固件与OpenWrt官方固件相比,只能说各有利弊, 如果想紧跟官方的步伐,那么谨慎刷入第三方的,尤其是在官方发布大版本后,升级时会遇到各种问题。