基本流程是:下载openwrt源码(推荐attitude adjustment版本)、执行feeds更新、make menuconfig(通过配置feed.conf.default和menuconfig个性化)、make kernel_menuconfig、make V=99

以下是我的个性化配置,主要为了支持ovs和click modular router。

使用feeds的方式加入ovs和click支持 https://github.com/schuza/openvswitch、https://github.com/rriggio/openwrt-packages

cd $TOPDIR

echo 'src-git openvswitch git://github.com/schuza/openvswitch.git' >> feeds.conf.default
echo 'src-git openwrtpackages git://github.com/rriggio/openwrt-packages.git' >> feeds.conf.default
./scripts/feeds update -a

./scripts/feeds install -a

make menuconfig

select Network -> openvswitch-switch, openvswitch-brcompat and openvswitch-controller(选中这三个)
之后,
echo '# CONFIG_KERNEL_BRIDGE is not set' >> .config

其中,menuconfig要添加一些必备组件,如:tc、luci、usb挂载、一键复位/无线、QoS/HTB,都在menucofnig中选择,y表示编译到固件中,M是编译但是不编译进固件。

3.添加luci
 LuCI—>Collections—– <*> luci
 4.添加luci的中文语言包
 LuCI—>Translations—- <*> luci-i18n-chinese
 5.添加DDNS
 LuCI—>Applications —> <*>luci-app-ddns.
 6.添加USB挂载
 Base system —> <*>block-mount
 7.添加硬盘格式支持
 Kernel modules —> Filesystems —> <*> kmod-fs-ext4
 8.添加UTF8编码
 Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
 9.添加USB扩展支持
 Kernel modules —> USB Support —> <*> kmod-usb-storage-extras.
 110.添加自动挂载工具
 Utilities —> Filesystem —> <*> badblocks
 11.添加复位键支持
 Utilities —> <*> restorefactory
 12.添加一键开关无线
 Utilities —> <*> wifitoggle
 

在network中选择openflow 和tc 在Kernel Modules->Network Support中选择knomd-tun 保存退出

接着make kernel_menuconfig

在Networking Support->Networking options->QoS中选择Hierarchical Token Bucket (HTB) 保存退出

make结束之后会在bin/ar71xx目录下找到固件,其中factory即是。

--------------------------------------------------------------------------------------------------------------------------------

tips:如果只想编译某个组件,比如某个.ipk,那么可以使用 sudo make package/xx/compile V=99

其中xx是组件的名字,比如我要单独编译click modular router组件,OpenWrt的安装包中也有Click但是版本很旧已经被标注BROKEN,所以在menuconfig里面是不可见的,所以我要单独编译生成click.ipk然后使用opkg安装到路由器中。

https://github.com/rriggio/openwrt-packages/blob/master/click/Makefile

复制这个makefile替换feeds/packages/net/click重的Makefile,然后cd $TOPDIR,执行:

sudo make package/click/compile V=

即可在bin/ar71xx/packages目录下生成click_20131011-1_ar71xx.ipk

如果要生成所有packages组件,执行:make package/compile 即可。

编译个性化的openwrt固件的更多相关文章

  1. 转:小白编译openwrt固件教程

    原文地址 编译openwrt固件并没有想象的那么复杂,我也是个小白,以下内容是我将网络上的编译教程稍微进行了一下整合.因为我发现很多编译教程没有说明如何更改flash相关配置.   安装ubuntu, ...

  2. 初玩OpenWRT之编译TP-Link WR841N V8固件

    0x00 安装依赖 安装git以下载OpenWrt源码.安装编译工具以进行交叉编译: sudo apt-get update sudo apt-get install build-essential ...

  3. 编译适用于TP-Link WR703N的OpenWRT固件

    编译适用于TP-Link WR703N TP-Link MR11U 以及使用AR9331芯片组的单WAN/LAN复用口的路由. 注:刷机有风险,刷机需谨慎.一般情况下是不会失败的,若无法通过捅Rese ...

  4. debian下编译openwrt固件

    参考文章:Ubuntu下编译OpenWRT固件 我买的路由器是RG100A-AA,采用了bcm63xx系列的芯片. 下载openwrt源码: svn co svn://svn.openwrt.org/ ...

  5. OpenWrt固件刷入后串口终端没有反应的问题

    [路由器开发板硬件固件配置] MTK双频:MT7620a + MT7612e 内存:256 MB 闪存:16 MB 固件:MTK自带SDK中的OpenWrt固件(mtksdk-openwrt-2.6. ...

  6. TL-WR703Nv1.7刷写openwrt固件

    TP-LINK TL-WR703N是一个小型的路由器,可以有线转WiFi,3G转WiFi,很多人拿它刷openwrt系统,然后可以在上面各种搞事. V1.7以前 通常刷openwrt的做法是, 下载一 ...

  7. 烧写uboot和openwrt固件ARxx系列

      以AR9331为例. 1.用烧录器将uboot烧写到flash中 (AR9331_U-Boot_Oolite-v1-v20170713.bin) 2.登录:192.168.1.1网页烧写uboot ...

  8. 编译小米mini openwrt

    编译小米mini openwrt 1.下载openwrt源码包:进入要下载保存的文件目录,输入 git clone git://git.openwrt.org/15.05/openwrt.git 2. ...

  9. 为TL-WR720N编译带mentohust和njit-client的openwrt固件

    openwrt的trunk版已经支持720N了.简单好多. 首先下载openwrt源码,我下的是trunk版 svn co svn://svn.openwrt.org/openwrt/trunk/ 然 ...

随机推荐

  1. openstack iptables

  2. Java中使用ThreadPoolExecutor并行执行独立的单线程任务

    Java SE 5.0中引入了任务执行框架,这是简化多线程程序设计开发的一大进步.使用这个框架可以方便地管理任务:管理任务的生命周期以及执行策略. 在这篇文章中,我们通过一个简单的例子来展现这个框架所 ...

  3. Asp.Net底层解析

    写的很好的一篇文章,但由于不能转载 所以把链接发在这里,以方便自己以后看 http://blog.csdn.net/mlcactus/article/details/8564347 http://ji ...

  4. docker——Dockerfile创建镜像

    写在前面: 继续docker的学习,昨天用docker成功跑了tomcat,但是在centos中镜像跑的容器手动装jdk和tomcat,今天学习用Dockerfile创建镜像,并在上面搭建java环境 ...

  5. 禁止UINavigationController 左滑 返回的效果

    在iOS7中,新增加了一个小小的功能,也就是这个:self.navigationController.interactivePopGestureRecognizer.enabled = YES;

  6. Objective-C 调用C++,C

    1. 建立一个C++类 2. 写一个Adaptor的Objective-C类 3. 在其他Objective-C的逻辑中调用Adaptor类. 1.C++类 // // CPlusPlusClass. ...

  7. java nio 抛出NonWritableChannelException异常

    抛出异常的代码在此处: MappedByteBuffer buffer = channel.map(MapMode.READ_WRITE, 0, avalible); 其中channel是一个file ...

  8. [React Fundamentals] Component Lifecycle - Mounting Usage

    The previous lesson introduced the React component lifecycle mounting and unmounting. In this lesson ...

  9. 信号之sigsuspend函数

    更改进程的信号屏蔽字可以阻塞所选择的信号,或解除对它们的阻塞.使用这种技术可以保护不希望由信号中断的代码临界区.如果希望对一个信号解除阻塞,然后pause等待以前被阻塞的信号发生,则又将如何呢?假定信 ...

  10. Android Studio无法启动 打开, Android Studio gradle下载不了

    Google在2013年I/O大会上发布了Android Studio,AndroidStudio是一个基于IntelliJ思想的新的Android开发工具.下面介绍一下Android Studio安 ...