刷了一个Openwrt

1 rax3000m刷机过程

在海鲜市场收的,100块,还行,但是要自己刷机。选的直接是最流行的OP路由之一,移动的rax3000m,没有别的原因,就是因为用的人多,成熟,教程多,不会轻易翻船。。。

要刷机的时候才知道,算力版和普通的区别是EMMC和NAND的区别。 不过我一直记得NAND也是不错。算力版是64G的EMMC,普通版是128MB的NAND。我买的是NAND的,日常用还是没啥区别。还是有点小后悔。。。因为差的价格也不多。据说EMMC版的可以去跑PCDN赚点小钱钱。当然,这个对我来说无所谓了,只是EMMC的可以部署边缘计算,这点还是不错。。。

(之前开发过一个任务,把NAND换成NOR,真是欲仙欲死,改了驱动之后还要改文件系统。最后是能驱动了,但是文件系统死活配置不上去。。。)

网上指导刷机的教程也很多,要区分版本。开始差点刷成EMMC的了。后面看这篇:小武手把手教你刷移动 rax3000m 教程超级简单_哔哩哔哩_bilibili

确实很详细,而且针对移动的rax3000m专门做的。

大概步骤如下:

1 开SSH-加密后

基本就是从web的配置界面下手。

是一个cfg文件,第一先:开SSH-加密后.conf。

(这里可以备份之前的移动固件,也可以不备份,随便自己)

2 刷UBoot

也是从一个cfg刷进去的。

300多K,也是加密了看不到具体内容。感觉之前移动的系统是有bug啊。

关于UBoot,可以看这篇:U-Boot简单学习(1)_u-boot porting for beginners-CSDN博客

3 就是刷OP系统。

刷完新的uboot之后,要按住侧面的按键上电,就会进入刷系统的界面。

选择最后一个bin直接刷进去就行了。 我这里用的是immortalwrt-20240201-mediatek-mt7981-cmcc_rax3000m-squashfs-factory.bin

最后就能进界面了(默认是没有密码的)

WIFI6+FEM功放确实效果不错,家里面的wifi速度快了不少。 

2 OP系统

以前开发过博通的homegateway,当时是直接用的博通的SDK。openwrt之前也简单捣鼓过,所以比较一下呢。

2.1 构建

之前博通的SDK自己有一套完整的SDK,OP用的是buildroot,可以使用opkg安装包。具有feeds管理。

buildroot之前写过一点,没写完,后面有时间可能再完善。Buildroot体验(TODO)-CSDN博客

opkg就是把功能做成类似app了。如果在原厂sdk上开发,是没有这个机制的,都是直接改代码。

2.2 内核和驱动

博通SDK一般是很老的内核,3/4的内核,驱动也直接在内核。关键的wlan和交换芯片的驱动直接都是闭源的。在OP上驱动做成模块可以动态安装。当然,我是不知道社区哪里来的那么大神写驱动。。也不知道哪些驱动哪里来的。。

不过,有几点这两个是一样的,都是相对标准linux来说:

  • BusyBox代替 GNU 工具集

所有基本的 shell、文件操作、文本处理等工具都由 BusyBox 提供,一个二进制里集成了数十个常用命令,节省存储空间。

BusyBox_busybox menuconfig proc-CSDN博客

  • Musl/uClibc 替代 glibc

默认使用体积小、依赖少的 C 标准库,减少内存和闪存占用。

  • 针对网络的优化

去掉了桌面、图形、声音、多媒体等路由器无关功能,将内核裁剪到只包含网络协议栈、文件系统驱动和路由器常用功能(如 brcm47xx、ath9k、nl80211、nf_conntrack/netfilter、wireguard 等)。

  • 内核的优化

应用了一些额外的补丁,如更小的内存分配器、QoS 改进模块、B.A.T.M.A.N. 或 OLSR 等路由协议补丁。

2.3 文件系统

博通SDK一般用的JFFS2/YAFFS2镜像,OP则是用的只读 SquashFS + 可写 OverlayFS 叠加。

SquashFS一般是只读的,这样就避免的对flash的擦写提高了寿命。此外可擦写的部分可能还是JFFS2的。

我的设备分区如下:

root@OpenWrtli:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 08000000 00020000 "spi0.0"
mtd1: 00100000 00020000 "BL2"
mtd2: 00080000 00020000 "u-boot-env"
mtd3: 00200000 00020000 "Factory"
mtd4: 00200000 00020000 "FIP"
mtd5: 07200000 00020000 "ubi"
分区大小 (十六进制)实际大小用途说明
mtd008000000128MB整个 SPI Flash 的总容量spi0.0 表示 SPI 接口的第一个 Flash 芯片)
mtd1001000001MBBL2:Bootloader 第二阶段(通常为厂商预置的引导程序,如 MediaTek 的定制 U-Boot)
mtd200080000512KBu-boot-env:U-Boot 环境变量存储区(可配置启动参数)
mtd3002000002MBFactory:出厂配置(包含无线校准数据、MAC 地址、设备序列号等关键信息,刷机时需保留)
mtd4002000002MBFIP(Firmware Image Package):ARM Trusted Firmware(ATF)的镜像包,包含安全启动相关组件
mtd507200000114MBubi:主系统分区(采用 UBI 文件系统,包含 OpenWrt 的 SquashFS 和 OverlayFS)

主分区ubi的情况

root@OpenWrtli:~# ubinfo -a
UBI version:                    1
Count of UBI devices:           1
UBI control device major/minor: 10:62
Present UBI devices:            ubi0

ubi0
Volumes count:                           3
Logical eraseblock size:                 126976 bytes, 124.0 KiB
Total amount of logical eraseblocks:     912 (115802112 bytes, 110.4 MiB)
Amount of available logical eraseblocks: 0 (0 bytes)
Maximum count of volumes                 128
Count of bad physical eraseblocks:       0
Count of reserved physical eraseblocks:  19
Current maximum erase counter value:     2
Minimum input/output unit size:          2048 bytes
Character device major/minor:            249:0
Present volumes:                         0, 1, 2

Volume ID:   0 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        29 LEBs (3682304 bytes, 3.5 MiB)
State:       OK
Name:        kernel
Character device major/minor: 249:1
-----------------------------------
Volume ID:   1 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        551 LEBs (69963776 bytes, 66.7 MiB)
State:       OK
Name:        rootfs
Character device major/minor: 249:2
-----------------------------------
Volume ID:   2 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        309 LEBs (39235584 bytes, 37.4 MiB)
State:       OK
Name:        rootfs_data
Character device major/minor: 249:3

由此可见UBI 分区包含 3 个逻辑卷:

(1)Volume 0: kernel

参数说明
类型dynamic(动态卷)可动态调整大小
大小29 LEBs ≈ 3.5MiB存储 Linux 内核镜像(压缩的 fit 或 zImage
设备节点/dev/ubi0_0可通过 dd if=/dev/ubi0_0 of=/tmp/kernel.bak 备份

(2)Volume 1: rootfs

参数说明
类型dynamic
大小551 LEBs ≈ 66.7MiB存储 SquashFS 只读系统(挂载为 /rom),包含 OpenWrt 基础文件
设备节点/dev/ubi0_1只读,不可直接修改

(3)Volume 2: rootfs_data

参数说明
类型dynamic
大小309 LEBs ≈ 37.4MiB存储 OverlayFS 可写层(挂载为 /overlay),用户配置和安装的软件在此
设备节点/dev/ubi0_2实际路径:/overlay/upper(修改的文件)和 /overlay/work(临时文件)
root@OpenWrtli:~# mount | grep overlay
/dev/ubi0_2 on /overlay type ubifs (rw,noatime,assert=read-only,ubi=0,vol=2)
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)

在这里可以看出overlay的分区是用的ubi文件系统。

SDK升级一般是webui。OP相对要灵活一些,可以uboot升级,也可以直接用dd命令,当然,也可以用webui。

2.4 运行框架

原厂SDK一般还是依赖原始的linux机制,比如/etc/init.d/rcS。这方面OP做了很多革新。
专用轻量级 procd(进程 1),并集成 Watchdog、热插拔等。统一的 ubus RPC/事件总线,模块解耦、热点配置即时生效。统一的 UCI(Unified Configuration Interface) 配置框架。

有些思想感觉有点类似安卓,安卓在这几个方面也是做了深度定制,比如binder,全局配置。当然,谷歌的实力更强,改的更多。这方面可以看一下之前的文章。Android学习1 -- 从嵌入式Linux到嵌入式Android-CSDN博客

procd + ubus + UCI基本上就是OP的核心创新了。。。

2.5  网络

原厂SDK一般使用原始linux的。OP上因为管理使用了UCI,所以改动很多。netifd(网络守护进程)配合 UCI 动态管理接口,firewall3(基于 nftables)与 UCI 配置一体化等等。。。

两者差不多的是都增加了很多网络和路由工具。比如:dnsmasq(DNS/DHCP)、odhcpd(IPv6 DHCP)、firewall3(基于 nftables)、netifd(网络接口守护进程)等。

2.6 WebUI

之前做博通SDK的时候,就是一个web服务器,所有代码都是那个服务器里面。C和html,JavaScript混写。。。OP上直接用的是LuCI(Lua + uHTTPd),而且社区有很多插件。

3 MT7981B

以前我做路由器的时候,好像还没怎么听说过MTK。今天查了一下,原来是收购了以前的Ralink。不过以前Ralink也不怎么样。当时出风头的还是博通和Conexant。

好吧,没想到现在这么牛逼带闪电了。。。

简单学习一下这个IC。。。

datasheet:https://one.openwrt.org/hardware/MT7981B_Wi-Fi6_Platform_Datasheet_Open_V1.0.pdf 

相对传统的SOC,加强的部分如下:

1. MAC(媒体接入控制)

MAC 在图中标记为 "MAC 1024QAM OFDMA BW40/BW160C 2SS/2SS"。这表明该芯片支持 1024QAM(高阶调制)、OFDMA(正交频分多址)和 宽带支持(40MHz 和 160MHz)。这些技术可以显著提升数据传输速率,尤其是在高负载或多用户情况下。

2. Wi-Fi 6(802.11ax)

Wi-Fi 6 (802.11ax) 是图中标明的 2x2 2G3x3 5G 接口。它们支持 高效的频谱利用多用户并发(MU-MIMO)、OFDMA高数据传输速率。这些都是为了支持更高效的无线网络连接,尤其在高密度用户场景中,能显著降低延迟并增加带宽。

3. WO Engine(无线优化引擎)

WO Engine 表示存在专用的硬件引擎来优化无线网络的性能。这可能涉及对无线信号的增强处理、流量管理、干扰消除等,以提升无线性能。

4. PPE/HNAT/HQoS

PPE(Packet Processing Engine)HNAT(Hardware NAT)HQoS(Hardware QoS) 都是硬件级加速技术,用于处理网络包和流量管理。

PPE 提供高效的包处理能力,提升整体网络吞吐量。

HNAT 硬件加速网络地址转换(NAT),提高数据包的转发速度。

HQoS 提供硬件支持的服务质量管理(QoS),确保在不同应用和数据流之间平衡带宽,保证重要流量的优先级,如视频、语音等实时应用。

5. Gigabit Ethernet PHY

Gigabit Ethernet PHY x1 表示该芯片集成了一个千兆以太网物理层接口,用于高速有线网络连接。

6. 2.5G/GMII接口

2.5G/GMII 接口支持高速的 2.5Gbps 网络接口,这是一个针对现代高速宽带应用的优化,适用于需要高速数据传输的环境。

下面是一个系统框图,不过是7986的(MediaTek - WikiDevi.Wi-Cat.RU

在系统中,对软件来说。

WIFI的部分,MTK好像WIFI5及以下的驱动都是开源的,自己也可以用来学习。但是在WIFI6,这部分就是闭源了,直接给的bin文件。

千兆或者2.5G以太网,这部分也要单独的驱动。

硬件加速引擎(PPE/HNAT/HQoS)。这部分驱动好像是闭源的。这些都是直接集成在内核,对一般的用户直接不可见了。

安全的部分。就是第一个图的Security部分,这部分也是需要单独驱动。

好了,以后有时间再多多看看吧。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值