从零开始编译OpenWrt固件

从零开始编译OpenWrt固件

前言

进来阅读这篇文章的相信都是对OpenWrt有一定的了解的,对于OpenWrt的介绍这里就不再赘述,可以自行查找相关百科了解。

OpenWrt是适合于嵌入式设备的一个Linux发行版,可以通过其提供的相关工具,选择适合自己设备(路由器等)的参数,进行镜像文件编译。

本文以TP-Link TL-WR703R路由器为例,进行OpenWrt 固件编译讲解。

文章原创,转载请注明来源,谢谢。

环境搭建

OpenWrt的源码编译工作需要在Linux操作系统下进行,一般开发人员的计算机都是Windows操作系统,所以需要在Windows上安装Linux虚拟机。

本教程选用开源虚拟机软件Oracle VM VirtualBox,Linux操作系统选用Ubuntu。
下载链接如下:
VirtualBox-6.0.4-128413-Win
https://pan.baidu.com/s/1ZfpRg5W6yMM0SQLthiHiiw 提取码:见附件
Ubuntu 16.04.x LTS (64bit)
https://pan.baidu.com/s/10CSU8XhHRrh_0CNJEvpP-w 提取码:见附件

安装VirtualBox虚拟机软件,根据提示建立Ubuntu虚拟机
安装过程略

安装完成后,进入Ubuntu虚拟机,确认虚拟机与宿主机能够互相ping通,并且虚拟机能够正常连入互联网。

在Ubuntu终端内输入

sudo su
apt-get update    
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 subversion
apt-get install asciidoc  

sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc

安装这些工具和依赖大约需要30分钟,等待完成后,进行OpenWrt源码下载。

源码下载(大约10分钟)

cd ~
git clone https://github.com/openwrt/openwrt.git

更新和安装相关feeds(大约10分钟)

cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

至此环境搭建已完成

配置及编译

以TP-Link TL-WR703N为例,进行相关配置讲解
从零开始编译OpenWrt固件_第1张图片
TL-WR703N硬件参数

名称 参数
CPU Atheros AR9331 rev 1
内存 32MB DDR
Flash Winbond W25Q32 @ 20MHz (4MB)
以太网 Atheros AR8216 rev 2
时钟频率 CPU: 400MHz, DDR: 400MHz, AHB: 200MHz, Ref: 25MHz

为增强可玩性,更换Flash为16M,更换内存为64M,硬改后参数如下

名称 参数
CPU Atheros AR9331 rev 1
内存 64MB DDR
Flash Winbond W25Q128 @ 20MHz (16MB)
以太网 Atheros AR8216 rev 2
时钟频率 CPU: 400MHz, DDR: 400MHz, AHB: 200MHz, Ref: 25MHz

通过编程器备份原4M Flash 固件,并通过Hex Workshop软件提取ART(无线校准)文件
Hex Workshop
https://pan.baidu.com/s/1LjkoytlW6-4UF-0yaZC2Ng 提取码:见附件

ART起始地址: 0x003F0000
ART结束地址: 0x00400000
提取好的ART文件
tl-wr703n-art.bin
https://pan.baidu.com/s/1UEtdTipUxlCa3smY8Kq-CA 提取码:见附件

通过编程器将breed写入16M Flash,写入之前最好擦除整片数据。
(注:Breed来自恩山hackpascal大神)
breed-ar9331-r1163.bin
https://pan.baidu.com/s/1yAWzjVkSMw6tr1EZzjrggA 提取码:见附件

修改固件大小

vi target/linux/ar71xx/image/tiny-tp-link.mk

第343行
将(Device/tplink-8mlzma)
改为$(Device/tplink-16mlzma)
保存并退出

使能WR703N路由器编译项

vi target/linux/ar71xx/config-4.14

第227行
将# CONFIG_ATH79_MACH_TL_ WR703N is not set
改为CONFIG_ATH79_MACH_TL_WR703N=y
保存并退出

打开配置菜单

make menuconfig

设置必要选项
Target System (Atheros AR7xxx/AR9xxx)
Subtarget (Devices with small flash)
Target Profile (TP-LINK TL-WR703N v1)

LuCI —>
1.Collections —>
<*> luci… LuCI interface with Uhttpd as Webserver (default)

LuCI —>
2. Modules —>
Translations —>
<*> Chinese (zh-cn)

完成后,保存退出

编译(首次编译大约12小时,第二次编译只需30分钟左右)

make V=99

编译成功后,通过sftp工具将bin/targets/ar71xx/tiny 路径下的 openwrt-ar71xx-tiny-tl-wr703n-v1-squashfs-factory.bin导出到宿主机
SFTP工具 FileZilla
https://pan.baidu.com/s/1VCQO-RHhL80P2Rj9qbFuyg 提取码:见附件

固件更新

通过breed进行固件更新,更新操作完成后再次进入breed进行恢复出厂设置,可增加开机成功率。
从零开始编译OpenWrt固件_第2张图片

从零开始编译OpenWrt固件_第3张图片

16M OpenWrt固件(裸固件,无酸酸乳等其他插件,谢谢)
openwrt-ar71xx-tiny-tl-wr703n-v1-squashfs-factory-20190205.bin:
https://pan.baidu.com/s/1h1J-mMTX_bAHlCWRSJhhyQ 提取码:见附件

附件

文中的相关文件和软件除了自行编译的OpenWrt固件其余均来自于网络,整理成附件方便大家下载。
https://download.csdn.net/download/xinancao_/10949504

你可能感兴趣的:(openwrt)