正文
1.安装ubuntu 16
2.安装编译环境
使用root
登陆ssh
然后运行
apt update && apt-get upgrade -y
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc-s1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync libpam0g-dev vim libpam-dev libperl-dev openssh-server upx-ucl
3.拉取openwrt源码
git clone https://github.com/coolsnowwolf/lede --depth=1
cd lede/
./scripts/feeds update -a
./scripts/feeds install -a
4.安装宝塔
Linux面板7.4.5安装命令:使用SSH 连接工具(查看使用方法),挂载磁盘后(查看),根据系统执行框内命令开始安装(大约2分钟完成面板安装)
Centos安装命令:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
试验性Centos/Ubuntu/Debian安装命令 独立运行环境(py3.7) 可能存在少量兼容性问题 不断优化中
curl -sSO http://download.bt.cn/install/install_panel.sh && bash install_panel.sh
Ubuntu/Deepin安装命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
Debian安装命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh
Fedora安装命令:
wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
Linux面板7.4.5升级命令:
curl http://download.bt.cn/install/update6.sh|bash
[collapse status="false" title="以上节点无法使用的情况下,请使用下面的备用节点:
"]备用节点【江苏】:(宝塔推荐使用4核8G 100G BGP高防的尊云zun.com云服务器安装)
yum install -y wget && wget -O install.sh http://180.101.160.68:5880/install/install_6.0.sh && sh install.sh
备用节点【香港】:(宝塔推荐使用CN2 双程GIA高品质,免备案的尊云zun.com香港云服务器安装)
yum install -y wget && wget -O install.sh http://103.224.251.67:5880/install/install_6.0.sh && sh install.sh
备用节点【美国】:(宝塔推荐使用价格厚道,高性能v4的尊云zun.comKVM云服务器安装)
yum install -y wget && wget -O install.sh http://128.1.164.196:5880/install/install_6.0.sh && sh install.sh
若点击更新后没生效,请尝试重启面板服务:
bt restart
[/collapse]
[collapse status="false" title="宝塔面板特色:
"]面板特色功能:
一键配置服务器环境(LAMP/LNMP)
一键安全重启
一键创建管理网站、ftp、数据库
一键部署SSL证书
一键部署源码(discuz、wordpress、dedecms、z-blog、微擎等等)
一键配置(定期备份、数据导入、伪静态、301、SSL、子目录、反向代理、切换PHP版本)
一键安装常用PHP扩展(fileinfo、intl、opcache、imap、memcache、apc、redis、ioncube、imagick)
数据库一键导入导出
系统监控(CPU、内存、磁盘IO、网络IO)
防火墙端口放行
SSH开启与关闭及SSH端口更改
禁PING开启或关闭
方便高效的文件管理器(上传、下载、压缩、解压、查看、编辑等等)
计划任务(定期备份、日志切割、shell脚本)
软件管理(一键安装、卸载、版本切换)
面板管理常用命令:https://www.bt.cn/btcode.html
[/collapse]
5.手动适配新机型
参考教程
[scode type="yellow"]这里以手动适配小米路由3C为例[/scode]
1.增加DTS文件
/lede/target/linux/ramips/dts/mt7628an_xiaomi_miwifi-3c.dts
2.修改mt76x8.mk
位置:/lede/target/linux/ramips/image/mt76x8.mk
define Device/xiaomi_miwifi-3C
IMAGE_SIZE := 16064k
DEVICE_VENDOR := Xiaomi
DEVICE_MODEL := MiWiFi 3C
DEVICE_PACKAGES := uboot-envtools
SUPPORTED_DEVICES += miwifi-3C
endef
TARGET_DEVICES += xiaomi_miwifi-3C
define Device/xiaomi_miwifi-3A
IMAGE_SIZE := 16064k
DEVICE_VENDOR := Xiaomi
DEVICE_MODEL := MiWiFi 3A
DEVICE_PACKAGES := kmod-mt76x2 uboot-envtools
SUPPORTED_DEVICES += miwifi-3A
endef
TARGET_DEVICES += xiaomi_miwifi-3A
3.配置端口
修改/lede/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
/lede/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
错
:
修正
:
因为以前适配过Padavan,所以对于网口问题,我有一个大胆的猜想
padavan xiaomi-mini 网口源码:
# CONFIG_RAETH_ESW_IGMP_SNOOP_HW is not set
CONFIG_RAETH_ESW_PORT_WAN=4
CONFIG_RAETH_ESW_PORT_LAN1=1
CONFIG_RAETH_ESW_PORT_LAN2=0
CONFIG_RAETH_ESW_PORT_LAN3=3
CONFIG_RAETH_ESW_PORT_LAN4=2
# CONFIG_RAETH_SNMPD is not set
CONFIG_RAETH_READ_MAC_FROM_MTD=y
# CONFIG_RAETH_MEMORY_OPTIMIZATION is not set
# CONFIG_RAETH_DEBUG is not set
openwrt xiaomi-mini 网口源码:
lenovo,newifi-y1|\
xiaomi,miwifi-mini)
ucidef_add_switch "switch0" \
"0:lan:2" "1:lan:1" "4:wan" "6@eth0"
;;
# 通过对比得知,网口参数一致,于是以前适配的Padavan参数完全可以移植过来。
4.修改默认网关地址
文件在/package/base-files/files/bin/config_generate
<p style="color:#0984e3">大概第103行的位置</p>
原始文件:
lan) ipad=${ipaddr:-"192.168.1.1"} ;;
*) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;;
esac
netm=${netmask:-"255.255.255.0"}
修改文件:
lan) ipad=${ipaddr:-"10.32.0.1"} ;;
*) ipad=${ipaddr:-"10.32.$((addr_offset++)).1"} ;;
esac
netm=${netmask:-"255.255.254.0"}
openwrt 编译常用包到固件中
设置想要装的包,目前只需要最基本的包,usb samba sd mmc
需要什么包,选什么包,在哪里选,选哪个?
这个要看经验。一般来说USB 需要内核支持。 usb 又分 ohci ehci,U盘的话,要选 usb storage。usb声卡要选 usb sound。
1, luci 添加语言支持和一些常用的功能,全部的主题。
LuCI --->
1. Collections --->
<*> luci................... LuCI interface with Uhttpd as Webserve
2. Modules --->
Translations --->
<*> Chinese (zh-cn)
3. Applications --->
<*> luci-app-commands
<*> luci-app-samba
<*> luci-app-uhttpd
<*> luci-app-upnp.
<*> luci-app-vnstat
4. Themes --->
-*- luci-theme-bootstrap
<*> luci-theme-freifunk-generic
<*> luci-theme-material
<*> luci-theme-openwrt.
2,网络工具,选几个常用的
Network --->
File Transfer --->
<*> curl
<*> vsftpd
<*> wget...
<*> ipset.
3, 声音支持 mpg123 是比较新的 mp3 解码器,比 mad 快。 madplay 直接可以播放 mp3 用来测试不错。
Sound --->
<*> alsa-utils
<*> madplay-alsa
-*- mpg123
Openwrt Mac地址总结
通过测试,该语句的意思应该是从mtd3: 00010000 00010000 "Factory"
也就是eeprom/art 中读取mac地址 Factory也就是我们的 art/eeprom 分区里面有mac地址、sn、无线功率校准等参数
具体可以看[post cid="382" /]
也就是说,不论我们怎么在Openwrt系统里改Mac参数都是无效的,要想生效很简单,就是在配置文件中删除你要编译的型号即可,
例如:
/home/oprenwrt/lede/target/linux/ramips/mt76x8/base-files/etc/board.d
<!--more-->
ramips_setup_macs()
{
local board="$1"
local lan_mac=""
local wan_mac=""
local label_mac=""
case $board in
aigale,ai-br100|\
asus,rt-n12p|\
asus,rt-n14u|\
bdcom,wap2100-sk|\
edimax,ew-7478apc|\
fon,fon2601|\
head-weblink,hdrm200|\
nexx,wt3020-4m|\
nexx,wt3020-8m|\
phicomm,psg1208|\
planex,db-wrt01|\
planex,mzk-750dhp|\
sanlinking,d240|\
vonets,var11n-300|\
wrtnode,wrtnode|\
youku,yk1|\
zbtlink,zbt-ape522ii|\
zbtlink,zbt-wa05|\
zbtlink,zbt-we2026|\
zbtlink,zbt-we826-16m|\
zbtlink,zbt-we826-32m|\
zbtlink,zbt-we826-e|\
zbtlink,zbt-wr8305rt)
wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1)
;;
# 如果不需要`youku,yk1|\`则从上诉参数中删除`youku,yk1|\`保存生效即可开始编译
6.更改软件源以及拉取nps
编辑文件feeds.conf.default
src-git packages https://git.openwrt.org/feed/packages.git
src-git luci https://git.openwrt.org/project/luci.git
src-git routing https://git.openwrt.org/feed/routing.git
src-git telephony https://git.openwrt.org/feed/telephony.git
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
#src-git video https://github.com/openwrt/video.git
#src-git targets https://github.com/openwrt/targets.git
#src-git oldpackages http://git.openwrt.org/packages.git
#src-link custom /usr/src/openwrt/custom-feed
清空原有软件包
rm -rf ./feeds
拉取nps
git clone https://github.com/mu910125/luci-app-nps package/luci-app-nps
要安装其所有包定义,请运行:
./scripts/feeds update -a
./scripts/feeds install -a
使用Goproxy解决golang.org模块无法下载的问题
export GOPROXY=https://goproxy.cn
# 或者
echo "GOPROXY=https://goproxy.cn" >> ~/.profile && source ~/.profile
7.更改默认密码开启ssh
7.1 更改root密码
位置:package/base-files/files/etc/shadow
# 修改登陆密码
root:$1$wEehtjxj$YBu4quNfVUjzfv8p/PBo5.:0:0:99999:7:::
# 密码经过加密,将密码修改成admin。
7.2 更改默认wifi名以及设定密码
参阅:
- https://openwrt.org/zh-cn/doc/uci/wireless
- https://siflower.github.io/2020/08/12/wifi_architecture_and_configuration_manual/
示例:
更改地址:lede/package/kernel/mac80211/files/lib/wifi/mac80211.sh
set wireless.default_radio${devidx}=wifi-iface
set wireless.default_radio${devidx}.device=radio${devidx}
set wireless.default_radio${devidx}.network=lan
set wireless.default_radio${devidx}.mode=ap
set wireless.default_radio${devidx}.ssid=Yuos_$(cat /sys/class/ieee80211/${dev}/macaddress|awk -F ":" '{print $5""$6 }'| tr a-z A-Z)
set wireless.default_radio${devidx}.encryption=psk2
set wireless.default_radio${devidx}.key=1234567890
7.3 添加DNS和网关IP
参阅: https://openwrt.club/45.html 源码地址:package/base-files/files/bin/config_generate
set network.$1.gateway='192.168.1.1'
set network.$1.dns='8.8.8.8 223.5.5.5 114.114.114.114'
# 第一个是网关的地址,第二个是DNS地址,可以设置多个DNS地址中间用空格隔开。
示例:
case "$protocol" in
static)
local ipad
case "$1" in
lan) ipad=${ipaddr:-"10.32.0.1"} ;;
*) ipad=${ipaddr:-"10.32.$((addr_offset++)).1"} ;;
esac
netm=${netmask:-"255.255.255.0"}
uci -q batch <<-EOF
set network.$1.proto='static'
set network.$1.ipaddr='$ipad'
set network.$1.netmask='$netm'
set network.$1.gateway='10.32.0.1'
set network.$1.dns='8.8.8.8 223.5.5.5 114.114.114.114'
EOF
[ -e /proc/sys/net/ipv6 ] && uci set network.$1.ip6assign='60'
;;
8.开始编译
然后ssh
进入目录
cd lede/
make menuconfig
# 选择配置
make -j8 download V=s
# 下载dl库(国内请尽量全局科学上网)
make V=s -j1
# 设定一线程编译
# 当然也可以最快速度编译
make V=99
输入 make -j1 V=s (-j1
后面是线程数。第一次编译推荐用单线程)即可开始编译你要的固件了。
本套代码保证肯定可以编译成功。里面包括了 R20 所有源代码,包括 IPK 的。
编译结果在
/lede/bin/targets/ramips/mt76x8/openwrt-ramips-mt76x8-xiaomi_miwifi-3c-squashfs-sysupgrade.bin
[scode type="yellow"]
清除缓存文件
make clean
# 清除bin 目录
make dirclean
# 清除交叉编译工具及工具链目录
make distclean
# 清除所有相关的东西,包括下载的软件包,配置文件,feed内容等
固件网关:192.168.1.1
固件默认web账号:admin
固件默认web密码:password
固件默认ssh账号:root
固件默认ssh密码:password
[/scode]
upx: No such file or directory解决
sudo apt install -y upx-ucl
# 安装upx
whereis upx
# 查找安装目录
/usr/bin/upx
cp /usr/bin/upx /home/luobo/openwrt/staging_dir/host/bin/
cp /usr/bin/upx-ucl /home/luobo/openwrt/staging_dir/host/bin/
现在重新进行编译即可完成
9.添加其他主题或插件
以编译minieap为
例
在解压后到sdk文件夹中clone,输入
git clone https://github.com/ysc3839/openwrt-minieap.git package/minieap
git clone https://github.com/kongfl888/minieap.git package/minieap
git clone https://github.com/ysc3839/luci-proto-minieap.git package/luci-proto-minieap
git clone https://github.com/kongfl888/luci-app-minieap.git
编译 po2lmo
(如果有po2lmo可跳过)
git clone https://github.com/openwrt-dev/po2lmo.git
pushd po2lmo
make && sudo make install
popd
更新,安装软件包,输入
./scripts/feeds update luci
./scripts/feeds install -a
然后再输入make menuconfig V=sc
在LuCI里输入M选择luci-app-minieap``luci-proto-minieap
,Network
里输入M
选择minieap
先选择LuCI
在luci-proto-minieap前的括号里填上M后回到首页选择Network
在minieap
前的括号里填上M
最后,打包ipk,输入,
make package/minieap/compile V=s
make package/luci-proto-minieap/compile V=s
make package/luci-app-minieap/compile V=s
[scode type="blue"]
这时,我们的minieap
就编译好了,一般可以在bin/packages/架构名/base
中找到,再用之前的方法scp
上传到路由器的openwrt
即可使用啦~
同样的,可以用这个方法编译openwrt其他的软件,主题等等.........
[/scode]
10.固件下载
小渔网盘
蓝奏云盘
11.更换内核
[scode type="blue"]
- 更新于2021-10-17
我发现最新的5.10内核
会导致垃圾路由(比如小米路由3硬改16M flash版)无法正确生成.bin
刷机包,取消所有插件以及主题后仍然超出0.19M
左右,故尝试更换内核并记录
注释配置文件
内核文件:lede/include/kernel-version.mk
LINUX_VERSION-5.4 = .150
# LINUX_VERSION-5.10 = .70
#注释5.10,启用5.4
LINUX_KERNEL_HASH-5.4.150 = f424a9bbb05007f04c17f96a2e4f041a8001554a9060d2c291606e8a97c62aa2
# LINUX_KERNEL_HASH-5.10.70 = 75736c33711d7f298889ee4981b18774882045323e5c46af9ad3b022082db232
#注释5.10,启用5.4
注释后建议执行
make distclean
# 清除所有相关的东西,包括下载的软件包,配置文件,feed内容等
重新拉取软件包
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
# 更新插件包
make menuconfig
# 选择配置
make -j8 download V=s
# 下载dl库(国内请尽量全局科学上网)
make V=s -j1
# 设定一线程编译
12.使用闭源驱动
以小米4A千兆版为例
define Device/xiaomi_mi-router-4a-gigabit
$(Device/dsa-migration)
$(Device/uimage-lzma-loader)
IMAGE_SIZE := 14848k
DEVICE_VENDOR := Xiaomi
DEVICE_MODEL := Mi Router 4A
DEVICE_VARIANT := Gigabit Edition
DEVICE_PACKAGES := kmod-mt7603e kmod-mt76x2e luci-app-mtwifi \
-wpad-openssl
endef
TARGET_DEVICES += xiaomi_mi-router-4a-gigabit