找回密码
 注册

QQ登录

只需一步,快速开始

查看: 91140|回复: 156

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

    [复制链接]
发表于 2018-9-22 16:48:26 | 显示全部楼层 |阅读模式
本帖最后由 ceocn 于 2018-9-23 11:53 编辑 " {' N+ A& _! ^* g- d8 U1 u
. y0 d  l3 P. J5 A3 i  g
此操作有风险,只供研究所用,由此造成任何损坏请自己担责
* w% U9 i& b3 J( H. t+ D* Y7 _* T# R! ]- Y, ]. M
一,华为光猫备份和还原分区:(手上只有8145v所以以这个光猫为例子,其它华为光猫也差不多,)* R$ m: E0 f: r1 t+ e  z/ E) O$ c
% J  B. B) L& a
1,备份各分区:+ V, O& E1 V( m# x6 ^9 c
插入U盘(剩余空间大于1G)
8 q" F; Q0 [* e3 x$ D0 l一行一行的输入后回车,等备份完成后再输入下一行(有的分区较大备份时间较长)
/ q" R$ d; A" q* b8 k$ ?; m. w( l9 ]/ r! R: i6 k
备份命令如下:( A, i- R8 h& r2 D: r9 A+ p2 x  A" R
% M' K4 f7 A' ~: K0 U
dd if=/dev/mtd0 of=/mnt/usb/USB_disc1/0.bin" |4 t3 r. w6 x' r, H8 R8 d+ z
  B9 `. y) j9 J$ ?5 r" W
dd if=/dev/mtd1 of=/mnt/usb/USB_disc1/1.bin
& m- x  `6 O4 p( X$ k+ r* ~
6 W; N! |' l# E. ddd if=/dev/mtd2 of=/mnt/usb/USB_disc1/2.bin( D! v0 r& f' \0 a

' u; ?: w" F( }" u6 o$ Sdd if=/dev/mtd3 of=/mnt/usb/USB_disc1/3-uboot.bin
4 l& h$ D; d5 D
1 c% B" x' @. H3 m! Ddd if=/dev/mtd5 of=/mnt/usb/USB_disc1/5.bin* l* P2 m) z% e* Z' j  O' y' W3 b

# }( q. u: k7 ^2 a, r/ C) p7 rdd if=/dev/mtd7 of=/mnt/usb/USB_disc1/7.bin* d# ?6 p7 E  h* L# R+ y

4 M! g! J+ ^$ V. @3 }( ^dd if=/dev/mtd9 of=/mnt/usb/USB_disc1/9-kernel.bin3 R; q0 X3 s# ~! [/ L5 }, t

3 o! D5 K0 |% s" e; }/ Sdd if=/dev/mtd11 of=/mnt/usb/USB_disc1/11-rootfs.bin* s/ C0 |) M3 X& O+ l  f4 \
- D7 a+ n) m$ n1 Q1 e8 `! s
dd if=/dev/mtd13 of=/mnt/usb/USB_disc1/13.bin7 S9 `/ r* d2 O

# I4 ^9 }  x: V$ T$ [6 b$ @: Edd if=/dev/mtd15 of=/mnt/usb/USB_disc1/15.bin1 ~3 O5 ^9 D1 @$ ]6 T* g. i, D
1 d1 F  J) X2 k# A2 e) F1 A: }- X
dd if=/dev/mtd16 of=/mnt/usb/USB_disc1/16.bin  P# Q/ G6 k- Z5 F

$ W4 k0 q3 B% I% Y* Rdd if=/dev/mtd17 of=/mnt/usb/USB_disc1/17.bin! R# E: y; n! r9 L# W/ R2 X
- e4 a. A% G9 _( `: r/ G# j, ~# Y. t
dd if=/dev/mtd19 of=/mnt/usb/USB_disc1/19.bin
4 D) Z# w% X; a( C+ e3 b) a, d6 @! V. ]6 V7 e
dd if=/dev/ubi0_13 of=/mnt/usb/USB_disc1/0_13.bin, f* R, c. U0 T; r: i' j3 V
0 E5 Z! W' V8 r
U盘根目录下这些 bin文件就是各分区的完整备份1 H( i$ N3 B9 ]) T
/ V  v# P# H) T( L. [9 I
A和B分区是一样的,所以只需备份其中一个即可3 h5 z0 Q- K: `" D
各分区的意思如下:+ D) i  W# c; C9 E+ a
mtd0: ="startcode"* S' R7 m1 M" m8 L% K& `
mtd1: ="ubifs"
9 y) s* b8 q, H4 v" amtd2: = "reserved"4 U/ ^7 a- i) q7 g* r" l2 h
mtd3: = "ubootA"
" e9 U, }; M1 n& i$ i. l1 [$ Emtd4: = "ubootB"3 g! {4 w# }* T3 B- W
mtd5: = "flash_configA"
1 T; W* u# _0 a4 G) C7 x! o" u* S& Rmtd6: = "flash_configB"9 V, s" s9 y( [2 u$ u  L
mtd7: = "slave_paramA"5 x* T7 l5 g7 M0 U
mtd8: = "slave_paramB"- ?: b+ R" A  W6 j. F2 L
mtd9: = "kernelA"
& F4 K% B' C! {" @& wmtd10: = "kernelB"& D: c* R4 D1 }/ J
mtd11: = "rootfsA"
  R2 R5 ^- b3 ^" smtd12: = "rootfsB", ~! p' \: K; I2 ?+ n
mtd13: = "wifi_paramA") \  g+ u( z3 P% f
mtd14: = "wifi_paramB"
; G( n  k; L" D; \, Amtd15: = "system_param"0 r/ x- C( ~9 m; o$ P, K- V
mtd16: = "file_system"
* ]1 S2 f3 d: S( q. c4 Umtd17: = "frameworkA"
' s5 X9 Q: ~0 `6 p  qmtd18: = "frameworkB"* O1 i' J1 v, A9 ?7 Y/ h) A
mtd19: = "apps"
& q1 E; M1 \% e! f2 Nubi0_13 = "jffs2"' `; \$ l2 B0 g8 a6 t* p$ Q, A
" t  }/ W2 Z) e; s" V4 a( e% ]% k  r
% x7 U$ D8 q! }, ~% a. z) c
其中最重要的是uboot    kernel     rootfs  这三个分区,后面也只用这三个文件作为示例
& k) f2 k8 o# ^2 x' K$ t5 h* r( r/ e& ~
其它光猫可以使用命令cat /proc/mtd$ Y$ }0 H$ Y, g3 P1 l* G
查看详细分区结构,8145V结果如下:
  @% D* _2 V$ l& S) e# h
8 r8 |: g1 T9 t5 z8 d: ]

1 P, {4 I1 b8 cdev:    size   erasesize  name0 H5 U* x0 D; N. r  @& X
mtd0: 00100000 00020000 "startcode"
" [1 a1 L+ `% Y  N) e. k6 ^mtd1: 0ff00000 00020000 "ubifs"0 |/ M4 L7 b- f! c4 Y1 A# y4 A
mtd2: 00000000 00000000 "reserved"+ \# `. K" G- M
mtd3: 0009b000 0001f000 "ubootA"
  S# t: }  ?7 X: amtd4: 0009b000 0001f000 "ubootB"
) b6 R/ m' w! ~, |$ Nmtd5: 0003e000 0001f000 "flash_configA"
1 Q' B) n* ?5 V/ t* t* }! V  ~0 K  ]mtd6: 0003e000 0001f000 "flash_configB"& a' I2 {5 A3 m
mtd7: 0003e000 0001f000 "slave_paramA"( V$ t0 t: j9 ^+ I
mtd8: 0003e000 0001f000 "slave_paramB"
  \0 ]+ z* _. `: g9 Gmtd9: 00307000 0001f000 "kernelA"& V, b3 S& L& ~$ K
mtd10: 00307000 0001f000 "kernelB"
8 l9 C; C; ^- B( P7 l& qmtd11: 02815000 0001f000 "rootfsA"
0 e$ j4 N0 P# D" P; N" imtd12: 02815000 0001f000 "rootfsB") k6 E4 y/ j# U: h1 C
mtd13: 0003e000 0001f000 "wifi_paramA"3 |- O1 t; k0 Q% f3 Q
mtd14: 0003e000 0001f000 "wifi_paramB"
  I* d# T  S- z& Tmtd15: 0003e000 0001f000 "system_param"
' u# L0 ~* C9 _) I% |mtd16: 0141a000 0001f000 "file_system"
2 ]7 u4 Y; i/ \' g; Q5 Q0 Cmtd17: 0081d000 0001f000 "frameworkA"
& T% n% c0 @/ W9 t! ~$ D  K2 Amtd18: 0081d000 0001f000 "frameworkB"
* ?% I! p( E& M  smtd19: 07003000 0001f000 "apps"
) r. _* z' P$ k4 h. x' u% v; o  W2 L: B: m% H& v

  `' o9 T* o2 X$ _0 f( z0 ?然后根据这个详细结果来修改备份和还原分区命令
$ V. T: t* T2 N8 s7 m7 l5 y7 }9 [: W$ ~
5 z! d' A* W; A  }
0 B. ]: H9 K/ u# }. ]

! h1 c% l' n: X: S; w4 T6 u2,适当修改一些备份文件(也可以不修改,但为了更安全最好是修改一下.因为恢复或刷机bin文件不能大于光猫这个分区的物理flash空间)+ U) J+ _& U& y8 a+ Q: g2 C
将这备份好的bin分区文件在电脑上用winhex或Hex Workshop等等十六进制编辑工具打开% H2 z* v' T4 t$ K: l
直接将winhex下拉条拉到最下面如下图,可以看到很多FFFFFFFFFFFFFFFFFF之类的东东,这些东东是flash中的空白位,是不需要再刷入的垃圾数值/ N5 Q, }8 f/ j" T) @, b: x, e

  ?9 D4 D8 o2 O0 ]下面用rootfs作为示例
5 P# F- y8 ^. T7 `# }+ Y
2 S0 Y- D9 l4 ]$ K. X+ I
# }6 X* W: L+ K% W- B; T将光标在最后面的FF处点一下,然后点查找,查找数值处输入00,类型为  十六进制值   ,勾选  向上  查找  如下图
, Y# h4 o7 y0 [5 L2 u. X3 i2 O3 G( @# M  {; ?1 j& @7 ]' z

# d" S% V; f. F* H* N点  确定  开始查找,会看到一堆杂乱的乱码如下图:) I% K# J0 z( ~

1 N3 n- c, a3 w找到的00的位置的后面全部是FFFFFFFFFFFF,将这些数据选中并且删除掉(不包括00),请将下图看清楚再删除
- F" f( ^- v1 i6 V6 ~% z) ~3 K2 U! U; M* Z5 h, E
删除后如下图
) H9 w- ^8 O8 B9 g* b0 D0 F, f
$ ~/ Z) L, t" b7 M
; _3 `% C) ]6 ]# n+ ~& o然后保存,就是一个完整无多余的分区bin文件8 J8 [: m* z& G2 q
然后用同样的方法修改其它分区bin文件.说简单点就是:删除掉尾部的空位FFFFFFFFFF数值
: i& \6 }7 x; ~- e4 S3 H
; [; ?6 z0 o, j7 B. q/ O3,还原到光猫分区中(此操作风险很大,请自行承担)
$ s3 ?; q# O5 j% r7 c9 O9 y! n将修改处理好的bin文件复制到U盘上,插入光猫USB口
: N5 q5 ~9 a3 ?6 d" v! M; D& p然后输入如下命令进行还原这三个分区(每输入一行回车后,多等会,等成功后再输入下一行,千万不要把三行命令一次全部输入进去)3 w$ S/ P# A. e/ X2 O  |
dd if=/mnt/usb/USB_disc1/3-uboot.bin of=/dev/mtdblock3
& j3 }. ^3 ~6 {8 Q9 v& K& [% U0 e) v3 ?6 ~/ y, N" x
dd if=/mnt/usb/USB_disc1/9-kernel.bin of=/dev/mtdblock9
. x7 ]3 `1 J7 y5 S$ L4 _4 @5 S  ?
$ h4 }0 ?! g; k  u. x) \7 Hdd if=/mnt/usb/USB_disc1/11-rootfs.bin of=/dev/mtdblock116 j  }; ?9 v( M3 E4 b* D9 B

7 I* \5 p- Q0 ?" ?. ]1 q
1 U1 K8 G6 k( h; `. s. X/ e说明:一般新光猫未刷错机造成无法启动,系统未滚回备用系统,就是A系统3    9    11分区在运行,否则就是B系统4     10    12分区在启动7 y9 ?/ Y; w# Z% [8 j: D
: T# V- }% S# G8 q  [+ {
还原进光猫分区后,稍等十几秒,再重启光猫,就OK了,& u2 e$ ?9 d- X. M( I: i2 B1 n

" M4 D2 }) N" j  `此操作在某种承度上可以代替刷机,也可以看作是手动刷机
) M+ W4 F8 d% m
0 c6 }& D* l& i4 l# U/ D: U! s: l/ _二,合成线刷固件(使用组播工具或WEB页面刷机)
1 }: f0 `7 x7 s& l% |. ^% m$ Q6 t4 H- n- t
1,使用HWFW_GUI工具合成完整固件
打开HWFW_GUI然后将本教程提供的固件模板打开,适合8145v  r017   r018版本的固件,其它版本和光猫使用其它固件模板,模板可以找适合自己光猫的补shell的固件,或其它版本固件,都可以.% |6 m* l2 @5 c; m& x1 Z  t* Y
这里使用一个论坛上别人所发的补全shell的固件作为示例: y. u" Z) ~; u) Q4 n
a,然后点添加项目,然后选择前文所修改好的3-uboot.bin
- I' F6 S" y# t! X项目路径写flash:uboot   项目类型选择UBOOT  如下图   其它默认 点保存+ y1 T7 f  Y* N' N1 |- Q  F

$ G, W& N0 O1 B8 j& W5 @$ [' d6 `7 V
b,点添加项目,选择修改好的9-kernel.bin$ Q  O9 v+ U2 Y: \
项目路径写flash:kernel    项目类型选择KERNEL    项目版本写你备份的这个固件的版本,查看方式可以用winhex打开9-kernel.bin 最前面的一段就是,比如:whwhV300R018C10SPC100B054  不要前面的whwh; G. N/ D& e& z/ A* r8 v
如下图
0 u3 v3 x( E$ a% d1 B) Z) a0 @- k5 w

" V" `' J- N9 ^/ f8 Wc,点添加项目,选择修改好的11-rootfs.bin
* X% ~6 q+ Z, @6 `: ~, e, Z项目路径写flash:rootfs    项目类型选择ROOTFS   项目版本写V300R018C10SPC100B054     (同样也是用winhex打开11-rootfs.bin看前面的字段去掉whwh的那段就是)  如下图3 }! _! q+ A) m) p7 ~

0 j# p; D$ F4 z3 s6 r: S& c1 {) N2 h1 N$ Y( `; u6 n* T* B; l
6 v% I. P5 a6 t( n* E. Q7 U
最后保存好,至次真正的固件制作成功,可以使用组播等等工具刷机
: E# V+ Y& K  c6 S& m% ?来个补好后的固件图) e; d# w# z1 d" K
" x& P% E0 u, c( p5 f; l4 Y
& C6 j5 U0 T5 @9 ~2 }

; o) Z) [/ K  @  `
" ], ]& c$ b# L$ ]+ Q1 x4 Y$ H/ |8 o6 @7 `' {

8 q# t! W0 C+ d0 }4 z7 J1 j) N未完待续, R1 I# C9 r2 @/ f6 i- k

. X7 i* L) B* c' h/ c" ~/ f5 k8 N( G3 m# e9 c) J
# g! e  a5 B4 r5 D; ]6 C) N
" c4 F8 I( |. M* u+ b  I
# g; J9 h& j; J: c

$ n3 i! }( [& U$ H: {: c, N
5 g) G4 H5 H0 [0 a
& Z3 S' B- d/ u/ [+ A- D( T% \. m$ ?
) H" Q: S8 u1 W- i3 s3 w4 [; v1 h+ Q$ ?2 s
) ]  `: V8 }/ d( a
$ O6 Y: b; l0 s4 t8 ~* U

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

点评

你好大神,麻烦问一下华为光猫直接用tftp导出固件的方法,我用的hg8321R,没有usb接口,用命令在光猫里备份,rootfsA.分区一备份,光猫就自动 重启了,里面备份的文件也会一并消失   发表于 2021-6-4 14:06
请问大神 此教程可否用于hs8145v5上?  发表于 2019-12-8 15:47
版主为什么删你 固件帖子 抢他生意了  发表于 2019-4-30 13:46
请教一下,如果光猫没有USB口,使用TFTP dd if=/dev/mtd0 of=后面有什么格式  发表于 2018-11-9 14:43
发表于 2018-10-7 01:37:16 | 显示全部楼层
感谢,学到很多实用东西。
发表于 2018-9-24 13:12:39 | 显示全部楼层
你原版hs8145v的刷机包模板能提供一下吗?有模板再修改

点评

论坛上那个018的开shell就是  发表于 2018-9-25 15:09
发表于 2018-9-22 19:01:00 | 显示全部楼层
支持楼主,学习一下
发表于 2018-9-22 19:57:13 | 显示全部楼层

2 }2 A) c5 F' X- s( ]- U7 d支持楼主,学习一下,备份命令可以看懂一点,后面完全看不懂~~~~~~~~~~~~~~
发表于 2018-9-22 20:34:34 | 显示全部楼层
这个可以有,可以试试以前备份出来的了
发表于 2018-9-23 00:57:39 | 显示全部楼层
支持楼主,学习一下
发表于 2018-9-23 08:34:46 | 显示全部楼层
本帖最后由 wyl25866 于 2018-9-23 08:36 编辑
8 g$ }6 C, `; G3 M0 ^7 @  u1 m* P3 w2 }; w2 z' ^# t
这样备份的可以打包成可以在组播工具上的刷机包吗?      既然按分区读取、写入,可不可以用hitool  ???
发表于 2018-9-23 10:38:57 | 显示全部楼层
来了就坐吧
发表于 2018-9-24 06:42:31 | 显示全部楼层
楼主高手啊,打包工具第一次见
发表于 2018-9-24 07:14:42 | 显示全部楼层
没想到我一句话能制造蝴蝶效应,引出了这么多高手。。。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|宽带技术网 |网站地图

粤公网安备 44152102000001号

GMT+8, 2024-5-3 10:18 , Processed in 0.028673 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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