0x00 安装依赖

安装git以下载OpenWrt源码。安装编译工具以进行交叉编译:

sudo apt-get update
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip

feeds中的部分软件包可能只能通过subversion (缩写: svn)或者mercurial下载源代码。如果你需要安装这些软件包,你同时也应当安装svn和mercurial:

sudo apt-get install subversion mercurial

通过git来下载OpenWrt bleeding edge(trunk版本) 详情参考https://wiki.openwrt.org/doc/howto/buildroot.exigence 这里我编译是的15.05

git clone git://github.com/openwrt/openwrt.git

15.05 branch (Chaos Calmer)

git clone -b chaos_calmer git://github.com/openwrt/chaos_calmer.git

14.07 branch (Barrier Breaker)

git clone -b barrier_breaker git://github.com/openwrt/archive.git

0x01 安装Feeds

此处就是下载一些你之后要编译进firmware里的一些软件。若有自己需要额外添加的组件,可以通过添加feeds来实现。比如,我需要添加openvswitch的支持,在目录下输入如下命令:

echo 'src-git openvswitch git://github.com/schuza/openvswitch.git' >> feeds.conf.default

然后,更新下载feeds组件包并安装:

./scripts/feeds update -a //更新下载全部软件包./scripts/feeds update [包名]) //单独更新下载某软件包
./scripts/feeds install -a //安装全部软件包./scripts/feeds install [包名] //单独安装某软件包

0x02 配置OpenWRT

直接在 [openwrt主目录] 下输入命令 make menuconfig 即可开始自定义选择组件

Target System --> 选择路由器CPU

Target Profile --> 选择路由器型号

LuCI --> Modules --> <*> luci-base.........LuCI core libraries 然后进入下面的Translations --> 选择语言

添加LuCI界面

LuCI --> Collections --> <*> luci

添加UTF-8编码

Kernel modules --> Native Language Support --> <*> kmod-nls-utf8

若之前添加过自己的组件,就对应选择上,否则编译不进去!

全部选择完,一定记住保存,才能成功写入 .config 文件。

设置LuCI默认语言

打开 feeds/luci/modules/luci-base/root/etc/config/luci 文件

config core main
option lang auto //此处修改为option lang zh_cn
option mediaurlbase /luci-static/bootstrap
option resourcebase /luci-static/resources config extern flash_keep
option uci "/etc/config/"
option dropbear "/etc/dropbear/"
option openvpn "/etc/openvpn/"
option passwd "/etc/passwd"
option opkg "/etc/opkg.conf"
option firewall "/etc/firewall.user"
option uploads "/lib/uci/upload/" config internal languages
option zh_cn chinese //新增
option en English //新增 config internal sauth
option sessionpath "/tmp/luci-sessions"
option sessiontime config internal ccache
option enable config internal themes

设置默认开启WIFI

打开 package/kernel/mac80211/files/lib/wifi/mac80211.sh 文件

0x04 编译前注意事项

修改固件大小

我的路由器型号WL841N_V8(硬件方面改装成16M的Flash),所以需要把默认的4M改成了16M,这样编译后就没问题了。

修改 target/linux/ar71xx/image/Makefile 文件,搜索 tl-wr841n-v8

修正网口顺序问题

OpenWRT的网口经常是反过来的,所以要进行修正

打开 /openwrt/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v8.c 文件

ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
改为
ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
ath79_switch_data.phy_poll_mask = BIT();
改为
ath79_switch_data.phy_poll_mask = BIT();
ath79_eth0_data.phy_mask = BIT();
改为
ath79_eth0_data.phy_mask = BIT();

修改LED灯顺序问题

打开 target/linux/ar71xx/base-files/etc/uci-defaults/01_leds 文件,修改为如图所示

0x05 编译固件

一般情况下,编译直接在 [openwrt主目录] 下输入命令 make V=99 。可以查看编译过程具体信息。直接make无具体信息。编译完成后,在bin目录下就可以找到你编译好的bin文件,以及bin/packages下编译好的一些ipk文件,ipk文件可以直接安装于刷好的OpenWRT中。

注意:此处千万不要以root权限执行make,否则报N多错误。

另附一些编译选项:

  1. 在多核电脑中编译,常规用法为【 cpu处理器的数目 + 1】– 例如使用3进程来编译 (即双核CPU), 命令及参数: make -j 3 。这样可以加速编译,不过我没试过。
  2. 后台编译,你还在忙其他,不想让编译耗费太多资源,只使用一些空闲的I/O和CPU能力来编译: ionice -c 3 nice -n19 make -j 2
  3. 单独编译某个包: make package/[包名]/compile V=99 。编完后在bin/packages下会找到对应的ipk文件。
  4. 单独编译某个包: make package/[包名]/compile V=99 。编完后在bin/packages下会找到对应的ipk文件。

0x06 参考链接

http://wiki.openwrt.org/doc/howto/buildroot.exigence

https://dev.openwrt.org/wiki/GetSource

初玩OpenWRT之编译TP-Link WR841N V8固件的更多相关文章

  1. openwrt(二) 配置openwrt及编译

    导航 1. 配置openwrt 2. 编译openwrt 3. 错误记录 1. 配置openwrt 在openwrt的根目录下,执行make menuconfig. 这个界面我也只是了解了这两个选项而 ...

  2. TP-LINK WR841N V8刷OpenWRT

    在某宝上淘了一个TP-LINK WR841N V8,已经硬改为8M闪存和64M内存,还刷好了Uboot.但是卖家刷好的系统是第三方定制过的OpenWRT,集成了很多不需要用到的软件,所以我要刷回官方原 ...

  3. openwrt安装编译

    官网安装编译推荐: https://wiki.openwrt.org/doc/howto/buildroot.exigence https://wiki.openwrt.org/doc/howto/b ...

  4. 使用 OpenWrt Image Generator 为 WR703N 路由器定制固件

    标题:使用 OpenWrt Image Generator 为 WR703N 路由器定制固件 之前试着自己编译固件,编译是成功了,但是在后期安装官方仓库的ipk时出现问题,因为自己编译的固件和官方固件 ...

  5. MT7620a openwrt barrier_breaker编译后wan口dhcp无法获得地址

    前言 我司准备使用openwrt barrier_breaker版本做二次开发.在烧入固件后发现wan口,dhcp无法获得地址.经如下修改后,mt7620a的路由器可以正常获得地址. 修改dts文件 ...

  6. OpenWrt镜像编译和ipv6支持

    离成功实现路由器刷OpenWrt.接入校园网差不多一年了.路由工作比较稳定,还是很满意的. 这次回来有个新发现:学校有原生ipv6支持,在win7和ubuntu下什么都不用设置,自动获取global ...

  7. 在openwrt上编译最简单的一个ipk包文件

    1 什么是opkg Opkg 是一个轻量快速的套件管理系统,目前已成为 Opensource 界嵌入式系统标准.常用于路由.交换机等嵌入式设备中,用来管理软件包的安装升级与下载. opkg updat ...

  8. openwrt MT7628 编译前更改为DHCP,root 密码、ssid、时区、主机名

    一.设置为DHCP动态获取ip地址 在:/home/OpenWrt/openwrt_CC_mt76xx_zhuotk_source/ 目录下,新建文件名/files/etc/config. 将配置好的 ...

  9. C++ VS编译问题--LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    用VS编译时,当出现错误LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏: 这个问题的解决方案为: 1. 找到项目\xx属性\配置属性\清单工具\输 ...

随机推荐

  1. 【洛谷p2822】组合数问题

    (突然想          ??忘掉了wdt) (行吧那就%%%hmr) 组合数问题[传送门] (因为清明要出去培训数学知识所以一直在做数论) 组合数<=>杨辉三角形(从wz那拐来的技能 ...

  2. python基础之小数据池,is和==区别 编码问题

    主要内容 小数据池,is和==区别 编码问题 小数据池 一种缓存机制,也称为驻留机制,是为了能更快提高一些字符串和整数的处理速度is 和 == 的区别 == 主要指对变量值是否相等的判断,只要数值相同 ...

  3. Robbers' watch CodeForces - 685A (暴力)

    大意: 一天n小时, m分钟, 表以7进制显示, 求表显示数字不同的方案数 注意到小时和分钟部分总长不超过7, 可以直接暴力枚举. 关键要特判0, 0的位数要当做1来处理 #include <i ...

  4. SQL SERVER 字符拆分列为多行

    注:先学习sql server里的递归CTE. 假设有兴趣表Hobbys Name Hobby 小张 篮球,足球,羽毛球 Name Hobby 小张 篮球 小张 足球 小张 羽毛球 采用[递归cte] ...

  5. springboot(十九)使用actuator监控应用

    微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了异常如何快速定位是哪个环节出现了问题? ...

  6. swf 上传

    推荐这个博客:http://blog.csdn.net/hi_kevin/article/details/23430345 这个文章很不错,我推荐这个文章:http://leeon.me/upload ...

  7. 杂记-格式化Date默认格式,日期加一天,jstl判断字符类型,ajax模拟from表单后台跳转页面,jstl访问数据库并在页面显示

    1.格式化Date默认格式 String str="Sun Oct 08 22:36:45 CST 2017"; SimpleDateFormat sdf = new Simple ...

  8. 使用SpringBoot集成ActiveMQ

    SpringBoot是个好东西,好多java常用的东西都被集成进去了 JMS 在 Spring Boot 中的使用 使用Spring/Spring Boot集成JMS的陷阱 Spring-boot J ...

  9. centos命令行系列之centos6防火墙的关闭以及开启

    输入:cat /etc/issue   查看版本 (一)通过service命令 注:service命令开启以及关闭防火墙为即时生效,下次重启机器的时候会自动复原 查看防火墙状态:service ipt ...

  10. python, 在信用评级中,计算KS statistic值

    # -*- coding: utf-8 -*- import pandas as pd from sklearn.grid_search import GridSearchCV from sklear ...