初玩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下载源代码。

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

相关文章
|
网络安全 数据安全/隐私保护 网络虚拟化
刷完OpenWrt在浏览器无法访问的解决办法
其实问题很明显、 是因为刷了trunk版固件、 并没有集成luci、 那接下来就是装luci、但是装luci需要联网(不过其实不联网其实也是可以安装的、) 我说的联网是让路有联网、而不是网线接路由,路由接电脑、然后电脑拨号上网、这种联网、 如何让路由联网呢? 1、最简单的方法、如果你有两个路由、或者...
12935 0
|
11月前
|
运维 安全 网络安全
|
11月前
|
数据可视化 数据挖掘 定位技术
MATLAB数据可视化
【10月更文挑战第8天】本文详细介绍了MATLAB中的数据可视化功能,涵盖基本绘图、特定绘图类型(如三维绘图、极坐标图)、高级图形功能(如自定义图形属性、子图、交互式图形、动画与动态可视化)以及地理数据可视化工具箱等内容。同时,文章还提供了性能优化建议,帮助用户在处理大型数据集时提升绘图效率。
|
12月前
|
运维 监控 云计算
产品动态丨阿里云计算巢月刊-2024年第09期
让优秀的企业软件生于云、长于云
|
开发者 Python
|
存储 算法 C语言
从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
182 5
|
移动开发 HTML5
HTML基本结构标签解析
HTML基本结构标签解析
414 0
|
存储 编解码 安全
阿里云服务器五代、六代、七代、八代实例规格与经济型e和通用算力型u1实例介绍
阿里云服务器实例规格经过多次升级之后,目前已经推出了最新的第八代云服务器,当下主售的云服务器实例也以及从以往的六代七代过渡到七代和八代为主,同时还有通用算力型及经济型这些刚推出不久的新品云服务器实例,对于有的新手用户来说,并不是很清楚阿里云五代、六代、七代、八代云服务器的实例规格具体有哪些,以及它们之间有何区别,最新一代相比于上一代在性能上有何提升。本文对阿里云五代、六代云服务器实例规格做个简单介绍,同时对七代和八代云服务器做个重点介绍,以供大家参考。
阿里云服务器五代、六代、七代、八代实例规格与经济型e和通用算力型u1实例介绍