windr4300 open-wrt固件编译

注意:
1.除了更新系统和安装依赖软件外,不要用“root”账户做任何事;
2.所有openwrt编译版的发布都必须在<buildsystem root(编译系统root)>目录中令进行,如:~/openwrt/trunk/;
3.在编译版的路径中不能够出现空格;
4.在下载有openwrt源码的目录,属主需要改为普通用户,而非root用户,命令为:(sudo chown -R user:user /openwrt/)。

一、编译环境部署

  • 建议使用Ubuntu操作系统,系统要么进行标准安装,要么在虚拟机里创建。
  • 建议系统有20GB磁盘空间,编译openwrt需要1-4GB内存(编译x86固件需要至少4GB内存)。

1.1更新系统

sudo apt-get update

1.2安装编译依赖软件

sudo apt-get install git-core subversion mercurial build-essential libssl-dev libncurses5-dev unzip

二、编译固件过程

2.1从openwrt官网下载源码包

git clone git://git.openwrt.org/openwrt.git

这个命令会在本地当前目录下创建一个openwrt目录,目录中就包括了编译系统环境。

2.2下载和更新feeds

cd openwrt ./scripts/feeds update -a ./scripts/feeds install -a

2.3测试和编译

用如下命令进行环境测试,并配置所需要的固件类型、配置、软件和功能。
make defconfig make prereq make menuconfig
如果没有任何问题,将进入定制界面,在定制界面可以选择芯片的型号、集成的组件、安装的软件包、界面等,根据实际情况选择即可。

2.4编译过程

输入如下命令开始编译,第一次编译的时间很长,大约会3-4小时,这取决于计算机的硬件配置和网络速度。
make V=99

三、生成器打包

如果没有什么特殊要求,可以直接用镜像生成器直接打包,方便快捷,几分钟生成一个镜像包。
http://wiki.openwrt.org/zh-cn/doc/howto/imagebuilder
镜像生成器下载
http://downloads.openwrt.org/backfire/10.03.1-rc6/x86_generic/OpenWrt-ImageBuilder-x86-for-Linux-i686.tar.bz2

 

我用的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 iwinfoluci-i18n-chinese”

 

 

为wndr4300编译openwrt系统,内容如下:

1.安装编译过程的依赖包

apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc

2.下载源码并更新,下载如果太慢,可以使用proxychains4 -q bash走socks5代理下载

git clone git://git.openwrt.org/14.07/openwrt.git
cd openwrt
./scripts/feeds update -a

3.编译
以下为wndr4300 make menuconfig的基本编译选项,推荐使用官网的config文件。

make menuconfig
Target System (Atheros AR7xxx/AR9xxx)  —>
Subtarget (Generic devices with NAND flash)  —>
Target Profile (NETGEAR WNDR3700v4/WNDR4300)  —>make

获取官网的config文件,编译

wget https://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/nand/config.ar71xx_nand

mv config.ar71xx_nand .config

make menuconfig

exit
make

在后会生成如下固件文件
bin/ar71xx/openwrt-ar71xx-nand-wndr4300-squashfs-sysupgrade.tar
bin/ar71xx/openwrt-ar71xx-nand-wndr4300-ubi-factory.img

 

 

WNDR3700V4完全使用128Mflash:

cp ./target/linux/ar71xx/image/Makefile  ./target/linux/ar71xx/image/Makefile.bak
vim ./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)
改为(将ubi和firmware增加96M,完全使用128M flash)
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)