宽带技术网

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 7888|回复: 45

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

[复制链接]
发表于 2018-9-22 16:48:26 | 显示全部楼层 |阅读模式
本帖最后由 ceocn 于 2018-9-23 11:53 编辑
: ?% S4 m9 u' [7 ~. s3 G
( v3 c* q' N1 `5 F此操作有风险,只供研究所用,由此造成任何损坏请自己担责
5 Y& z8 g; P/ g7 Y2 U. N- G5 W
4 o6 C- s# X. F- i  |一,华为光猫备份和还原分区:(手上只有8145v所以以这个光猫为例子,其它华为光猫也差不多,)
1 S* b6 Q) J0 A, z8 L' [% j8 N2 ]
! n* L: i* ?( _' Y1,备份各分区:- P! g/ y7 S! M
插入U盘(剩余空间大于1G)4 m/ D  x: f8 W" Y* ]
一行一行的输入后回车,等备份完成后再输入下一行(有的分区较大备份时间较长): \- B# e1 M1 F' n5 B
; S7 T2 L; m$ j- ?; U5 i
备份命令如下:
" w! A: o) X5 |! n% o7 c% j" Y4 K. I4 J1 J+ c7 u
dd if=/dev/mtd0 of=/mnt/usb/USB_disc1/0.bin
/ n1 D0 F( W# o7 [( X% C- K$ E) ^  L0 F4 l
dd if=/dev/mtd1 of=/mnt/usb/USB_disc1/1.bin  U! V9 P' U, a4 a

9 Z+ {) R7 ^' u& o- mdd if=/dev/mtd2 of=/mnt/usb/USB_disc1/2.bin
" }& x* ?% p% C, R; M" a6 k( P$ Z  @: U& x! K
dd if=/dev/mtd3 of=/mnt/usb/USB_disc1/3-uboot.bin8 b% [0 {6 p  j6 `- Y
! a- E9 V& x5 j1 ~/ H* `4 v+ w
dd if=/dev/mtd5 of=/mnt/usb/USB_disc1/5.bin
3 h+ g: ~1 }7 N8 z0 Y" [0 s9 W! N5 \+ j3 w
dd if=/dev/mtd7 of=/mnt/usb/USB_disc1/7.bin8 z8 T) M  Q( A& t

4 L6 q4 g1 ^4 D# Z9 vdd if=/dev/mtd9 of=/mnt/usb/USB_disc1/9-kernel.bin! H  ~$ r/ x" R- p1 l- [
$ D9 p" x  s5 [+ `0 ]( j) w
dd if=/dev/mtd11 of=/mnt/usb/USB_disc1/11-rootfs.bin
  x+ [7 p' S3 M$ _7 j, C) f, @' {3 J2 o) {$ e4 Y5 h5 e2 m# e
dd if=/dev/mtd13 of=/mnt/usb/USB_disc1/13.bin
5 w: Z+ l! M* j( `- l' X' E: C( w7 ]3 ~3 Z# ]
dd if=/dev/mtd15 of=/mnt/usb/USB_disc1/15.bin
6 _5 H7 A- f7 e+ Z* D0 Q# X' a/ {# t2 B+ m; v! l  ?0 K
dd if=/dev/mtd16 of=/mnt/usb/USB_disc1/16.bin
4 }% |4 ?1 G% y" q! U- Y
9 O. F  K8 b- W( ?. X5 edd if=/dev/mtd17 of=/mnt/usb/USB_disc1/17.bin4 K8 ?. @1 I  G6 P( E+ H

0 w/ K2 `; ^4 wdd if=/dev/mtd19 of=/mnt/usb/USB_disc1/19.bin
3 H. }) t2 N$ m1 \# t1 w
* ~4 Z2 ]( a1 \dd if=/dev/ubi0_13 of=/mnt/usb/USB_disc1/0_13.bin' ?1 L7 m8 L  ^# M4 T; R8 {

' s8 E/ {0 L1 O. _8 nU盘根目录下这些 bin文件就是各分区的完整备份
" N4 E2 O5 a- B
$ a" L0 }+ {3 _4 [A和B分区是一样的,所以只需备份其中一个即可
% y2 x8 g2 p# H( o各分区的意思如下:
+ \% U/ ?% U" N* ~! b4 jmtd0: ="startcode": h6 p; l2 e5 B) Z3 @1 ], T
mtd1: ="ubifs"
8 v' t" p; D4 {; T" t0 umtd2: = "reserved", p- X' D' L9 y6 ]* Z! O
mtd3: = "ubootA"
* [6 x4 T* c3 G' d" y+ A2 d- Rmtd4: = "ubootB"3 j. ^. ~. u- M* m# ^0 w" [
mtd5: = "flash_configA"1 f+ A- W) Y3 `2 c
mtd6: = "flash_configB"2 n5 E" _) d2 R3 r7 q7 L
mtd7: = "slave_paramA"
! _7 F( Y- q5 ]8 Z2 H4 M6 x3 {mtd8: = "slave_paramB"
( E5 S9 L) Y* E* hmtd9: = "kernelA", R2 A6 D# [  }5 H( x
mtd10: = "kernelB"
& x' o) r, e6 V3 U# \mtd11: = "rootfsA"
. `" f( F0 A/ a. N: b- P7 Xmtd12: = "rootfsB". _. y1 u; D( F/ |9 b4 T. ^; c4 d
mtd13: = "wifi_paramA"4 ]7 F! g( f- u7 D# |* V" C
mtd14: = "wifi_paramB"
* o5 Q! O/ X+ H8 ^& \+ Amtd15: = "system_param"
: w) q8 O" j' a& N6 G' n) [mtd16: = "file_system"
: Y' \/ a4 @2 E3 d; ]) F$ f; D* e4 A. o. rmtd17: = "frameworkA"
" F' @) [; M+ H! p4 \) W; y- G: Mmtd18: = "frameworkB"
- [# c- k# c3 U6 C) Rmtd19: = "apps"
' w& T% `' j) p# I0 ~ubi0_13 = "jffs2"
# }7 o0 \; T9 w! E9 D# O# o. G4 U3 n( W

) t# f% m% E4 l其中最重要的是uboot    kernel     rootfs  这三个分区,后面也只用这三个文件作为示例! r! P! o# h- j/ M

" e7 }7 m/ c6 U8 l/ b, F其它光猫可以使用命令cat /proc/mtd
  o. s! v4 `; \9 q: }  y) z查看详细分区结构,8145V结果如下:1 S1 o8 y9 [1 |* X
- u$ D0 {0 M. s& t

4 ~+ ]1 o. R$ B1 B5 Pdev:    size   erasesize  name
0 ^3 `. w4 ~& k# ~/ ~- t+ vmtd0: 00100000 00020000 "startcode"6 n0 w" x$ T8 K' ^
mtd1: 0ff00000 00020000 "ubifs"
$ b( H' G( [. bmtd2: 00000000 00000000 "reserved"
$ `0 B$ p/ B! `" ~8 k# t' W- Fmtd3: 0009b000 0001f000 "ubootA". c0 ]# g9 W) M
mtd4: 0009b000 0001f000 "ubootB"
/ x3 C; f8 A9 ]. W7 K. R6 emtd5: 0003e000 0001f000 "flash_configA"0 c" S& x. @5 c, H/ j
mtd6: 0003e000 0001f000 "flash_configB"
: b: D# n( N% [6 V' ^  Lmtd7: 0003e000 0001f000 "slave_paramA"
# \# n# }/ }: lmtd8: 0003e000 0001f000 "slave_paramB"1 V8 r$ x$ @- V7 z
mtd9: 00307000 0001f000 "kernelA"  ]) @% c6 v) O& N2 ^0 H. x1 l6 F
mtd10: 00307000 0001f000 "kernelB") @7 P2 e: N% l- v0 `7 t
mtd11: 02815000 0001f000 "rootfsA"
! _$ ~0 g* F* I' I% i  rmtd12: 02815000 0001f000 "rootfsB"
) L* r3 w9 T* S( P# m- Cmtd13: 0003e000 0001f000 "wifi_paramA"9 E+ Y+ R8 L% L/ |+ N+ x
mtd14: 0003e000 0001f000 "wifi_paramB"3 W1 C! b# M$ A/ e, p5 j" }8 c8 ^
mtd15: 0003e000 0001f000 "system_param"
2 i1 k/ x/ ^( q: r! qmtd16: 0141a000 0001f000 "file_system"
% Z, O* H9 l) s0 O" smtd17: 0081d000 0001f000 "frameworkA"! Q6 I! U/ x( }$ Q
mtd18: 0081d000 0001f000 "frameworkB"* P$ n( U. \! q$ M! u
mtd19: 07003000 0001f000 "apps"
: M+ j+ j! q+ c  T& [: P; ~9 i; d4 P& [
/ U( u% o+ }0 x, `: D
然后根据这个详细结果来修改备份和还原分区命令
* J. t' ^) Y9 I; \9 r0 l2 @% I3 @# D! W' L

' t& A% U6 M9 I* l& g# M
+ c+ k  O1 N! b9 c% R5 m0 L
7 o- R9 ?4 D8 _+ N7 E( U2,适当修改一些备份文件(也可以不修改,但为了更安全最好是修改一下.因为恢复或刷机bin文件不能大于光猫这个分区的物理flash空间)
5 p7 p1 E2 T% ^$ T- Q将这备份好的bin分区文件在电脑上用winhex或Hex Workshop等等十六进制编辑工具打开' \# V3 E) _9 _. a$ R2 s" D
直接将winhex下拉条拉到最下面如下图,可以看到很多FFFFFFFFFFFFFFFFFF之类的东东,这些东东是flash中的空白位,是不需要再刷入的垃圾数值. W' c  g! u# Z* T- ^1 f/ p

+ f6 H% N+ |0 d! ~" u下面用rootfs作为示例# [$ C4 a& k. z7 k- @9 U
& M0 e2 m# b: [/ [7 ~
( q8 j2 B1 C* n& y
将光标在最后面的FF处点一下,然后点查找,查找数值处输入00,类型为  十六进制值   ,勾选  向上  查找  如下图
( G3 J+ P- h* g- _4 u3 T4 |& l8 y, X

; E; ?- ^8 |' E6 e6 z) T0 D点  确定  开始查找,会看到一堆杂乱的乱码如下图:9 J8 l9 _# u7 R/ ?- j- d

9 E" u; M9 B1 [) `9 _找到的00的位置的后面全部是FFFFFFFFFFFF,将这些数据选中并且删除掉(不包括00),请将下图看清楚再删除& v: Q3 f" R: q! G% _2 u

+ r  B. a: f* C删除后如下图
& C7 P2 ?# [* f  y9 S; T  U' d7 h3 w6 m/ T8 z5 s  [+ Q

) A. Z1 x: x; f" V' q然后保存,就是一个完整无多余的分区bin文件
  {% }; ^( N: M9 z, |( I然后用同样的方法修改其它分区bin文件.说简单点就是:删除掉尾部的空位FFFFFFFFFF数值& o( `. h9 _  |8 F/ I) H+ P, C9 g

- s0 L5 _7 U/ h0 c3,还原到光猫分区中(此操作风险很大,请自行承担)
, e: ]; U$ O, ]2 a$ y将修改处理好的bin文件复制到U盘上,插入光猫USB口
* h4 ?& s9 K* J& r& J然后输入如下命令进行还原这三个分区(每输入一行回车后,多等会,等成功后再输入下一行,千万不要把三行命令一次全部输入进去): A/ ~/ u+ k) v/ Y3 V+ j0 G
dd if=/mnt/usb/USB_disc1/3-uboot.bin of=/dev/mtdblock3
- z7 c( e) H& a# ], ~# Z& e
' {( A8 Q3 U) n* |  O/ Wdd if=/mnt/usb/USB_disc1/9-kernel.bin of=/dev/mtdblock9
9 ~9 r, _* k# b5 f" Z4 Z6 P
" O) e5 O7 }2 odd if=/mnt/usb/USB_disc1/11-rootfs.bin of=/dev/mtdblock11
: b' h; \, y. V  g* c' r
& X' u) c, _/ T  p* D8 w$ P  ]0 i+ N( h% i
说明:一般新光猫未刷错机造成无法启动,系统未滚回备用系统,就是A系统3    9    11分区在运行,否则就是B系统4     10    12分区在启动
, Z& M8 n& p' S1 V5 g6 `3 y; R1 r" h# S% O5 ?1 _9 D
还原进光猫分区后,稍等十几秒,再重启光猫,就OK了,# ^. Y  Q4 h) h; [8 G0 o
) i; J/ k9 ?) A) @
此操作在某种承度上可以代替刷机,也可以看作是手动刷机  w3 N6 W/ W' [8 g2 @; Q4 z
" F  E% a. v' a* v5 y. @- ?4 S$ y' B
二,合成线刷固件(使用组播工具或WEB页面刷机)2 r- b+ l& \# v0 A# t! F
$ Q! }  [9 }6 R- h, a6 m
1,使用HWFW_GUI工具合成完整固件
打开HWFW_GUI然后将本教程提供的固件模板打开,适合8145v  r017   r018版本的固件,其它版本和光猫使用其它固件模板,模板可以找适合自己光猫的补shell的固件,或其它版本固件,都可以.
# D- L% ?# l3 f1 E$ b4 H% J- q) P) P这里使用一个论坛上别人所发的补全shell的固件作为示例
  s: W% I3 L/ z8 ~a,然后点添加项目,然后选择前文所修改好的3-uboot.bin9 ^6 @0 l! Q: }6 i  F
项目路径写flash:uboot   项目类型选择UBOOT  如下图   其它默认 点保存
9 u, C; [& r, ~- n3 Q* f$ e2 r4 h. O
' K7 d- W; Y8 r( ~2 R+ g& M4 w4 F+ j+ y8 q+ R
b,点添加项目,选择修改好的9-kernel.bin
  A$ C. L, Y3 s" F; L项目路径写flash:kernel    项目类型选择KERNEL    项目版本写你备份的这个固件的版本,查看方式可以用winhex打开9-kernel.bin 最前面的一段就是,比如:whwhV300R018C10SPC100B054  不要前面的whwh
* `; e" D# ^/ ^! X) B! ]如下图
6 l8 i7 t5 W: u. Z- l4 C
. U) I4 }: Z$ e
% ?3 O5 t. {% k& R2 Ac,点添加项目,选择修改好的11-rootfs.bin, r2 n1 i0 m9 v* P6 W
项目路径写flash:rootfs    项目类型选择ROOTFS   项目版本写V300R018C10SPC100B054     (同样也是用winhex打开11-rootfs.bin看前面的字段去掉whwh的那段就是)  如下图
" R3 Q( I, v/ h/ r3 \
, k: \- h0 A! w  T: i; Q- d- L0 [0 [: @0 S% |1 k1 Z
0 S. ]) ~; Z* A% f% ]
最后保存好,至次真正的固件制作成功,可以使用组播等等工具刷机
& L0 \$ _# ^/ \来个补好后的固件图6 h* u5 U5 G1 h& I$ b

# o6 f9 w5 M7 U3 i2 z- F
& }# a/ W, d/ @5 y# x9 v
- A) V" [# f6 A5 }' a6 e) r2 z9 S7 k* o" W& S

; H1 {6 |: K: L, M" D% {* r( @1 L4 Y! J/ j) Z# Y! O
未完待续
7 z- `/ z; H3 A  n$ I, @
8 Z5 ^. H9 {- f. [, N
$ {( n, H+ k% r: ?
7 x% R# D, ~7 ~. w% w. W2 ]0 j7 I# C4 R( o2 A/ e' i

- E2 f  b- ^2 U0 v  G) o' I! T* b9 e( }4 B2 P1 ?4 L
/ q+ w2 g) p7 L# D5 p3 X- h

% Q9 v4 h, S/ C# [) W5 w
5 I+ Q- c& r0 G. u+ \9 M3 D& D! x
. a; E9 v' _* n' M3 {; k1 V

% ^3 q& I/ o8 E: }6 B& n0 f8 ^

本帖子中包含更多资源

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

x

点评

请教一下,如果光猫没有USB口,使用TFTP dd if=/dev/mtd0 of=后面有什么格式  发表于 2018-11-9 14:43
发表于 2018-9-22 19:01:00 | 显示全部楼层
支持楼主,学习一下
发表于 2018-9-22 19:57:13 | 显示全部楼层

' Y+ J8 u  x1 I, c. L" q支持楼主,学习一下,备份命令可以看懂一点,后面完全看不懂~~~~~~~~~~~~~~
发表于 2018-9-22 20:34:34 | 显示全部楼层
这个可以有,可以试试以前备份出来的了
发表于 2018-9-22 21:32:26 | 显示全部楼层
不知道用的是什么软件亲。; o- I( J, T0 a( u$ V  Y/ I' m0 Q
有些命令为什么我输入之后显视错误呢。

点评

***t 到光猫里打命令  发表于 2018-9-25 15:11
发表于 2018-9-23 00:57:39 | 显示全部楼层
支持楼主,学习一下
发表于 2018-9-23 08:34:46 | 显示全部楼层
本帖最后由 wyl25866 于 2018-9-23 08:36 编辑 ' v/ H8 I0 s! H! g  Z
5 p& w' r' u  i7 L
这样备份的可以打包成可以在组播工具上的刷机包吗?      既然按分区读取、写入,可不可以用hitool  ???
发表于 2018-9-23 10:38:57 | 显示全部楼层
来了就坐吧
发表于 2018-9-24 06:42:31 | 显示全部楼层
楼主高手啊,打包工具第一次见
发表于 2018-9-24 07:14:42 | 显示全部楼层
没想到我一句话能制造蝴蝶效应,引出了这么多高手。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|宽带技术网 ( 粤ICP备15054574号 )

粤公网安备 44152102000001号

GMT+8, 2019-1-23 22:17 , Processed in 6.716056 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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