OpenWrt / ImmortalWrt 编译 (TP-LINK WDR-4320)

技术 · 2024-05-01

打扫房间时找出一个老古董路由器,TP-LINK WDR-4320,几年前用的,里面跑的还是 OpenWrt 19.07。

硬件配置:
CPU:高通 AR9344
RAM:128MiB
ROM:8MiB(这台之前已经更换为了 16MiB 的 Flash)
网口:千兆 * 4
WiFi:IEEE 802.11b/g/n (750Mbps)
USB:USB2.0 * 2

wrt.jpg

这配置放到 2024 年已经过时了,连 WiFi5(802.11ac)协议都不支持,好在 4 个千兆口 + 2 个 USB 口放在内网挂载个硬盘、共享个打印机还是够用的。
里面跑的 OpenWrt 19.07 也太旧了,顺便升级到目前最新的 OpenWrt 23.05,因为这台机器的 Flash 芯片之前改过,原厂的 8MiB 太小换成了 16MiB 的,而官方的固件只认 8MiB,想要认全 16MIB 只能自己编译固件,那就再编译一次 OpenWrt 23.05 吧,顺便记录一下编译要点。

源码这次选择的 ImmortalWrt,是 OpenWrt 的一个分支,比较之下 ImmortalWrt 算是和上游兼容性比较好又对国内用户使用比较友好的一个分支了,相比原版的 OpenWrt,细节上对国内用户可能感觉更顺手一些。

拉取源码之后有几个地方需要修改一下,之前 OpenWrt 19.07 使用的设备树还是 ar71xx,现在已经弃用了,换成了 ath79,所以修改固件大小的方式和之前旧版也有所不同。
修改文件:target/linux/ath79/image/generic-tp-link.mk
修改文件:target/linux/ath79/dts/ar9344_tplink_tl-wdrxxxx.dtsi
如下图内容,因为官方 OpenWrt 是不支持 WDR4320 的,但支持 WDR4310 和 WDR4300,这几款硬件都是一样的所以通用,这里需要魔改一下 WDR4310 的配置文件,将 WDR4310 修改为 WDR4320,当然不改也不影响实际使用(逼死强迫症)。

wrt-1.png
wrt-2.png

因为源码中没有 WDR-4320 的型号,既然上面改了,所以这里还需要手动拷贝一份 WDR-4320 的配置文件。

wrt-3.png

然后再 make menuconfig 应该就可以找到刚刚添加的 WDR-4320 的型号了。

wrt-4.png

然后再根据自己需要调整一下,比如修改一下默认的 LAN 地址,防止接在其他设备下时 IP 冲突,有 BT 下载需求的用户可能需要 UPNP 功能。

wrt-5.png
wrt-6.png

我个人比较喜欢简洁的固件,其它需求比如 Docker、Python 之类的习惯用到时再手动安装,现在就可以开始编译固件了。

wrt-7.png

根据你自己的硬件性能 make j=7 V=s 开始编译,因为需要下载一些文件,所以速度跟网络环境也有关,大概几个小时后如果如上图所示,就说明编译成功了,可以在 bin 文件夹下找到生成的固件文件。

接下来路由器进入 Breed 环境开始刷写固件:

breed1.png
breed2.png
breed3.png

刷写完成后会自动重启,大概 2 分钟后就可以手动进入 luci 后台了

wrt1.png
wrt-8.png

这里可以看到编译的固件已经成功的认出了 16MiB 的容量(固件自身就占用了 8MiB 多,所以如果是 8MiB 的 Flash 基本就没什么空间装其他软件包了,甚至固件自身也需要再精简一些内容)。

Linux 网络 OpenWrt
Theme Jasmine. 由 Cloudflare 提供 CDN 加速 ICP 20232321