|
本帖最后由 rat9 于 2022-2-23 13:46 编辑
之前HN841V 输入 sudo restorehwmod.sh 命令后,进不了8080的管理页面。
见之前的 HN8145V V5R019 折腾总结帖
https://www.right.com.cn/forum/thread-8147423-1-1.html
于是一只希望能恢复这些文件,经过比对,打不开华为界面是因为缺少了html目录下缺少了frame_huawei,frame_XGPON,如何恢复这些文件呢,目前大神给出的办法就刷固件。
我在隔壁论坛好不容易凑齐mao币,下载了2个固件,都不是官方的,属于备份合成的固件。
HN8145V_V500R019C30SPC010B022
HN8145V_V500R019C30SPC010B028
我的设备 系统版本更新一些
HN8145V_V500R019C30SPC010B250
我第一次刷是用ONT工具升级的,过程费时很长,进度条走完还会接着循环,但是最后设备灯不闪了,然后杯具了。等了很久,只有电源会亮,其它灯都不会亮,而且按复位键也没反应,我当时就已经接受是变砖的事实。
也没拔电源,就开始网上搜索芯片和编程器了,搜了半天,发现这个芯片是不贵,但是能烧录的编程器很贵,普通的CH341A是不可能刷了。
当时心情正郁闷着,忽然发现网络不通了(无线网卡连WIFI),一看是猫重启了,并且自动获取了IP ,幸好没有真的变砖,虚惊一场。
后来我用命令查看了系统版本:
SU_WAP>display inner version
MainVersion : V500R019C30SPC010B250
StandbyVersion : V500R019C30SPC010B028
ComponentVersion : not exist
ResourceVersion : not exist
PluginVersion : not exist
VersionMask : 80
发现这个华为光猫居然是双系统,主系统是B250,备份系统是B028,也就是我刷的那个固件。
虽然还能启动,但是出现了新的症状,默认界面进不去了,8080管理界面却能登录。之后又开始用tftp刷。
SU_WAP>load pack by tftp svrip 192.168.1.2 remotefile HN8145V_V500R019C30SPC010B028_mod.bin
success!
SU_WAP>Software Operation Faild!RetCode=0xf720404f!
tftp日志显示:
Read request for file <HN8145V_V500R019C30SPC010B028_mod.bin>. Mode octet [21/02 22:29:11.472]
OACK: <tsize=39693523,> [21/02 22:29:11.472]
Using local port 61545 [21/02 22:29:11.472]
File <HN8145V_V500R019C30SPC010B028_mod.bin> : error 10054 in system call recv 远程主机强迫关闭了一个现有的连接。 [21/02 22:29:12.626]
我估计还是固件校验失败,tftp文件能传到80%,然后才报错。
刷固件有两个思路,一个是刷完整的固件,一个是刷某个特定的分区。
但是两个完整的备份固件都不成功,就只能试试刷某个特定的分区的包了。
目前还没下载到15个分区的完整备份包。因为没有论坛币了,过些天存够了看能不能再试试。
然后我又查了一些资料,主要是这个帖子:
华为光猫分区备份,还原,制作固件教程
http://www.chinadsl.net/forum.php?mod=viewthread&tid=158569
讲了如何备份每个分区,已经如何打包成一个固件。
我这里只讲下一些变化。以前的固件有20个分区,而新的固件只有15个分区。
可以看通过命令 cat /proc/mtd查看:
WAP(Dopra Linux) # cat /proc/mtd
dev: size erasesize name
mtd0: 00100000 00020000 "bootcode"
mtd1: 07f00000 00020000 "ubilayer_v5"
mtd2: 0001f000 0001f000 "flash_configA"
mtd3: 0001f000 0001f000 "flash_configB"
mtd4: 0001f000 0001f000 "slave_paramA"
mtd5: 0001f000 0001f000 "slave_paramB"
mtd6: 0160a000 0001f000 "allsystemA"
mtd7: 0160a000 0001f000 "allsystemB"
mtd8: 009b0000 0001f000 "exrootfs"
mtd9: 0081d000 0001f000 "frameworkA"
mtd10: 0081d000 0001f000 "frameworkB"
mtd11: 0001f000 0001f000 "wifi_paramA"
mtd12: 0001f000 0001f000 "wifi_paramB"
mtd13: 00117000 0001f000 "keyfile"
mtd14: 03013000 0001f000 "file_system"
我自己试着备份了一下,下面就是对应的备份命令:
dd if=/dev/mtd0 of=/mnt/usb/USB_disc1/0-bootcode.bin
dd if=/dev/mtd1 of=/mnt/usb/USB_disc1/1-ubilayer_v5.bin
dd if=/dev/mtd2 of=/mnt/usb/USB_disc1/2-flash_configA.bin
dd if=/dev/mtd3 of=/mnt/usb/USB_disc1/3-flash_configB.bin
dd if=/dev/mtd4 of=/mnt/usb/USB_disc1/4-slave_paramA.bin
dd if=/dev/mtd5 of=/mnt/usb/USB_disc1/5-slave_paramB.bin
dd if=/dev/mtd6 of=/mnt/usb/USB_disc1/6-allsystemA.bin
dd if=/dev/mtd7 of=/mnt/usb/USB_disc1/7-allsystemB.bin
dd if=/dev/mtd8 of=/mnt/usb/USB_disc1/8-exrootfs.bin
dd if=/dev/mtd9 of=/mnt/usb/USB_disc1/9-frameworkA.bin
dd if=/dev/mtd10 of=/mnt/usb/USB_disc1/10-frameworkB.bin
dd if=/dev/mtd11 of=/mnt/usb/USB_disc1/11-wifi_paramA.bin
dd if=/dev/mtd12 of=/mnt/usb/USB_disc1/12-wifi_paramB.bin
dd if=/dev/mtd13 of=/mnt/usb/USB_disc1/13-keyfile.bin
dd if=/dev/mtd14 of=/mnt/usb/USB_disc1/14-file_system.bin
可以看出,命名变化很大,和uboot kernel rootfs三个概念很难简单对应起来。
作者还说,也可以用dd命令还原分区。如果能解包修改后然后打包回去刷机就完美了。
dd if=/mnt/usb/USB_disc1/3-uboot.bin of=/dev/mtdblock3
dd if=/mnt/usb/USB_disc1/9-kernel.bin of=/dev/mtdblock9
dd if=/mnt/usb/USB_disc1/11-rootfs.bin of=/dev/mtdblock11
而且用华为固件的HWFW_GUI工具可以合成完整固件。
(我想我刷的那2个备份固件包应该也是这个工具制作的)
https://github.com/csersoft/HWFW_GUI/releases
最新版本是1.08 :HWFW_GUI 1.0.8 Beta Build 005
其实固件编辑有2个困难,一个是解包,一个是打包。我今天写这篇文件就是实现了解包,
1、备份的完整固件解包。
可以用华为固件的HWFW_GUI工具导出,保存为.bin后缀的文件即可。
2、备份的bin 文件又如何打开呢? 专业的方法肯定是要在linux环境下操作。我不懂那些,让我搞个linux虚拟机都费劲,
(以前试着用大神的源码自定义固件)所以这次只考虑Windows下的解包方式。
翻论坛帖子的时候,无意看到一个回复,说解包可以用最新版7z来解包。,我试了一下还真成功了。
分区6-10的包都可以打开。1和13也可以打开,但是 要先导出一下。
完整固件包其实也可以用7z直接打开,打开看到的就是一个linux系统的文件目录。
应该把系统文件分别挂载存放在不同的分区。但是HWFW_GUI工具导出的bin文件和15个分区备份的bin并不全是一一对应的。
我想要恢复的华为界面的html文件是保存在mtd8 exrootfs.bin,
而备份固件 在 flash:rootfs 里面的rootfs包里。
另外我还找到一个windows环境下的unsquashfs解包打包工具,经测试可以解包rootfs
https://blog.csdn.net/m0_50009240/article/details/121017387
1 将文件解压到Windows可执行目录下
2 通过win+R,然后cmd进入解压的当前目录
3 执行mksquashfs.exe 文件1 ...... 目标文件目录进行打包
unsquashfs.exe 目标文件进行解包
4 其余命令参数参考执行程序的提示或Linux下相关参数
下载链接:https://pan.baidu.com/s/1J-ODAGl4QsQo_HKcQLF15Q
提取码: sg5y
打包我暂时没去尝试,根据我以前折腾路由器的经验,打包是需要依赖环境的,否则容易出问题。打包出来的文件我自己都不敢刷。因为这个不像路由器,可以用编程器救砖。
我的这个光猫目前通过jffs2恢复到电信界面,但是现在 192.168.1.1还是进不去,8080管理界面正常,今天光猫LOID注册也正常,我就这样凑合用着吧。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|