刷openwrt固件_Newifi_D2/Y1_对应设备的固件文件名_在线定制固件_owut
刷openwrt固件_Newifi_D2/Y1_对应设备的固件文件名_在线定制固件_owut
转载注明来源: 本文链接 来自osnosn的博客,写于 2019-12-24, 更新2023-05.
Newifi mini, 对应 Y1
- 1个百兆WAN/2个百兆LAN/1个USB2.0/2.4G+5G WIFI/2条天线
- http://downloads.openwrt.org/
- 找 Stable Release
ramips/mt7620/y1-squashfs-sysupgrade.bin
- 推荐【immortalwrt-24.10.01】
- 【自编译Lean大Newifi mini y1固件,折腾支持u盘过程记录】
- 【FantajiNeko/Actions-OpenWrt-Lenovo_Newifi_Y1】
Newifi 3, 对应 D2
- 1个千兆WAN/4个千兆LAN/1个USB3.0/2.4G+5G WIFI/4条天线
- http://downloads.openwrt.org/
- 找 Stable Release
ramips/mt7621/d-team_newifi-d2-squashfs-sysupgrade.bind-team_newifi-d2-initramfs-kernel.bin不用这个。
这个kernel可以用来直刷设备的flash,或者用来制作启动映像。
有个参考 【openwrt之initramfs-kernel】。
-
注: Newifi D2的5G wifi只能工作在36-44,149-161这些频道之间。其他频道5G不工作。
- 【官网原始版openWRT-22.03.3】
- overlay总空间/剩余空间: 25.4MB/24.6MB。账号:root/无密。默认IP: 192.168.1.1 。
- 推荐【immortalwrt-24.10.01】
- 默认中文界面。登录:root/无密。wifi: "ImmortalWrt" 开放网络(无密)。
- 默认IP:192.168.1.1 。overlay总空间/剩余空间: 22.4MB/21.7MB。
- wg支持,装 luci-proto-wireguard 即可
【P3TERX/OpenWrt-Newifi_D2】比较新。- 2023-01 测试, 记录。
- overlay总空间/剩余空间: 9.6MB/8.9MB。账号: root/password。默认IP: 10.0.0.1 。
- 服务: "系统"中,"TTYD","时间同步","磁盘管理","挂载点(文件系统)"。
"服务"中,***+,上网时间控制,DDNS,迅雷快鸟,网络唤醒,KMS服务,frpc内网穿透,UPnP。
"网络存储"中,usb打印服务,硬盘休眠,FTP服务,网络共享smbd,挂载外部smb目录。
"网络"中,访客网络(wifi),TurboACC网络加速。
- 【【2022.9.9 更新】新路由3/小娱 Lean源码 支持一键更新固件】
- 【Hyy2001X/AutoBuild-Actions-BETA/releases】
- 2023-01 测试, 记录。
- overlay总空间/剩余空间: full 512KB/110KB, *** 5.7MB/5.2MB, Lite 9.1MB/8.4MB。账号: root/password。默认IP: 192.168.1.1 。
- Lite版的服务: "系统"中,"web管理","TTYD","挂载点(文件系统)"。
"服务"中,广告屏蔽大师Plus+,AdGrard Home,***+,上网时间控制,解锁网易云灰色歌曲,DDNS,smartDNS,网络唤醒,KMS服务,UPnP。
"网络存储"中,usb打印服务,硬盘休眠,Webd网盘,FTP服务,网络共享smbd。
"VPN"中,ZeroTier
"网络"中,Natter,Socat,网速控制,SQM/QoS,TurboACC网络加速,多线多拨,负载均衡。
Lite版,长时间不重启(超过7个月,也可能是4个月),会死机(无法连接wifi,电脑有线插LAN口无法获取IP,无法登录luci,ping不通wan,wan口不停收发数据包,导致交换机卡死.)。断电重启openwrt就恢复了。 - ***: "服务"中多了"Open*****","阿里云盘WebDav","微信推送","iperf3服务","udpxy","uHttpd","MWan3分流"。
"网络存储"中多了"aria2"。"VPN"中多了"PPTP","IPsec"。 - Full: "服务"中少了"Open*****",多了"阿里云盘WebDav","微信推送","iperf3服务","udpxy","uHttpd","MWan3分流","frpc内网穿透"。
"网络存储"中多了"aria2"。"VPN"中多了"PPTP","IPsec"。
- 【fichenx/OpenWrt】
- 【IvanSolis1989/OpenWrt-DIY】
- 【Newifi3-D2刷自定义Openwrt固件指北】
- 【kizimirua/NEWIFI-D2-OpenWrt】
- 【kizimirua/NEWIFI-D2-OP】
- 【a0575/Newifi3d2-OpenWrt】
- ASUS 【hfxunlp/TMRAF】
其他
- 官网原始版,自定义预安装包【firmware-selector】
- immortalwrt,自定义预安装包【firmware-selector】
- 别人的介绍 (包含扩容指引)【关于安装 OpenWrt 固件 或 ImmortalWrt 固件】
- LEDE/OpenWrt 固件。ptpt52编译,代号X-WRT
- OpenWrt-22.03.5 第三方编译, 2023-05记录
- Newifi Mini (Y1) 刷小米固件后掉Breed解决方法
- Breed下刷固件教程
- 进入Breed模式:
Reset键: Y1在usb和网口之间,D2在电源口边上。
电脑的有线网口接路由器的LAN口,拔掉路由器的电源。
按住Reset键不要松开,再插上路由器电源,十秒后再松开Reset键(部分路由器进入Breed时候指示灯会一起闪烁)。
breed 有 dhcpd。
在电脑的浏览器内输入breed管理地址192.168.1.1进入breed页面。
选择:- 固件更新->常规固件
- (勾上) 固件->选择文件
闪存布局: 公版(0x50000)
(勾上) 自动重启 - 上传。
- 进入Breed模式:
- breed Web刷机升级详细教材
Breed恢复模式刷写自定义固件教程
自用,刷官网原始版步骤,(备忘)
Y1 (2023-01 刷机)
- 通过breed刷入 【22.03.3 的"release版"】。需要等很久。Y1的刷写1分钟,等第一次启动约5分钟,耗时较长。再次重启只要1.5分钟。
- 设置root密码。关WIFI。改lan IP,避开光猫IP。overlay总/剩余: 10MB/9.5MB。
- 联网,
opkg update。 - 替换 wpad-openssl 包,做 radius 服务。【这里】。
- remove wpad-basic-wolfssl, 先装hostapd-common,再装wpad-openssl。
考虑原来使用的是 wolfssl库,用sdk重新编译一个 wpad-wolfssl 的包。避免再多装一个900多kb 的 libopenssl 库。
英文或数字证书,wpad-wolfssl 支持 OK。
但是,如果证书中包含中文,wpad-wolfssl 支持不好,客户端通过证书登陆失败,有时会导致hostapd进程退出。
证书中是否含有中文,wpad-openssl 支持都 OK。
- remove wpad-basic-wolfssl, 先装hostapd-common,再装wpad-openssl。
- 创建 /etc/hostapd/ 配置文件。【这里】。
- 装入 3proxy 包。【这里】。overlay总/剩余: 10MB/6.3MB。
- 安装 usb 支持包。ext4支持。见【newifi_D2_新3_lede_插U盘扩容overlay_装可道云】
- 装 upnp (按需)。
- 这样手工安装比较麻烦,考虑用imagebuilder打包一个自定义bin文件。
但,不知道"release版"的bin中有些什么包。
方法1:可以先刷到Y1设备上,设备不需联网,用命令opkg list-installed获取包列表。
方法2,推荐:通过设备中的/usr/lib/opkg/status文件获取包列表。
方法3:可以先刷到Y1设备上,设备需要联网,用命令owut list -f fs-all获取包列表。
Y1的bin是 "u-boot legacy uImage" 格式,lzma压缩的。
有文章说,应该用mkimage -l xxx.bin来读取。安装apt install u-boot-tools之后,发现读取失败,更别说提取文件了。
又有文章【Help unpacking U-boot firmware】,说可以用【ReFirmLabs/binwalk】来读取。
安装apt install binwalk之后,确实可以读取了。 binwalk这个包是python3写的,依赖包挺多,装下来占用150MB硬盘空间。
这篇文章也提到了binwalk【从固件里反编译dtb为dts】。
用binwalk -e xxxx.bin或binwalk -Me xxxx.bin解包。
用 debian 的p7zip或p7zip-full包的7za命令, 或windows版的 7-zip, 也可以把 xxx.bin 解压出来, 只是symbolic link解的不对,但不影响看bin里头的文件。
xxx.itb文件,手工改名为xxx.itb.gz后,7-zip 也能解开。
在解压出来的文件系统目录中,找到.../squashfs-root/usr/lib/opkg/status, 应该可以得知原来有些什么ipk包。
这样就可以在这个基础上,添加/删减ipk,制作自己的bin文件了。见【用ImageBuilder打包自定义img】。- 里头有个squashfs的文件,用
mount -r -o loop xxx.squashfs test/挂载失败。可以用unsquashfs -f强制解开里头的文件。和 binwalk 解出的是一样的。没必要自己解压了。 - 里头有个"40"文件,其中包含 dtb 的设备信息表(需截取)。可以使用 dtc 命令,对 dtb和 dts文件相互转换。dts是个可读的文本文件。使用
apt install device-tree-compiler。
生成的dts文件不包含任何注释,并展开和替换了dtsi中的引用。【使用dtc将dtb转换成dts】。
- 里头有个squashfs的文件,用
- 两种方法获取"release版"的bin中的缺省包。
用"方法1",得到的列表比较多,有140多个,其中包含很多依赖包。
用"方法2",得到的列表比较精简,只有30多个。
用"方法3",得到的列表也比较精简,只有30多个,但设备需要联网。
我实际使用"方法2"获取缺省包,制作自定义bin,刷入之后,再用opkg list-installed获取列表,和"release版"是一样的,除了我另加入的包。也是140多个。 - imagebuilder 创建过程:
把需要替换的 hostapd-common,wpad-wolfssl或wpad-openssl 两个包,copy 到 imagebuilder 的/packages/目录中。
因为 packages 目录中的新包的版本号,比"release版"的新,所以打包时,会使用这个新包。
在 imagebuilder 中创建/ext_root/目录。在此目录中添加额外文件,
创建/ext_root/etc/hostapd/目录,在里头放入配置文件 hostapd.conf 等相关文件,【这里】。
再创建/ext_root/lib/upgrade/keep.d/hostapd-radius文件, 内容为/etc/hostapd/,备份配置时包含这个目录。
再创建/ext_root/etc/3proxy/目录。在此目录中添加配置文件,【这里】。
再创建/ext_root/lib/upgrade/keep.d/3proxy文件, 内容为/etc/3proxy/,备份配置时包含这个目录。
再创建/ext_root/etc/rc.local文件, 加入启动命令,用于替换"release版"的 rc.local 。
再创建/ext_root/root/task/task5min.sh脚本文件。用于定时任务。【这里】。
再创建/ext_root/etc/crontabs/root文件。chmod 600,内容为*/5 * * * * /bin/sh /root/task/task5min.sh,建立定时任务。
再创建/ext_root/lib/upgrade/keep.d/root-task文件, 内容为/root/task/,备份配置时包含这个目录。
如果要修改/etc/config/中的配置,见【openwrt_imagebuilder_修改缺省配置_system_network_firewall_root密码_制作免配置固件】。
用make image PROFILE="lenovo_newifi-y1" FILES="ext_root" PACKAGES="-wpad-basic-wolfssl wpad-openssl coreutils-shuf htop bind-dig curl rsync diffutils luci-app-wireguard block-mount kmod-fs-exfat kmod-fs-ext4 kmod-fs-vfat kmod-usb-storage 3proxy ...."参数,生成新的bin包。
"...." 是 "liblucihttp0 cgi-io luci-lib-base luci-app-opkg rpcd luci-lib-ip libubus-lua libiwinfo-lua luci-mod-system luci-theme-bootstrap px5g-wolfssl luci-mod-status luci-app-firewall lua luci-ssl rpcd-mod-file rpcd-mod-luci luci-proto-ppp luci-mod-admin-full luci-base luci-proto-ipv6 uhttpd liblua5.1.5 luci-lib-nixio liblucihttp-lua luci-lib-jsonc luci rpcd-mod-iwinfo luci-mod-network uhttpd-mod-ubus rpcd-mod-rrdns"
没装 wget-ssl 。
通过breed刷入。overlay 总/剩余: 6.8/6.4MB。
分别插入usb2.0/3.0的U盘,都能正常挂载,支持exfat,vfat,ext4。 - 另做一个bin,加上
vimvim-fulletherwake ncat telnet-bsd ntpdatefile proxychains-ng nmap。(空间6.3/5.8MB)。
再加coreutils-sleepwget-ssl luasql-sqlite3 xfrpc。
xfrpc 默认是disabled。coreutils-sleep支持ms毫秒级,可以用lua的nixio中的sleep代替。
插个 U盘,再装sqlite3-cli nmap-ssl file proxychains-ng tmux wget-ssl - 早些时候,做过一次剩余空间对比。
同样是替换一个包,增加两个包。(-wpad-basic-wolfssl wpad-wolfssl libopenssl 3proxy)
手工用 opkg 安装,overlay 总/剩余 10MB/7.1MB。
用 imagebuilder 生成bin,通过breed刷入,overlay 总/剩余 9MB/8.5MB。 - 把其他比较大的包装到U盘上。【opkg安装软件到u盘】。
D2 (2023-01 刷机)
- op-22.03.3 版。用
make image PROFILE="d-team_newifi-d2" FILES="ext_root" PACKAGES="-wpad-basic-wolfssl wpad-openssl coreutils-shuf htop bind-dig curl rsync diffutils luci-app-frpc luci-app-wireguard luci-app-ddns luci-app-upnp adguardhome block-mount kmod-fs-exfat kmod-fs-ext4 kmod-fs-vfat kmod-usb-storage-uas 3proxy ...."参数,生成新的bin包。
"...." 是 "cgi-io libiwinfo-lua liblua5.1.5 liblucihttp0 liblucihttp-lua libubus-lua lua luci luci-app-firewall luci-app-opkg luci-base luci-lib-base luci-lib-ip luci-lib-jsonc luci-lib-nixio luci-mod-admin-full luci-mod-network luci-mod-status luci-mod-system luci-proto-ipv6 luci-proto-ppp luci-ssl luci-theme-bootstrap px5g-wolfssl rpcd rpcd-mod-file rpcd-mod-iwinfo rpcd-mod-luci rpcd-mod-rrdns uhttpd uhttpd-mod-ubus"
通过breed刷入。overlay 总/剩余: 10.4MB/10.0MB。
分别插入usb2.0/3.0的U盘,都能正常挂载,支持exfat,vfat,ext4。(通常usb3会支持storage-uas,更快)- 其中,
htop : 进程查看器
tmux : 终端复用器
diffutils : diff 命令, 方便对比不同版本的配置文件。
bind-dig : dig 命令, 自己写ddns脚本用。
coreutils-shuf : 随机排列,随机数,自建的脚本中用到。
rsync : 文件同步,方便备份op的配置
wget-ssl : 完整版wget,支持https走代理
luci-app-upnp luci-app-ddns : UPNP(有公网ipv4用), 动态域名(IPv4,v6)
luci-app-watchcat : 网络看门狗。它默认ping 8.8.8.8;这是不可能ping通的,需要修改一下。
adguardhome : 广告过滤
block-mount kmod-usb-storage kmod-usb-* kmod-fs-* : 挂载硬盘, U盘支持, u口驱动, 文件系统支持。
3proxy : 精巧的 http 和 socks5 代理
fdisk e2fsprogs : 分区 mkfs.ext4的支持。
- 其中,
- 通过breed刷入。D2的刷写2.5分钟,等待第一次启动1.6分钟。再次启动50秒。
用op系统自带的固件升级,有时会启动不了。
overlay 总/剩余空间: 11.4/10.9MB(-wpad-basic-wolfssl wpad-wolfssl adguardhome 3proxy)。 - 使用 wpad-wolfssl包,用hostapd命令启动radius服务进程。
如果证书中信息全是英文或数字,wolfssl 支持OK,客户端通过证书登陆OK。
但是,如果证书中包含中文,wolfssl 支持不好,客户端通过证书登陆失败,有时会导致hostapd进程退出。导致之后的WiFi无法通过任何认证。
换用 wpad-openssl ,证书中无论是否含中文,支持都没问题。
如果坚持使用 wpad-wolfssl ,可以启动一个每5分钟执行一次的检查脚本。防止其退出。#!/bin/sh a=$(ps w|grep '/usr/sbin/hostapd -s -B -P /var/run/hostapd-radius.pid /etc/hostapd/hostapd.con[f]') if [ -z "$a" ]; then echo $(date +%F_%T%z) 'missing,restart.' >> /root/log.hostapd-radius /usr/sbin/hostapd -s -B -P /var/run/hostapd-radius.pid /etc/hostapd/hostapd.conf fi - 不用
luci-app-frpc,改用xfrpc。默认xfrpc是disabled。自己写脚本启动更方便。
xfrpc-2.1.606 还不太成熟,会闪退,需要再等等。 - openwrt-24.10 中 xfrpc-3.05.661
- luci-app-xfrpc 25.116.62431 界面太老,不匹配 xfrpc-3.05.661。装了没用,不如不装。
- 安装
opkg install xfrpc,配置 修改/etc/config/xfrpc或者使用uci命令。uci -q batch << EOI set xfrpc.common=xfrpc set xfrpc.common.enabled='1' set xfrpc.common.loglevel='7' set xfrpc.common.server_addr='your_frps_ddns_domain' set xfrpc.common.server_port='7000' set xfrpc.common.token='your_frps_token' # Delete default "ssh01" del xfrpc.ssh01 set xfrpc.ssh_test=tcp set xfrpc.ssh_test.local_ip='127.0.0.1' set xfrpc.ssh_test.local_port='22' set xfrpc.ssh_test.remote_port='6022' set xfrpc.ht_test=tcp set xfrpc.ht_test.local_ip='127.0.0.1' set xfrpc.ht_test.local_port='80' set xfrpc.ht_test.remote_port='6080' #---tcp TO 3proxy's socks5 port with auth, work OK--- del xfrpc.s5_test set xfrpc.s5_test=tcp set xfrpc.s5_test.local_ip='127.0.0.1' set xfrpc.s5_test.local_port='1080' set xfrpc.s5_test.remote_port='61080' #---socks5 type NOT work. Do not know how to use! #set xfrpc.s5_test2=socks5 #set xfrpc.s5_test2.remote_port='61081' #--- http, NOT tested #set xfrpc.s5_test=http #set xfrpc.s5_test.local_ip='127.0.0.1' #set xfrpc.s5_test.local_port='1080' #set xfrpc.s5_test.custom_domains='my_domain' #set xfrpc.s5_test.subdomains='mysub' #--- https, NOT tested #set xfrpc.s5_test=https #set xfrpc.s5_test.local_ip='127.0.0.1' #set xfrpc.s5_test.local_port='1080' #set xfrpc.s5_test.custom_domains='my_domain' #set xfrpc.s5_test.subdomains='mysub' commit xfrpc EOI service xfrpc restart # 重启xfrpc服务
使用官方服务,自定义预安装包,定制固件
- 其实就是一个在线版的imageBuilder。
- 官网原始版,自定义预安装包【firmware-selector】
- immortalwrt,自定义预安装包【firmware-selector】
- 参考
【最简单的定制openwrt,用在线编译来做一个不怕恢复出厂设置的rom】
【How Customize OpenWrt with your installed packages】
【ImmortalWrt 在线构建服务 使用说明】
【ImmortalWrt Image Builder 使用说明】 - 确定软件包,可以先下载【release版打包的固件】,刷进去后启动,然后登录openwrt中,使用以下命令之一,获取软件包列表
echo $(opkg list-installed --strip-abi | sed -e "s/\s.*$//") opkg list-installed | cut -f 1 -d ' ' | sed ':a;N;$!ba;s/\n/ /g' #建议用这个 # 以下命令,不会列出安装在其他存储的软件包。比如 "dest usb /sda/pkgs" grep '^Package:' /usr/lib/opkg/status |cut -d' ' -f 2 |sed ':a;N;$!ba;s/\n/ /g' echo $(grep '^Package:' /usr/lib/opkg/status |cut -d' ' -f 2 ) - 首次启动时运行的脚本(uci-defaults)
参考【此文: 制作免配置固件】/etc/uci-defaults/目录中的脚本设置。
尝试构建一个和release版相同的固件
op22,op23,op24
- 【release版打包的固件】
- immortalwrt, 24.10.1, newifi-D2, 使用页面提供的默认包,默认启动脚本。
请求构建,耗时约80秒,成功生成一个bin文件。(2025-05测试)
用binwalk -e xxxx.bin或 7zip 解包 (见前文), 对比squashfs-root/usr/lib/opkg/status, 自定义版(184个)比"release版"(192个)少8个ipk。
首次运行的脚本是kmod-crypto-acompress luci-i18n-package-manager-zh-cn luci-app-attendedsysupgrade attendedsysupgrade-common rpcd-mod-rpcsys luci-i18n-attendedsysupgrade-zh-cn kmod-lib-lzo luci-i18n-firewall-zh-cn/etc/uci-defaults/99-asu-defaults文件。 - op22,op23,op24,把"release版"的
/usr/lib/opkg/status文件 copy 出来,
如果有安装在其他介质的软件包,比如"dest usb /sda/pkgs",把/sda/pkgs/usr/lib/opkg/status也copy出来。
执行以下三句命令。
从所有安装包中,去除依赖包。得到immortalwrt的精简的安装包列表 (35个软件包):grep '^Package:' status |cut -d' ' -f 2|sort > pkg-ins #已经安装的包名 grep '^Depends:' status |cut -d ' ' -f 2- |sed 's/ (.*)//g'|sed 's/, /\n/g'|sort |uniq > pkg-dep #已经安装的依赖包名 echo $(diff pkg-ins pkg-dep |grep '<'|cut -d' ' -f 2) #已安装包中,去除依赖包
immortalwrt, 24.10.1, newifi-D2, 使用这个包列表(35个)。base-files block-mount ca-bundle default-settings-chn dnsmasq-full dropbear firewall4 kmod-crypto-hw-eip93 kmod-gpio-button-hotplug kmod-leds-gpio kmod-lib-lzo kmod-mt7603 kmod-mt76x2 kmod-nf-nathelper kmod-nf-nathelper-extra kmod-usb3 kmod-usb-ledtrig-usbport libustream-openssl logd luci-compat luci-i18n-attendedsysupgrade-zh-cn luci-i18n-firewall-zh-cn luci-i18n-package-manager-zh-cn luci-lib-ipkg mtd odhcp6c odhcpd-ipv6only opkg ppp ppp-mod-pppoe procd-ujail uci urandom-seed urngd wpad-openssl
再次请求构建,耗时约80秒,成功生成一个bin文件。(2025-05测试)
对比"release版",预安装包完全一样 (192个)。其中24个包的版本比"release版"的新。应该是使用最新版构建的。 - 如果去官方原始版firmware-selector.openwrt.org请求构建,也可以用这35个包,把其中的
default-settings-chn去掉,加上luci即可。 - 有时候"请求构建",要等很久才开始构建,也许要排队。一旦开始构建,80秒就能完成。
- 如果需要支持"U盘",要
kmod-usb2或者kmod-usb3usb驱动,再加上kmod-usb-storageusb存储。
然后再选取希望支持的文件系统kmod-fs-???,比如: vfat, ext4, exfat, f2fs, isofs, jfs, squashfs, ntfs3, ... - 如果需要 https访问 luci,可以加入
luci-ssl-openssl。因lib库冲突luci-ssl可能装不上。 - uci 脚本的格式,可以在op中执行
uci show命令的输出,来设置。 - 对于newifi-Y1 op24.10.6 设置 uci-defaults 脚本,
uci -q batch << EOI set network.lan.ipaddr='192.168.99.1' #Y1背面的标签写的是这个IP. set network.lan.netmask='255.255.255.0' commit network set system.led_wifi.dev='phy1-ap0' #2.4G灯设置,WiFi做热点 set system.led_wifi5g.dev='phy0-ap0' #5G灯设置,WiFi做热点 set system.@system[0].hostname='Newifi-Y1' #wan口获取IP时会用这个名称 set system.ntp.enable_server='1' commit system set wireless.radio0.disabled=1 #关5G # set wireless.radio1.disabled=1 #关2.4G set wireless.default_radio0.ssid='Newifi-5' set wireless.default_radio0.encryption='psk-mixed' #wpa-psk/wpa2-psk set wireless.default_radio0.key='12345678' set wireless.default_radio1.ssid='Newifi-2' set wireless.default_radio1.encryption='psk-mixed' set wireless.default_radio1.key='12345678' commit wireless EOI exit 0- 手工配置时,如果Y1的wifi做客户端,则用 phy0-sta0, phy1-sta0设备。
如果拨号上网,internet灯,可以指定 pppoe-wan设备,非拨号和wan灯一样,用 eth0.2设备。
- 手工配置时,如果Y1的wifi做客户端,则用 phy0-sta0, phy1-sta0设备。
- 对于newifi-D2 op24.10.6 设置 uci-defaults 脚本,
uci -q batch << EOI set network.lan.ipaddr='192.168.10.1' #D2背面没写,还是换个不常用的网段. set network.lan.netmask='255.255.255.0' commit network set system.@system[0].hostname='Newifi-D2' #wan口获取IP时会用这个名称 set system.ntp.enable_server='1' set system.led_wlan2g.dev='phy0-ap0' #指示灯,做WiFi热点 set system.led_wlan5g.dev='phy1-ap0' #指示灯,做WiFi热点 commit system # wifi部分参考Y1的脚本 EOI exit 0
op25
- op25,把"release版"的
/lib/apk/db/installed文件 copy 出来,
op25不知道如何安装软件包在其他介质,如果有,也copy出来。
执行以下三句命令。(202606测)
immortalwrt, 25.12.0, newifi-D2, 得到的精简包列表,有34个。grep '^P:' installed |cut -d: -f2 |sort > pkg-ins #已经安装的包名 grep '^D:' installed |cut -d: -f2 |sed 's/ /\n/g'|sort|uniq > pkg-dep #已经安装的依赖包名 echo $(diff pkg-ins pkg-dep |grep '<'|cut -d' ' -f 2) #已安装包中,去除依赖包apk-openssl base-files block-mount ca-bundle default-settings-chn dnsmasq-full dropbear firewall4 kernel kmod-crypto-hw-eip93 kmod-gpio-button-hotplug kmod-leds-gpio kmod-mt7603 kmod-mt76x2 kmod-nf-nathelper kmod-usb3 kmod-usb-ledtrig-usbport libustream-openssl20201210 logd luci-i18n-attendedsysupgrade-zh-cn luci-i18n-firewall-zh-cn luci-i18n-package-manager-zh-cn mtd odhcp6c odhcpd-ipv6only owut ppp ppp-mod-pppoe procd-ujail uci uclient-fetch urandom-seed urngd wpad-openssl - immortalwrt, 25.12.0, rax3000m emmc, 得到的精简包列表,有40个。(用于 XR30 emmc)
定制固件,包含上面40个包,再添加一些包,apk-openssl autocore automount base-files bridger ca-bundle default-settings-chn dnsmasq-full dropbear f2fsck firewall4 fitblk kernel kmod-crypto-hw-safexcel kmod-gpio-button-hotplug kmod-leds-gpio kmod-mt7915e kmod-mt7981-firmware kmod-nf-nathelper kmod-usb3 libustream-openssl20201210 logd mkf2fs mt7981-wo-firmware mtd odhcp6c odhcpd-ipv6only owut ppp ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd wpad-openssl luci-i18n-attendedsysupgrade-zh-cn luci-i18n-firewall-zh-cn luci-i18n-package-manager-zh-cn
如果需要 https访问 luci,可以加入kmod-usb-storage kmod-fs-exfat kmod-fs-ext4 kmod-fs-vfat luci-proto-wireguard diffutils less rsync curl proxychains-ng e2fsprogs parted bind-dig coreutils-shuf htop luci-app-upnp miniupnpd-nftables openssh-sftp-server telnet-bsd wget-ssl frpc 7z bzip2 certtool file haproxy gnutls-utils lsblk ncat nmap-ssl ntpdate openssh-client sqlite3-cli stunnel tcpdump tmux unzip vim-full vim-runtimeluci-ssl-openssl。因lib库冲突luci-ssl可能装不上。 - uci 脚本的格式,可以在op中执行
uci show命令的输出,来设置。
设置 uci-defaults 脚本,
做出来的固件约30MB。uci -q batch << EOI del network.lan.ipaddr add_list network.lan.ipaddr='192.168.10.1/24' #XR30机身标签是这个IP commit network set system.@system[0].hostname='XR30' #wan口获取IP时会用这个名称 set system.ntp.enable_server='1' add system led #led设置 set system.@led[-1].name='white' set system.@led[-1].sysfs='mt76-phy0' set system.@led[-1].trigger='heartbeat' set system.@led[-1].inverted='1' commit system # 默认WiFi无加密,为了安全,先关掉 # set wireless.radio0.disabled=1 #关2.4G # set wireless.radio1.disabled=1 #关5G set wireless.default_radio0.ssid='XR30-2' set wireless.default_radio0.encryption='psk-mixed' set wireless.default_radio0.key='12345678' set wireless.default_radio1.ssid='XR30-5' set wireless.default_radio1.encryption='psk-mixed' set wireless.default_radio1.key='12345678' commit wireless del dropbear.main.Interface #去掉默认接口绑定,为了能在wan口开放22端口 commit dropbear set stunnel.dummy.enabled=0 #去掉struunl默认服务 commit stunnel # 开放wan上22,80端口,并限制来源IP add firewall rule set firewall.@rule[-1].name='allow-local-ssh-luci' set firewall.@rule[-1].src='wan' add_list firewall.@rule[-1].proto='tcp' set firewall.@rule[-1].dest_port='22 80' set firewall.@rule[-1].target='ACCEPT' add_list firewall.@rule[-1].src_ip='192.168.0.0/16' add_list firewall.@rule[-1].src_ip='fd00::/8' commit firewall EOI # service haproxy disable 命令,不生效, # 改 init.d/, 有效。关闭两个服务,因为未配置。 /etc/init.d/haproxy disable /etc/init.d/frpc disable /etc/init.d/ntpdate disable #这个无需启用 exit 0 - 这样,把 XR30 的 wan口接入家里的内网,它会自动获取 IP,就可以通过它的 wan口配置 XR30。
- 也可以插条网线到 LAN口,配置 XR30。
- 电脑本身可以上网,比如通过wifi。电脑连接op的网口,设置手工IP,不填网关,不填dns。
否则电脑通过 dhcp从 op获取 ip和 dns,导致电脑自己无法上网。 - 电脑在 cmd.exe中运行一个命令行程序 【dnsproxy】或使用 CCproxy 的 dns代理。
op的 LAN口添加自定义 dns指向电脑。 - op中, 系统设置中,点击"同步浏览器时间",设置 op正确的时间。否则 apk/opkg访问 https因证书时间问题而报错。
- 电脑中跑一个 http代理,比如 CCproxy, 3proxy, proxify, vproxy 之类的。
op中要有 wget-ssl,配置 .wgetrc, 或 proxychians-ng, 让 apk/opkg走电脑的代理,安装软件包。
wget-ssl约780kB, luci软件包管理页也能用。proxychains约130kB, 仅用于命令行。
如果上传apk安装包,手动安装,需要--allow-untrusted参数。 - op就可以通过电脑管理和安装软件包。
- 电脑本身可以上网,比如通过wifi。电脑连接op的网口,设置手工IP,不填网关,不填dns。
用owut命令行工具定制固件
- 在op中安装
opkg install owut proxychains-ng
如果要让owut通过代理,只能套用 proxychains, 支持http/socks5, 支持代理认证。
虽然owut支持https_proxy=http://192.168.10.10:8888的环境变量,但无法访问https的asu服务器。(2026-07测)https_proxy=http://192.168.10.10:8888 owut list -f fs-all #会报错400, 并且不支持代理认证 # 配置好 /etc/proxychains.conf proxychains owut list -f fs-all # 访问正常 - ssh 登录op,
owut 只能基于当前op中安装的软件包,定制。(2026-07测)owut list -f fs-all #也可以得到精简的软件包列表,可用于 firmware-selector定制cd /tmp/tmp/ #这个是内存盘,速度快,空间超过30MB,并且目录空 # 自己创建用于 uci-defaults/ 的开机首次运行的脚本, 文件名自定义,比如 /tmp/tmp/my-uci.sh owut download -V 24.10.6 -v -k -I my-uci.sh -i /tmp/tmp/firmware.bin --force |tee log.owut # log.owut 中有定制固件的下载链接, 带 -v 参数才能看到下载链接 # -i 不设置默认为 /tmp/firmware.bin; -i 不能仅指定目录- 固件定制,需要等待排队,信息中会显示前面还有几个排队。排到后生成固件大约30-50秒(newifiD2),然后会下载到本地 /tmp/tmp/firmware.bin (28.3MB)
- 如果是x86_64或arm64的虚拟机中执行 owut, 则构建需要170-300秒。不指定 -S 参数,默认大小是290兆的rootfs,生成的是一个 vmdk文件,有时是qcow2文件。(2026-07测)
如果下载链接无法下载,自己改后缀名为img.gz,vmdk.gz,qcow2.gz试试。下载的img.gz固件 (23.5MB),可以用sysupgrade命令升级。 - cmcc-rax3000m 构建固件约170-210秒。生成的是itb文件 (46MB)。
- 如果是x86_64或arm64的虚拟机中执行 owut, 则构建需要170-300秒。不指定 -S 参数,默认大小是290兆的rootfs,生成的是一个 vmdk文件,有时是qcow2文件。(2026-07测)
- 根据 log.owut中的下载链接,可以自行更改文件名。也可以在别的电脑下载这个固件。两三小时内都能下载,一天后已经被删除,不能下载。
- 基于当前op内的软件包,如果要添加/删除包,可以用
-a 和 -r参数。(未测试)
- 固件定制,需要等待排队,信息中会显示前面还有几个排队。排到后生成固件大约30-50秒(newifiD2),然后会下载到本地 /tmp/tmp/firmware.bin (28.3MB)
- owut 是个ucode脚本,api操作通过 ucode-mod-uclient模块,如果有兴趣可以自行研究。
openwrt中lua,ucode版base64
- 也可以添加
coreutil-base64, 此软件包约19kb。 - 下面的lua版base64,仅适合openwrt中使用。
- 可以用于"首次启动时运行的脚本(uci-defaults)"
cat << EOI > /root/base64 #!/usr/bin/lua if arg[1] == "-d" or arg[1] == "-e" then local buf="" local tmp="" while true do local block=io.stdin:read(1024) if not block then break end buf=buf..block end local nixio=require "nixio" if arg[1]=="-d" then tmp=nixio.bin.b64decode(buf) elseif arg[1]=="-e" then tmp=nixio.bin.b64encode(buf) end io.stdout:write(tmp) else local usage="\nUsage: %s [-d|-e]\n" print(usage:format(arg[0]) ) end EOI # base64字符串,来自/root/目录中所有文件的打包 `tar czf - -C /root/ ./ |lua /root/base64 -e` # 如果在debian中打包,用 `tar czf - -C /<path>/<目录>/ ./ |base64 -w0` 获取base64字符串 # 把文件解压到 /root/ 目录中 echo -n "AAAA---base64----BBBB" |lua /root/base64 -d |tar zxf - -C /root/ - op25 没有预装lua,只有ucode。以下是 ucode 版的 base64。(2026-06)
cat << EOI > /root/base64.uc #!/usr/bin/ucode -S import { stdin,stdout } from 'fs'; if (ARGV[0] == "-d" || ARGV[0] == "-e") { let buf=""; let tmp=""; while (true) { let block=stdin.read(1024); if (! block ) break; buf=buf + block; } if (ARGV[0]=="-d") { tmp=b64dec(buf); } else if (ARGV[0]=="-e") { tmp=b64enc(buf); } stdout.write(tmp); } else { printf("\nUsage: %s [-d|-e]\n", SCRIPT_NAME); } EOI echo -n "AAAA---base64----BBBB" |ucode /root/base64.uc -d |tar zxf - -C /root/
---end---
转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/12091292.html 来自osnosn的博客.

浙公网安备 33010602011771号