我用的OpenWrt版本是Barrier Breaker 14.07,硬件是NetGear WNDR4300。
我自定义固件的目的是把固件的根分区扩到最大(100MB,总FLASH是128MB),试过编译源代码,也成功了,但是不能安装官方源的内核模块,必须安装自己编译出来的,对于在线安装软件不方便。后来知道可以用官方提供的Image Builder来构建自己的固件,软件版本和官方一模一样的,官方教程在:http://wiki.openwrt.org/doc/howto/obtain.firmware.generate
扩大根分区空间:
编辑target/linux/ar71xx/image/Makefile,把
wndr4300_mtdlayout=mtdparts=ar934x-nfc:256k(u-boot)ro,256k(u-boot-env)ro,256k(caldata),512k(pot),2048k(language),512k(config),3072k(traffic_meter),2048k(kernel),23552k(ubi),25600k@0x6c0000(firmware),256k(caldata_backup),-(reserved)
改为
wndr4300_mtdlayout=mtdparts=ar934x-nfc:256k(u-boot)ro,256k(u-boot-env)ro,256k(caldata),512k(pot),2048k(language),512k(config),3072k(traffic_meter),2048k(kernel),121856k(ubi),123904k@0x6c0000(firmware),256k(caldata_backup),-(reserved)
要构建WNDR4300和官方一样的固件,需要以下make命令:
make image PROFILE=WNDR4300 PACKAGES="uhttpd uhttpd-mod-ubus luci luci-proto-ipv6 iwinfo"
当然,可能我们需要WEB界面是中文,那么可以这样:
make image PROFILE=WNDR4300 PACKAGES="uhttpd uhttpd-mod-ubus luci luci-proto-ipv6 iwinfo luci-i18n-chinese"