0%

使用ImageBuilder为wndr4300编译OpenWRT 18.06.2

前阵子收了个N1盒子,用上之后,发现一直在用的wndr4300路由器网络不太稳定,刚好同时又收了个K2P路由器,都有些想把wndr4300给出掉或者扔掉了。

某鱼上一看,只能卖50块,还是算了。 想想距离上次给它刷石像鬼固件也过去很多年了,要不再试试最新的OpenWRT? 官网下载了最新的OpenWRT 18.06.2版本的固件,长按复位键上电,tftp刷入固件。 下面是MacOS通过tftp上传固件的命令,先执行tftp,再连接路由器并put固件。

1
2
3
4
5
$ tftp
tftp> connect 192.168.1.1
tftp> mode binary
tftp> put openwrt-18.06.2-ar71xx-nand-wndr4300-ubi-factory.img
tftp> quit
Windows的tftp命令如下,需要先在“启用或关闭Windows功能” 中,开启 TFTP 客户端。

tftp -i 192.168.1.1 put openwrt-18.06.2-ar71xx-nand-wndr4300-ubi-factory.img

启动后,打开AP Client+AP模式(作为Client通过WiFi连接另外一个房间里面的路由器,同时再发射WiFi出来),网速很稳,就是这个界面确实太难用了...

然后在安装了WOA(网络唤醒)、screen、frp几个软件后,到软件包里面一看,总空间只有16MB?已经用完一半了? 搜索了资料后了解到,OpenWRT的固件Flash布局是按官方原版固件来的,大部分空间都作为保留和备份空间使用,因此留给安装软件用的空间就不大了。

需要解决这个问题的话,需要自己编译固件。这里又分为从源码编译和使用ImageBuilder两种方式。其实后者是官方提供的固件定制工具,并没有真正的进行全量的代码编译,但通过ImageBuilder简单的修改配置文件再编译一下,就能达到修改Flash布局的目的了,步骤记录如下。

1.先起一个CentOS Docker容器吧

用的Mac,所以用Docker起一个CentOS容器来编译,方便又干净。

1
docker run --name CentOS01 -it -v /Users/spirit/tmp:/var/spirit centos:latest

2.安装依赖

1
2
yum install git gawk gettext ncurses-devel zlib-devel openssl-devel libxslt wget
yum group install "Development Tools"

3.下载image builder

1
2
wget http://downloads.openwrt.org/releases/18.06.2/targets/ar71xx/nand/openwrt-imagebuilder-18.06.2-ar71xx-nand.Linux-x86_64.tar.xz
tar -xf openwrt-imagebuilder-18.06.2-ar71xx-nand.Linux-x86_64.tar.xz

4.修改Flash布局,开启128M

1
2
cd openwrt-imagebuilder-18.06.2-ar71xx-nand.Linux-x86_64
sed -i s/'23552k(ubi),25600k@0x6c0000(firmware)'/'120832k(ubi),122880k@0x6c0000(firmware)'/ target/linux/ar71xx/image/legacy.mk

5.编译

编译前可以先查看profile及默认package:

1
make info
> By default (empty PACKAGES variable) the Image Generator will create a minimal image with device-specific kernel and drivers, uci, ssh, switch, firewall, ppp and ipv6 support.

正式编译,仅添加luci及中文包:

1
make image PROFILE=WNDR4300V1 PACKAGES="luci luci-i18n-base-zh-cn"

6.获取镜像

编译完成后,结果在 bin/targets/ar71xx/nand 目录下:

1
2
openwrt-18.06.2-ar71xx-nand-wndr4300-ubi-factory.img
openwrt-18.06.2-ar71xx-nand-wndr4300-squashfs-sysupgrade.tar
img结尾的文件用于tftp刷机,tar结尾的文件用于系统升级。

编译好后刷到路由器里面,可用空间98MB,完美! 不过据说刷了改布局的固件后,不能直接刷回官方原版固件,但目前来看肯定没有刷原版固件的需求,所以无关痛痒。

下载

这里提供下已经编译好的固件,供有缘人下载使用:

http://cdn.spirithy.com/other/openwrt-18.06.2-ar71xx-nand-wndr4300-ubi-factory.img

http://cdn.spirithy.com/other/openwrt-18.06.2-ar71xx-nand-wndr4300-squashfs-sysupgrade.tar