欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Openwrt编译教程:从头开始所有步骤(日志记录)

程序员文章站 2022-06-09 18:12:42
...
  1. 虚拟机安装linux
  2. 打开终端
sudo apt-get update
sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git subversion libssl-dev libncurses5-dev  patch unzip zlib1g-dev 


如果是64位系统的话还需要安装32位兼容包

sudo apt-get install libc6:i386 libgcc1:i386 libstdc++5:i386 libstdc++6:i386

 

在用户目录下mkdir 任意名
cd 任意名

源码下载地址的话可以通过以下网址查看
https://dev.openwrt.org/wiki/GetSource

还有这里要说明一下源码名字
以往教程里面都说backfire是稳定版,trunk是开发板
现在我在此要更正一下
1:trunk是开发板
2:稳定版的话现在大概有4个版本,backfire,AA,BB,CC
3:稳定版都是原来的TRUNK的一个稳定分支
4:backfire感觉是史前文明的产物,最新的ubuntu GCC编译器已经无法兼容backfire的代码,除非降级GCC,否则编译会出错

本人演示的代码用的是openwrt 15.05 最新的稳定版
输入源码的下载命令
git clone git://git.openwrt.org/15.05/openwrt.git 
之后
cd openwrt


接下来下载feeds更新,这是为了下载和安装让luci之类的第三方包的源码,如果不进行这步的话配置菜单是没有非op的包给你选的
./scripts/feeds update -a
安装feeds更新
./scripts/feeds install -a

接下来是
make defconfig
检测环境和添加包,之前的环境安装就是根据这个来的

然后
make menuconfig

 

添加LUCI
路径为LUCI-collections-LUCI

添加中文,添加自定义luci-app

 

首先
ulimit -s 10240 
这个命令是防止爆栈
对make加入多线程编译支持
make V=99 -j线程数
速度比单线程快N倍 

下面是修改openwrt各项配置参数所要找的位置:

etc/rc.local

Package/base-files/files/etc/rc.local

etc/sysctl.conf

Package/base-files/files/etc/sysctl.conf

Etc/config/dhcp:lan

Package/network/services/dnsmasq/files/dhcp.conf

Etc/config/dhcp:dnsmasq

Package/network/services/dnsmasq/files/dnsmasq.init

etc/config/uhttpd

Package/network/services/uhttpd/files

Etc/firewall.user

Package/network/config/firewall/files/firewall.user

Etc/config/system

Package/base-files/files/etc/config/system

Lib/ipaddr

Package/base-files/files/lib/ipaddr

www/*

Feeds./luci/modules/luci-base/root/www/*

Etc/config/wireless

Package/kernel/mac80211/files/lib/wifi/mac80211.sh

固件体积

Target/linux/ar71xx/image/makefile

型号名

Target/linux/ar71xx/base-files/lib/ar71xx.sh

LED网口配置

Target/linux/ar71xx/files/arch/mips/ath79/

主板系列配置

Target/linux/ar71xx/base-files/etc/uci-defaults

默认密码

Package/base-files/files/etc/shadow

etc/config/luci

Feeds./luci/modules/luci-base/root/etc/config/luci

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下面是TP系列单频路由器的配置表:

(水星和迅捷版本号相同 mw300r=fw300r,mw150r=fw150r,mw305r=fw305r)

型号

CPU

灯数

wr740n v5,mw150r v5/v6/v8,fw150r v5-v10

ar9331

8

wr740n v6,mw150r v10/v11,fw150r v11

ar9331

6

wr841n v8,mw300r v3/v4

ar9341

8

wr841n v9

ar9341

6

wr841n v10,mw305r v3

qca9531

6

wr841n v11,mw300r v9/v10,mw305r+ v1/v3.1

qca9533

6

mw300r v6/v7

mt7620n

8

mw305r v1/fwr200 v1/v2

mt7620n

6

mw300r v12,fwr200 v4

mt7628kn

6

水星迅捷路由器型号芯片整理

型号

芯片

内存闪存

天线

备注

310r v1/v2/v3

ar9341

2/16

3

 

310r v4,313r v1

mt7620n

1/8

3

 

310r v5,313r v2 v3,315r v1

mt7628kn

1

3

 

316r v1

qca9533

1/8

3

坑爹功放

325r v1,323r v1,320r v1

qca9533

1/8

4

 

325r v2

bcm5357

 

4

 

325r v3

mt7628kn

1

4

 

ar9331系列主板配置在wr741nd-v4中,改网口顺序

AR9331修正方法:以编译tl-wr741n-v4固件为例,找到文件mach-tl-wr741nd-v4.c,在目录attitude_adjustment/target/linux/ar71xx/files/arch/mips/ath79/下,将代码
ath79_setup_ar933x_phy4_switch(true, true); 改为ath79_setup_ar933x_phy4_switch(false, false);或者直接删掉。

AR9341修正方法:以编译tl-wr841n-v8固件为例,在刚才的目录下找到文件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);

无线名称参数默认值:

无线设置初始化
config wifi-device  radio$devidx
	option type     mac80211
	option channel  auto
	option country  CN
	option hwmode	11${mode_band}
$dev_id
$ht_capab
	# REMOVE THIS LINE TO ENABLE WIFI:
	option disabled 0

config wifi-iface
	option device   radio$devidx
	option network  lan
	option mode     ap
	option ssid     ZUT-$(cat /sys/class/ieee80211/${dev}/macaddress|awk -F ":" '{print $5""$6}'|tr a-z A-Z)
	option encryption none

 

相关标签: openwrt