如何编译符合自己路由器的的OpenWrt固件

前言:

玩OpenWrt已经快两年了,最早接触是因为CHDBITS,选择了G300NH2来搭载,发现性能较差,之后就更换为AG300H使用官方原版挂种100下载速度700kb+稳定运行,后来先后购入了乐视小米ipad后就有了越来越多的想法,安装了各种插件,过一段时间更新后发现有问题,然后只有重新刷,每次都很繁琐,5月以来使用了很多基友的包(已经集成了很多插件)发现不大稳定,所有萌发了自己编译符合自己AG300H的固件来。

一、准备工作

1、ubuntu+1 VM虚拟机什么都可以

2、固件获取:svn://svn.openwrt.org/openwrt/branches/barrier_breaker  你需要什么版本的就下载什么版本

二、更新系统软件

1、使用 root 账户登录 ubuntu

2、使用 apt-get update 更新组建

3、安装编译需要的组件(如下\绿色是aria2编译需要的组建)

apt-get install g++
apt-get install libncurses5-dev
apt-get install zlib1g-dev
apt-get install bison
apt-get install flex
apt-get install unzip
apt-get install autoconf
apt-get install gawk
apt-get install make
apt-get install gettext
apt-get install gcc
apt-get install binutils
apt-get install patch
apt-get install bzip2
apt-get install libz-dev
apt-get install asciidoc
apt-get install subversion

apt-get install texinfo

apt-get install sharutils

apt-get install ncurses-term

apt-get install git-core

apt-get install sphinxsearch

apt-get install libtool

apt-get install sphinx-common

apt-get install libssl-dev

apt-get install libsqlite3*

apt-get install intltool

apt-get install libiconv*

apt-get install gstreamer-0.10*

apt-get install glib2.0

apt-get install libxml2-dev

apt-get install qemu

sphinxsearch libtool sphinx-common

4、退出 root身份  (exit)

5、新建一个账户  adduser openwrt    sodu openwrt

5、为了防止文件读写权限造成问题,需要将源码copy到openwet的根目录下进行所有操作

cd ~

cp -R /home/user/ ./

三、加载RA-MOD

1、添加ra-mod 编辑目录下的feeds.conf.defaul 注释掉原有的Luci 并加入

src-git ramod git://github.com/ravageralpha/my_openwrt_mod.git

2、执行以下命令

./scripts/feeds uninstall luci

./scripts/feeds update -a

./scripts/feeds install -a

./scripts/feeds install luci

./scripts/feeds update -a

./scripts/feeds install -a

svn update

这样就可以显示出来了,不然有些同学说我加了ra-mod的怎么不显示呀,或没有显示luci

四、进入订制界面

make defconfig

make menuconfig

五、按你的需求选择需要的功能

usbutils 

Garget—system—atherosar7xxx/ar9xxx 路由芯片
Target—profile—buffalowzr-hp-ag300h 我的路由型号
Base—system—block-mount USB挂载
                         libstdcpp 安装aria2需要
luci—collections—luci 添加luci界面
         applications—luci-app-ddns dns界面
                               luci-app-hd-idle 磁盘休眠控制界面
                               luci-app-multiwan 多拨控制界面
                               luci-app-qos qos界面
                               luci-app-samba samba界面
                               luci-app-ushare ushare界面
        translations—luci-i18n-chinese luci中文语言包
kernelmodules—filesytems—kmod-fs-ext4 硬盘ext4格式支持
                          nativelanguagesupport—kmod-nls-utf8 utf8支持??
                          usbsupport—kmod-usb-ohci Ohci控制器
                                               kmod-usb-storage 添加储存设备驱动
                                               kmod-usb-storage-extras 储存设备扩展
                                               kmod-usb-uhci Uhci控制器
                                               kmod-usb2 Uusb2.0
bootloaders—uboot-ar71xx-nbg460n_550n_550nh 默认
libraries—filesystem—libext2fs 硬盘格式化工具
               ssl—libopenssl 安装aria2需要
               libffmpeg-mini ushare需要
               libxml2 安装aria2需要
network—filetransfer—aria2 aria2(我没选)
                                    vsfpd ftp服务器
                                    multiwan 多拨软件
                                    ppp 默认
                                       ppp-mod-pppoe 默认
                                    samba36-server Samba共享
                                    wpad-mini 默认
multimedia—ushare ushare媒体共享

六、 编译

make v=99

第一次编译时间较久,make v=99最稳定。

5、完成 

编译完成后,编译好的固件在主文件夹/bin中,拷贝出来到自己要保存的文件夹中。以下命令是清理后以便于下次编译的。

清除缓存 make dirclean

彻底清理make distclean    或  make clean

编译单个包

编译一个单独的软件包(例如在cups软件包):

make package/cups/compile V=99

转载于:https://my.oschina.net/zj2055/blog/341550