华为光猫分区备份,还原,制作固件教程
本帖最后由 ceocn 于 2018-9-23 11:53 编辑此操作有风险,只供研究所用,由此造成任何损坏请自己担责
一,华为光猫备份和还原分区:(手上只有8145v所以以这个光猫为例子,其它华为光猫也差不多,)
1,备份各分区:
插入U盘(剩余空间大于1G)
一行一行的输入后回车,等备份完成后再输入下一行(有的分区较大备份时间较长)
备份命令如下:
dd if=/dev/mtd0 of=/mnt/usb/USB_disc1/0.bin
dd if=/dev/mtd1 of=/mnt/usb/USB_disc1/1.bin
dd if=/dev/mtd2 of=/mnt/usb/USB_disc1/2.bin
dd if=/dev/mtd3 of=/mnt/usb/USB_disc1/3-uboot.bin
dd if=/dev/mtd5 of=/mnt/usb/USB_disc1/5.bin
dd if=/dev/mtd7 of=/mnt/usb/USB_disc1/7.bin
dd if=/dev/mtd9 of=/mnt/usb/USB_disc1/9-kernel.bin
dd if=/dev/mtd11 of=/mnt/usb/USB_disc1/11-rootfs.bin
dd if=/dev/mtd13 of=/mnt/usb/USB_disc1/13.bin
dd if=/dev/mtd15 of=/mnt/usb/USB_disc1/15.bin
dd if=/dev/mtd16 of=/mnt/usb/USB_disc1/16.bin
dd if=/dev/mtd17 of=/mnt/usb/USB_disc1/17.bin
dd if=/dev/mtd19 of=/mnt/usb/USB_disc1/19.bin
dd if=/dev/ubi0_13 of=/mnt/usb/USB_disc1/0_13.bin
U盘根目录下这些 bin文件就是各分区的完整备份
A和B分区是一样的,所以只需备份其中一个即可
各分区的意思如下:
mtd0: ="startcode"
mtd1: ="ubifs"
mtd2: = "reserved"
mtd3: = "ubootA"
mtd4: = "ubootB"
mtd5: = "flash_configA"
mtd6: = "flash_configB"
mtd7: = "slave_paramA"
mtd8: = "slave_paramB"
mtd9: = "kernelA"
mtd10: = "kernelB"
mtd11: = "rootfsA"
mtd12: = "rootfsB"
mtd13: = "wifi_paramA"
mtd14: = "wifi_paramB"
mtd15: = "system_param"
mtd16: = "file_system"
mtd17: = "frameworkA"
mtd18: = "frameworkB"
mtd19: = "apps"
ubi0_13 = "jffs2"
其中最重要的是uboot kernel rootfs这三个分区,后面也只用这三个文件作为示例
其它光猫可以使用命令cat /proc/mtd
查看详细分区结构,8145V结果如下:
dev: size erasesizename
mtd0: 00100000 00020000 "startcode"
mtd1: 0ff00000 00020000 "ubifs"
mtd2: 00000000 00000000 "reserved"
mtd3: 0009b000 0001f000 "ubootA"
mtd4: 0009b000 0001f000 "ubootB"
mtd5: 0003e000 0001f000 "flash_configA"
mtd6: 0003e000 0001f000 "flash_configB"
mtd7: 0003e000 0001f000 "slave_paramA"
mtd8: 0003e000 0001f000 "slave_paramB"
mtd9: 00307000 0001f000 "kernelA"
mtd10: 00307000 0001f000 "kernelB"
mtd11: 02815000 0001f000 "rootfsA"
mtd12: 02815000 0001f000 "rootfsB"
mtd13: 0003e000 0001f000 "wifi_paramA"
mtd14: 0003e000 0001f000 "wifi_paramB"
mtd15: 0003e000 0001f000 "system_param"
mtd16: 0141a000 0001f000 "file_system"
mtd17: 0081d000 0001f000 "frameworkA"
mtd18: 0081d000 0001f000 "frameworkB"
mtd19: 07003000 0001f000 "apps"
然后根据这个详细结果来修改备份和还原分区命令
2,适当修改一些备份文件(也可以不修改,但为了更安全最好是修改一下.因为恢复或刷机bin文件不能大于光猫这个分区的物理flash空间)
将这备份好的bin分区文件在电脑上用winhex或Hex Workshop等等十六进制编辑工具打开
直接将winhex下拉条拉到最下面如下图,可以看到很多FFFFFFFFFFFFFFFFFF之类的东东,这些东东是flash中的空白位,是不需要再刷入的垃圾数值
下面用rootfs作为示例
将光标在最后面的FF处点一下,然后点查找,查找数值处输入00,类型为十六进制值 ,勾选向上查找如下图
点确定开始查找,会看到一堆杂乱的乱码如下图:
找到的00的位置的后面全部是FFFFFFFFFFFF,将这些数据选中并且删除掉(不包括00),请将下图看清楚再删除
删除后如下图
然后保存,就是一个完整无多余的分区bin文件
然后用同样的方法修改其它分区bin文件.说简单点就是:删除掉尾部的空位FFFFFFFFFF数值
3,还原到光猫分区中(此操作风险很大,请自行承担)
将修改处理好的bin文件复制到U盘上,插入光猫USB口
然后输入如下命令进行还原这三个分区(每输入一行回车后,多等会,等成功后再输入下一行,千万不要把三行命令一次全部输入进去)
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
说明:一般新光猫未刷错机造成无法启动,系统未滚回备用系统,就是A系统3 9 11分区在运行,否则就是B系统4 10 12分区在启动
还原进光猫分区后,稍等十几秒,再重启光猫,就OK了,
此操作在某种承度上可以代替刷机,也可以看作是手动刷机
二,合成线刷固件(使用组播工具或WEB页面刷机)
1,使用HWFW_GUI工具合成完整固件打开HWFW_GUI然后将本教程提供的固件模板打开,适合8145vr017 r018版本的固件,其它版本和光猫使用其它固件模板,模板可以找适合自己光猫的补shell的固件,或其它版本固件,都可以.
这里使用一个论坛上别人所发的补全shell的固件作为示例
a,然后点添加项目,然后选择前文所修改好的3-uboot.bin
项目路径写flash:uboot 项目类型选择UBOOT如下图 其它默认 点保存
b,点添加项目,选择修改好的9-kernel.bin
项目路径写flash:kernel 项目类型选择KERNEL 项目版本写你备份的这个固件的版本,查看方式可以用winhex打开9-kernel.bin 最前面的一段就是,比如:whwhV300R018C10SPC100B054不要前面的whwh
如下图
c,点添加项目,选择修改好的11-rootfs.bin
项目路径写flash:rootfs 项目类型选择ROOTFS 项目版本写V300R018C10SPC100B054 (同样也是用winhex打开11-rootfs.bin看前面的字段去掉whwh的那段就是)如下图
最后保存好,至次真正的固件制作成功,可以使用组播等等工具刷机
来个补好后的固件图
未完待续
感谢,学到很多实用东西。 anysoft 发表于 2018-9-25 17:08
谢谢指点,我添加项目后发现高级数据编辑无法编辑了。
HS8145V我尝试过使用115和118的备份,我发现115的 ...
118的rootfs比较特殊,他是由二个squashfs组成,所以中间有FF,中间的FF不可删除,
115的解包squashfs很简单在linux下
unsquashfs -dest aaaa rootfs.bin
就可以解包
封包命令
mksquashfs aaaa new-rootfs.bin -nopad -noappend -root-owned -comp lzma -processors 4
118的就比较特殊,他是由二部分squashfs组成,需要用winhex分开,然后分别解包,再组合,很简单,但也可以用Firmware Mod Kit自动解包和封包,但这个工具需要稍作修改, 你原版hs8145v的刷机包模板能提供一下吗?有模板再修改 支持楼主,学习一下
支持楼主,学习一下,备份命令可以看懂一点,后面完全看不懂~~~~~~~~~~~~~~ 这个可以有,可以试试以前备份出来的了 支持楼主,学习一下 本帖最后由 wyl25866 于 2018-9-23 08:36 编辑
这样备份的可以打包成可以在组播工具上的刷机包吗? 既然按分区读取、写入,可不可以用hitool??? 来了就坐吧 楼主高手啊,打包工具第一次见 没想到我一句话能制造蝴蝶效应,引出了这么多高手。。。