正文

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

以上节点无法使用的情况下,请使用下面的备用节点:
备用节点【江苏】:(宝塔推荐使用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

宝塔面板特色:
面板特色功能:
一键配置服务器环境(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

5.手动适配新机型

参考教程

这里以手动适配小米路由3C为例

1.增加DTS文件

/lede/target/linux/ramips/dts/mt7628an_xiaomi_miwifi-3c.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
:
02_network
修正:
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

大概第103行的位置


原始文件:

        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、无线功率校准等参数
具体可以看


也就是说,不论我们怎么在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

# 修改登陆密码
root:$1$wEehtjxj$YBu4quNfVUjzfv8p/PBo5.:0:0:99999:7:::
# 密码经过加密,将密码修改成admin。

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

清除缓存文件

make clean
# 清除bin 目录
make dirclean
# 清除交叉编译工具及工具链目录
make distclean
# 清除所有相关的东西,包括下载的软件包,配置文件,feed内容等

固件网关:192.168.1.1
固件默认web账号:admin
固件默认web密码:password
固件默认ssh账号:root
固件默认ssh密码:password

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-minieapNetwork里输入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


这时,我们的minieap就编译好了,一般可以在bin/packages/架构名/base中找到,再用之前的方法scp上传到路由器的openwrt即可使用啦~
同样的,可以用这个方法编译openwrt其他的软件,主题等等.........

10.固件下载

小渔网盘
蓝奏云盘

11.更换内核

  • 更新于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
# 设定一线程编译
Last modification:October 17th, 2021 at 10:55 am
如果觉得我的文章对你有用,请随意赞赏