恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 847|回复: 7

本人对openwrt 19.07.1 mt7621 固件编译过程的命令解析,求高手答疑?

[复制链接]
发表于 2020-3-2 18:39 | 显示全部楼层 |阅读模式
本人研究了一下openwrt 19.07.1的mt7621路由器的固件打包过程
openwrt image builder里面已经编译好了一个通用的vmlinux内核  还有很多机型对应的dtb文件
#合并dtb与通用内核,形成各机型专用内核
patch-dtb vmlinux MT7621.dtb
cp vmlinux kernel
实际对比发现 这里的patch-dtb工具做的事情用如下命令应该也可以,未经证实
cat vmlinux MT7621.dtb > kernel
#压缩vmlinux镜像
lzma e kernel -lc1 -lp2 -pb2 kernel.lzma
#添加64字节uboot引导头
mkimage -A mips -O linux -T kernel -C lzma -a 0x80001000 -e 0x80001000 -n 'MIPS OpenWrt Linux-4.3.4' -d kernel.lzma ukernel.bin
#填充到2MB
dd if=ukernel.bin of=ukernel_2M.bin bs=2048k conv=sync
#制作根文件系统
mksquashfs4 -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2  -b 256k -processors 1 -fixed-time 1454366308 root root.squashfs
#-p '/dev d 755 0 0' -p '/dev/console c 600 0 0 5 1'
#制作ubi镜像
ubinize -E 5 -p 128KiB -m 2048 -o ok.bin ubi.cfg

ubi.cfg的内容如下
[rootfs]
mode=ubi
vol_id=0
vol_type=dynamic
vol_name=rootfs
image=/opt/root.squashfs
[rootfs_data]
mode=ubi
vol_id=1
vol_type=dynamic
vol_name=rootfs_data
vol_size=1MiB
vol_flags=autoresize


#最后是合并内核与ubi镜像,得到最终刷机固件
cat ukernel_2M.bin ok.bin > firmware.bin

这是mt7621 采用nand芯片的固件生成流程 代表路由器 hc5962  小米R3P 小米R3G
如果是spi的话 那么开头内核部分生成应该是一样的,后面的制作ubi镜像应该是制作jffs2镜像

实际测试发现命令patch-dtb无法成功执行,提示是DTB maker not find ,这个没办法解决
但是  我对比了image builder提供的通用vmlinux与最终从成品固件提取的kernel后发现两个文件的区别在于
kernel是vmlinux后面追加了一个dtb文件 两者文件大小刚好相差一个 dtb文件

所以 我在想 如果我想修改dtb文件来适配某些硬改内存 或者是 spi 与nand分区的话 是不是可以这样做?
dtc xxx.dtb -I dtb -O dts -o a.dts
然后用记事本修改a.dts
#回编译dts为dtb
dtc adts -I dts -O dtb -o a.dtb

然后用cat 命令合并vmliux与新的dtb 再用lmza压缩  然后mkimage添加启动头  再把改动后的kernel替换到image builder里面的对应机型的kernel
后面的事情 可以交个imagebuilder做   或者自己用命令也行
未经证实   虽然我用16进制工具比较  patch-dtb相当于合并了两个文件
但是如果真的是 合并  openwrt官方没必要写一个patch-dtb吧???
求高手解答?????

之所以这样是因为我的机器是hc5961   配置和hc5962相比 多了sata接口  内存512M  nand是256M 不改dtb的话 虽说能用 但是内存只能认256M  nand也不能合理的利用起来

至于重新修改 从源码编译 我觉得没必要  毕竟  除了内存与 nand问题没别的问题
修改dtb应该能完美解决问题



我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-3-13 02:51 | 显示全部楼层

点评

修改源码,意味着不能使用官方固件和官方插件,而且最新版19.07.1的固件内存容量是由dtb文件控制;这个教程早就失效了。我需要的是有人能解决patch-dtb不能正确执行问题。  详情 回复 发表于 2020-3-13 16:20
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-3-13 16:20 来自手机 | 显示全部楼层
j_youn 发表于 2020-3-13 02:51
openwrt MT7621 支持512M内存https://blog.csdn.net/junglefly/article/details/80494612

修改源码,意味着不能使用官方固件和官方插件,而且最新版19.07.1的固件内存容量是由dtb文件控制;这个教程早就失效了。我需要的是有人能解决patch-dtb不能正确执行问题。

点评

后来我又查了下,还真是dtb那个控制,我觉得吧,我的mt7621已经很折腾了,不要折腾mt7621了,直接上软路由吧,  详情 回复 发表于 2020-3-17 00:15
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-3-13 22:23 来自手机 | 显示全部楼层
这是唯一看到的相关讨论,如果解决了记得分享一下

https://forum.openwrt.org/t/using-release-ath79-19-07-0-kernel-and-packages-on-hardware-modded-tp-link-wr703n-16mb-64mb-without-snapshot-compilation/54310

点评

cpu差距太大 而且还是spi芯片,没有参考价值。  详情 回复 发表于 2020-3-14 01:29
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-3-14 01:29 来自手机 | 显示全部楼层
dato 发表于 2020-3-13 22:23
这是唯一看到的相关讨论,如果解决了记得分享一下

https://forum.openwrt.org/t/using-release-ath79-19 ...

cpu差距太大   而且还是spi芯片,没有参考价值。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-3-17 00:15 | 显示全部楼层
guo4qing 发表于 2020-3-13 16:20
修改源码,意味着不能使用官方固件和官方插件,而且最新版19.07.1的固件内存容量是由dtb文件控制;这个教 ...

后来我又查了下,还真是dtb那个控制,我觉得吧,我的mt7621已经很折腾了,不要折腾mt7621了,直接上软路由吧,

点评

软路由还得考虑买哪种无线网卡,安装哪种系统,选择哪种cpu。。一堆破事,不见得比 折腾路由器轻松  详情 回复 发表于 2020-3-17 01:27
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-3-17 01:27 | 显示全部楼层
j_youn 发表于 2020-3-17 00:15
后来我又查了下,还真是dtb那个控制,我觉得吧,我的mt7621已经很折腾了,不要折腾mt7621了,直接上软路 ...

软路由还得考虑买哪种无线网卡,安装哪种系统,选择哪种cpu。。一堆破事,不见得比 折腾路由器轻松

点评

扎心了,老铁  详情 回复 发表于 2020-3-17 21:26
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-3-17 21:26 | 显示全部楼层
guo4qing 发表于 2020-3-17 01:27
软路由还得考虑买哪种无线网卡,安装哪种系统,选择哪种cpu。。一堆破事,不见得比 折腾路由器轻松

扎心了,老铁
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2020-12-5 14:31

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表