ceocn 发表于 2018-9-22 16:48:26

华为光猫分区备份,还原,制作固件教程

本帖最后由 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的那段就是)如下图



最后保存好,至次真正的固件制作成功,可以使用组播等等工具刷机
来个补好后的固件图






未完待续












lookboy8899 发表于 2018-10-7 01:37:16

感谢,学到很多实用东西。

anysoft 发表于 2018-9-24 13:12:39

你原版hs8145v的刷机包模板能提供一下吗?有模板再修改

lovegoogle 发表于 2018-9-22 19:01:00

支持楼主,学习一下

q30445518 发表于 2018-9-22 19:57:13


支持楼主,学习一下,备份命令可以看懂一点,后面完全看不懂~~~~~~~~~~~~~~

naim1 发表于 2018-9-22 20:34:34

这个可以有,可以试试以前备份出来的了

vf21 发表于 2018-9-23 00:57:39

支持楼主,学习一下

wyl25866 发表于 2018-9-23 08:34:46

本帖最后由 wyl25866 于 2018-9-23 08:36 编辑

这样备份的可以打包成可以在组播工具上的刷机包吗?      既然按分区读取、写入,可不可以用hitool???

ghm80 发表于 2018-9-23 10:38:57

来了就坐吧

hztlkm 发表于 2018-9-24 06:42:31

楼主高手啊,打包工具第一次见

Delta_18 发表于 2018-9-24 07:14:42

没想到我一句话能制造蝴蝶效应,引出了这么多高手。。。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 华为光猫分区备份,还原,制作固件教程