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

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://dev.openwrt.org/wiki/GetSource 这里我编译是的15.05

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

15.05 branch (Chaos Calmer)

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

14.07 branch (Barrier Breaker)

git clone -b barrier_breaker git://github.com/openwrt/openwrt.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主目录] 下输入命令 mark menuconfig 即可开始自定义选择组件

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默认语言

打开 openwrt/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 3600

config internal ccache
    option enable 1

config internal themes

设置默认开启WIFI

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

0x04 编译前注意事项

修改固件大小

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

修改 /openwrt/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(0);改为ath79_switch_data.phy_poll_mask = BIT(4);
ath79_eth0_data.phy_mask = BIT(0);改为ath79_eth0_data.phy_mask = BIT(4);

修改LED灯顺序问题

打开 /openwrt/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

时间: 2024-08-02 10:36:03

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

玩转动态编译(三) 提高性能,抛弃反射

通过之前2篇文章的介绍,大家一定发现了,动态编译后的对象只能通过反射调用,但是反射往往是 一个程序性能的瓶颈,这个真的无法突破么?答案当然是否定的,接下来就我就来说说怎么才能,挖掘 动态编译的潜力. 一点废话 我刚来博客园才1星期左右,昨天才弄懂怎么发表到首页,先 说声抱歉了,昨天的文章有几个地方贴的源码居然少了几个字符,有点莫名其妙,也难怪有人不能运行 了,虽然是小错误,但是如果认真检查的话也是可以避免的,这是我的失误. 还有一点,这个< 玩转动态编译>是一个系列的,虽然没有大纲,不知道会写

玩转动态编译(二) 实战

在玩转动态编译:一.初识中,我们已经学会了最简单的使用动态编译.今天直接由实战入手,看看 真实情况下的动态编译能为我们来带什么. 今天要演示的实例是一个在实际开发中经常遇到的情 况,对象转Json. 我将会使用2种方式分别做一个转json字符串的实例,1:反射:2:动态编译 分析问题 分析C#对象在json中的映射.总体来说json对象只有几种情况 键值对 对象,由多组键对象+值对象构成,最外面是一对花括号包裹,键值对对象同时也可作为"值对象"使用 数组对象,由多个值对象构成,最外面是

TP link配置WPA加密

目前来说WPA加密无线网络是最为安全的,还没有出现任何破解办法,所以本文介绍如何在tp link 802.11n套装中配置WPA加密方式来提升无线网络安全. 小提示:在我们的tp link 802.11n套装中无线路由器提供了一种名为WPA/WPA2的加密方式,不过这种方式的加密是需要RADIUS服务器的,通过RADIUS服务器达到验证的目的,对于我们大多数家庭来说不太现实,所以我们不对此做过多介绍. 第一步:进入无线路由设备管理界面.然后选择"无线设置"下的"无线安全设置&

tp link怎么设置端口映射

  tp link设置端口映射的方法 设置方法一: 1.添加新条目,登录路由器管理界面,进入 转发规则 > 虚拟服务器,并点击 添加新条目. 2.添加映射规则.添加服务器映射到外网的端口.实际端口.以及服务器IP地址. 注意:服务端口可以根据实际需要修改,内部端口必须与服务器端口一致. 3.添加完成后列表如下:至此,虚拟服务器(端口映射)规则设置完成. 设置方法二: 1.下载并登陆花生壳动态域名解析软件; 2.点击内网映射打开web端设置页面; 3.点击添加映射,填写映射信息; 4.点击确定,即

tp link wdr6300路由器怎么设置

  tp link wdr6300路由器设置方法 登录到TL-WDR6300路由器的设置界面,然后点击"无线频段设置"-->选择"无线同时工作在2.4GHz和5GHz频段(802.11a/b/g/n/ac)上"-->"保存". TP-Link TL-WDR6300路由器设置无线名称和密码教程步骤二:2.4GHZ无线网络名称和密码设置 1.2.4GHZ无线网络名称设置:点击"无线设置2.4GHz"-->&quo

tp link光纤无线路由器怎么设置

  tp link光纤无线路由器设置方法 1.首先打开电脑,然后任意打开一个网页,然后在浏览器的网址除输入自己路由器的登录iP地址,如下图: 如上图,以笔者无线路由器为例,首先在浏览器地址栏输入192.168.1.1然后按回车键,即可弹出下面的用户登录对话框,我们输路由器默认的用户名与密码,然后点击底部的"确定"即可进入到无线路由器内置设置界面. 2.进入路由器设置界面后,我们首先点击左侧导航里边的"设置向导"如下图: 进入路由器设置向导 3.点击"设置向

tp link路由器地址是什么

  一般情况是出现在我们第一次设置路由器时会登录不了路由器界面了,tp link路由器地址默认是192.168.1.1哦,下面我来给大家介绍登录不了管理界面解决办法与原因分析. 1.确认登录管理界面的方法和输入正确. 如下图所示,打开浏览器,在地址栏中输入192.168.1.1(注意中间的"."不能输入为"."),并按回车.如果仍然不能打开,请进行下一步排查. 2.检查并确认设备连线正确. 如下图所示,电脑网线连接路由器LAN1-4中其中之一,路由器电源通电,查看并

TP Link无线路由器设置

对初次接触无线网络的朋友来说,无线路由器怎么设置 可是困扰他们的一大难题.如何简单轻松地进行路由器的设置呢?下面我们将以颇具代表性的TP Link无线路由器 为例,为大家讲解如何快速地组建无线网络,来获得更好的无线传输效果.那么,就来一起了解下TP Link无线路由器设置 的方法吧. [TP Link无线路由器设置]登陆 对于TP Link无线路由器设置,先将电源接好,然后用网线将无线路由器的LAN口和计算机的网口连接好,这时就可以对无线路由器进行配置了. 你会在TP Link无线路由器的底部铭

vc6 0 编译-VC6.0编译问题“link: invalid option -- l”

问题描述 VC6.0编译问题"link: invalid option -- l" VC6.0编译出现以下问题,急问如何解决? Creating library... link: invalid option -- l Try `link --help' for more information. Error executing link.exe. msModule.dll - 1 error(s), 0 warning(s) 解决方案 工程编译选项不正确,查看工程配置