宽带技术网

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13721|回复: 62

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

[复制链接]
发表于 2018-9-22 16:48:26 | 显示全部楼层 |阅读模式
本帖最后由 ceocn 于 2018-9-23 11:53 编辑 3 T$ Z4 p0 H9 u  g& e  ?) X0 d
" @( s5 P6 h: q5 t" O* X$ Y
此操作有风险,只供研究所用,由此造成任何损坏请自己担责; i" V6 I; ]# G7 i( q  J

8 C* g; f& {8 J7 N/ e$ |% B一,华为光猫备份和还原分区:(手上只有8145v所以以这个光猫为例子,其它华为光猫也差不多,)
6 ~; g0 p4 }: X8 @2 @
1 l- \0 i* N* m, @) H1,备份各分区:
/ _6 k: ?0 r4 [0 I- {8 V* P7 H5 P' w插入U盘(剩余空间大于1G)
7 [6 a: _1 U2 K一行一行的输入后回车,等备份完成后再输入下一行(有的分区较大备份时间较长)
$ w4 u3 L6 U2 l1 Y- L9 Q3 q5 n& J: v1 L
备份命令如下:
1 u7 Z+ A( [  |. ~$ z9 S! W+ r3 T' Y0 T5 m
dd if=/dev/mtd0 of=/mnt/usb/USB_disc1/0.bin( y5 ?% d6 w; ^6 d
! U$ m# I" B- C7 }3 l5 e
dd if=/dev/mtd1 of=/mnt/usb/USB_disc1/1.bin0 a. O3 Q& ]/ a% l' P

2 K. n! D1 v( B7 P. [5 Bdd if=/dev/mtd2 of=/mnt/usb/USB_disc1/2.bin5 ]: S8 {. y9 J/ r. L, S7 V% x
. l/ c" u9 O* }: o* v5 A
dd if=/dev/mtd3 of=/mnt/usb/USB_disc1/3-uboot.bin) m$ ^( |* _# Z# t3 N5 x
6 R- H, Z4 R2 t9 _/ h
dd if=/dev/mtd5 of=/mnt/usb/USB_disc1/5.bin  s5 k+ g) r3 s% ]. }# r
5 c! [8 Z. y0 f$ I& j
dd if=/dev/mtd7 of=/mnt/usb/USB_disc1/7.bin
; I, |5 J1 I, {8 r8 P. [% G& o& b( d: h6 f) e! N) E3 [, b, R" [
dd if=/dev/mtd9 of=/mnt/usb/USB_disc1/9-kernel.bin) G4 n! b8 H6 j  ]

( K* \' U2 d7 x2 i6 O+ tdd if=/dev/mtd11 of=/mnt/usb/USB_disc1/11-rootfs.bin- ?6 X; ^- l( O
- }8 P. W' s9 H, O
dd if=/dev/mtd13 of=/mnt/usb/USB_disc1/13.bin) P2 ?- }0 A. P/ O  `, M3 ~
* c( |& b$ E1 U( E& T
dd if=/dev/mtd15 of=/mnt/usb/USB_disc1/15.bin  Y1 q+ J6 i( n9 K$ A3 ]2 `

% _- i7 A! H  Y0 {# I* m) _; T) add if=/dev/mtd16 of=/mnt/usb/USB_disc1/16.bin# j# q2 r0 b# m9 i7 P' A% q* Z

# X8 [; L% _, e% n/ \/ Ndd if=/dev/mtd17 of=/mnt/usb/USB_disc1/17.bin
9 `- N3 f+ R- e0 g7 r3 R7 b" ^4 d# o5 p6 }( P
dd if=/dev/mtd19 of=/mnt/usb/USB_disc1/19.bin  e: _/ X; |" u
, F( Z4 `! R& K* O" |" \) w
dd if=/dev/ubi0_13 of=/mnt/usb/USB_disc1/0_13.bin
7 c' b* J0 u- c& m& e  d
: M' R+ ^% g+ g& B* L) @U盘根目录下这些 bin文件就是各分区的完整备份& k" v8 q# K9 \. @# b* K

3 j1 X1 I3 I/ i& U5 N7 [0 IA和B分区是一样的,所以只需备份其中一个即可4 i% c1 {3 ^+ ^+ x2 J
各分区的意思如下:) s! r4 t! K8 y8 B. Y( v
mtd0: ="startcode"- W8 Y2 H- ?" u, C& G3 O
mtd1: ="ubifs"
' w9 ]( B+ i, emtd2: = "reserved"
+ a$ w- @  l7 k1 J5 s4 hmtd3: = "ubootA"
5 C2 t! E+ Y. o7 [# lmtd4: = "ubootB"
  c9 {( q6 U. z* i2 ~4 B2 Rmtd5: = "flash_configA"
# r3 Y8 ?5 Z8 B% @% E+ S+ Q. Zmtd6: = "flash_configB"# d, {* i; v- u# k7 T9 I3 j% k
mtd7: = "slave_paramA"7 a( u: _2 q6 B* X
mtd8: = "slave_paramB") o) c- O: E. v) I$ G
mtd9: = "kernelA"1 ~- z* ~2 M! Q3 x. [/ P
mtd10: = "kernelB"6 T% y/ P  I7 U, E+ P
mtd11: = "rootfsA"' S5 A% U8 d5 @  f8 x0 s) e  v
mtd12: = "rootfsB"
. w% c) s6 m1 c9 j! qmtd13: = "wifi_paramA"3 H+ X; F* f* G
mtd14: = "wifi_paramB"
3 G" _; K$ e- {  P, a, N& R' M  V, omtd15: = "system_param"
" b0 k5 o3 l, a6 k( U' fmtd16: = "file_system"
" W" ]: N5 A: O. ]mtd17: = "frameworkA"
8 `( i9 \6 j3 umtd18: = "frameworkB"# B" {. t, g! T$ r% T8 H$ m
mtd19: = "apps"
1 P  m5 a' h2 G1 iubi0_13 = "jffs2"
) \) T. u! ~7 }" ?) G) ~# a
4 Z, [3 x  P6 u( V1 {" W8 W. u! ?, `& v9 v
其中最重要的是uboot    kernel     rootfs  这三个分区,后面也只用这三个文件作为示例* ]- k1 L  \8 Y0 g" ]
5 A2 a* l6 Q6 q& g5 k
其它光猫可以使用命令cat /proc/mtd
9 Q% V6 y8 _# c: y( D6 ]查看详细分区结构,8145V结果如下:
9 k1 K+ S9 i% S* b: e1 Z
* K3 N) ]* z9 ~0 t- F
# R- a2 C& N5 L5 m+ y
dev:    size   erasesize  name
& a% A8 s' B, }# a/ z! y. w: S& ymtd0: 00100000 00020000 "startcode"7 ?5 u4 ], N6 d% n! O
mtd1: 0ff00000 00020000 "ubifs"
4 _- \' [: l5 n% K! s: K+ e( p; dmtd2: 00000000 00000000 "reserved"
9 t. t1 J# S6 D# }mtd3: 0009b000 0001f000 "ubootA"
6 |' Z. A; a( ]8 H& j8 pmtd4: 0009b000 0001f000 "ubootB"
6 g- B' u! y$ {; y0 Omtd5: 0003e000 0001f000 "flash_configA"
! e7 u& o- M4 c( I# _! G. g: H# Amtd6: 0003e000 0001f000 "flash_configB"
0 L" D( ]2 A" K5 {mtd7: 0003e000 0001f000 "slave_paramA". y4 D' a0 J7 X- x0 c
mtd8: 0003e000 0001f000 "slave_paramB"2 }* I2 \0 o) q& R% u0 n5 X2 S
mtd9: 00307000 0001f000 "kernelA"
, Y9 k1 a" {/ n. _0 I/ Cmtd10: 00307000 0001f000 "kernelB"3 H8 p& K$ ~5 T& M
mtd11: 02815000 0001f000 "rootfsA"
. U* X3 B( f5 F3 z2 Xmtd12: 02815000 0001f000 "rootfsB"
7 A9 q$ }& q% h& |mtd13: 0003e000 0001f000 "wifi_paramA"' [8 q0 V$ O  H, P' t  z
mtd14: 0003e000 0001f000 "wifi_paramB"
  F0 a" v2 w+ d$ vmtd15: 0003e000 0001f000 "system_param"! d7 o1 @/ u( O6 y
mtd16: 0141a000 0001f000 "file_system"
, T6 Y; F8 o1 \' V$ V/ xmtd17: 0081d000 0001f000 "frameworkA"
5 a$ a) b) O% E4 _mtd18: 0081d000 0001f000 "frameworkB"; U; G& v  M4 L' b2 q
mtd19: 07003000 0001f000 "apps"( w! x) }4 f' ^- H5 s/ z

! v% }! k8 f  G4 T7 Z7 d
* L( [9 l0 Y1 U8 W3 j
然后根据这个详细结果来修改备份和还原分区命令3 j! t4 Z5 y4 B  |' s

- I4 F3 ~( _+ |7 T8 v4 A+ f8 `
/ I" g9 O; T$ U6 O4 g0 R- `3 P
& ~8 i) j' ]- ^: J
* J4 F. j: t4 O) ~: L! `1 Z2,适当修改一些备份文件(也可以不修改,但为了更安全最好是修改一下.因为恢复或刷机bin文件不能大于光猫这个分区的物理flash空间)$ g& P: w7 A0 F
将这备份好的bin分区文件在电脑上用winhex或Hex Workshop等等十六进制编辑工具打开
+ ]% e7 c: F8 {1 V4 q7 L直接将winhex下拉条拉到最下面如下图,可以看到很多FFFFFFFFFFFFFFFFFF之类的东东,这些东东是flash中的空白位,是不需要再刷入的垃圾数值
4 }* k# y! R3 `# m0 h9 }3 m- ]* d; {# P. X
下面用rootfs作为示例7 x- S- v% ]7 p0 Q+ _! k0 r
4 v4 m4 C5 O$ @1 c3 H- V
/ _% x' h1 d% M3 G' n9 h7 U+ o5 r
将光标在最后面的FF处点一下,然后点查找,查找数值处输入00,类型为  十六进制值   ,勾选  向上  查找  如下图, x1 J' l+ H& h, W7 ?

3 y  {' ]7 k; X% V* b3 \* V) }# k0 w  ]
点  确定  开始查找,会看到一堆杂乱的乱码如下图:9 w( {. r6 {  I! I

& _/ C: f8 K' ?, Q+ J. [' G找到的00的位置的后面全部是FFFFFFFFFFFF,将这些数据选中并且删除掉(不包括00),请将下图看清楚再删除
6 n1 I& ], T* w0 d6 p# D! m0 f4 J/ H; c
删除后如下图1 E  W( }. B9 k
, `1 t8 Q8 {7 R) ?  h3 b! G" }3 x
+ o+ \4 Z& J& r) D
然后保存,就是一个完整无多余的分区bin文件
; z3 K3 ^2 Q6 G% D然后用同样的方法修改其它分区bin文件.说简单点就是:删除掉尾部的空位FFFFFFFFFF数值
& ^' v( |: U) A0 ^) g1 g$ g/ |! ^% j7 T9 C( G) @4 ]
3,还原到光猫分区中(此操作风险很大,请自行承担)/ ?) _- Q; D9 Y. T
将修改处理好的bin文件复制到U盘上,插入光猫USB口
+ T4 Y1 q$ M7 Y" F5 u然后输入如下命令进行还原这三个分区(每输入一行回车后,多等会,等成功后再输入下一行,千万不要把三行命令一次全部输入进去)
  i0 b' s" m# V: ]$ h' b. S& Qdd if=/mnt/usb/USB_disc1/3-uboot.bin of=/dev/mtdblock3
5 g( B5 L0 x/ F: t9 ~; b
1 r$ z3 y- f( W/ v7 odd if=/mnt/usb/USB_disc1/9-kernel.bin of=/dev/mtdblock90 J/ f- A4 B; j/ E
6 l  C5 X' n7 ~: g" I! o7 Y0 D
dd if=/mnt/usb/USB_disc1/11-rootfs.bin of=/dev/mtdblock11
  q# R, j; B( y# y) T
4 Z3 X2 m2 t5 F1 o" E0 F! @4 e! F" T$ v" i
说明:一般新光猫未刷错机造成无法启动,系统未滚回备用系统,就是A系统3    9    11分区在运行,否则就是B系统4     10    12分区在启动
+ v3 g- `, i* P% s+ W* r8 C) C, ]7 ~+ R, r4 |; q$ o7 r
还原进光猫分区后,稍等十几秒,再重启光猫,就OK了,
4 M& t: \& {' s8 p+ h& y+ m
% ~6 k- N4 k+ @此操作在某种承度上可以代替刷机,也可以看作是手动刷机4 j0 g! C# N* o4 V
; W: ^4 @/ Y  g+ n) g0 @
二,合成线刷固件(使用组播工具或WEB页面刷机)
. M6 r+ h, i4 I' T- ?; B* [9 J
1 D9 o/ q4 j# A7 ^- Z0 p8 B1,使用HWFW_GUI工具合成完整固件
打开HWFW_GUI然后将本教程提供的固件模板打开,适合8145v  r017   r018版本的固件,其它版本和光猫使用其它固件模板,模板可以找适合自己光猫的补shell的固件,或其它版本固件,都可以.  i. I9 j* _; r& }' M" J
这里使用一个论坛上别人所发的补全shell的固件作为示例
& f6 X8 I( w, oa,然后点添加项目,然后选择前文所修改好的3-uboot.bin
9 t0 H% d, E/ B! }项目路径写flash:uboot   项目类型选择UBOOT  如下图   其它默认 点保存& ]0 R9 {/ i" `2 }2 n$ B
$ p- H" ^" D* c  a

0 J- Q) O5 C, E2 n& R5 sb,点添加项目,选择修改好的9-kernel.bin8 Z! W& T9 p/ N" i" @. \$ S
项目路径写flash:kernel    项目类型选择KERNEL    项目版本写你备份的这个固件的版本,查看方式可以用winhex打开9-kernel.bin 最前面的一段就是,比如:whwhV300R018C10SPC100B054  不要前面的whwh
8 v6 J' C5 S  x如下图6 e* n7 S0 t+ A& S2 q  u6 o

/ T) k* @: [& n. |0 i$ X5 b, n& T2 ~
8 i- _+ p2 D4 S' W- Zc,点添加项目,选择修改好的11-rootfs.bin
( X4 E! X' Q. S/ b# _8 P0 K8 l7 r项目路径写flash:rootfs    项目类型选择ROOTFS   项目版本写V300R018C10SPC100B054     (同样也是用winhex打开11-rootfs.bin看前面的字段去掉whwh的那段就是)  如下图6 k5 L! ?# @8 y! \3 R) f: q" |
4 O9 T* m* d0 t7 x1 D

+ H$ |( ]" o5 L2 e- E6 i) c6 S
9 j8 u9 l# c( r0 w最后保存好,至次真正的固件制作成功,可以使用组播等等工具刷机# g- d; p' M1 }3 F
来个补好后的固件图
4 t  k( V0 C- W/ N) D: ~. A9 h' U0 i- ^- B* _

4 |3 T% r1 ~' K$ d4 u; P3 f$ |) m: C" r$ i8 F# }5 E9 I

: g% r8 S& l/ h2 y3 h; S9 p# ]
; V' F5 z! I+ `2 B
% u( ^' q7 \9 ^7 f% s) k! Q' B未完待续
) V" F: t, F3 q$ R; S1 R2 X5 X
6 m% b" a" G; e" u

6 a( _: P! t) {# a$ z. w0 ^( }4 Z1 Y% T5 r& Q- B
: M+ `% m  {4 t* ]# }. o9 g9 R

; ]0 e& F$ Q- \
8 I& [/ b5 [$ t
/ _4 d# J( o5 R  i+ U) A, b) h' P/ i; L4 Y  O) y8 G
4 j5 o$ u4 `  ?( T( R! z, c5 m) l
7 h5 [& U& ?' `2 Y

8 v) J- e2 Y! d7 z% g3 D' X

本帖子中包含更多资源

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

x

点评

版主为什么删你 固件帖子 抢他生意了  发表于 2019-4-30 13:46
请教一下,如果光猫没有USB口,使用TFTP dd if=/dev/mtd0 of=后面有什么格式  发表于 2018-11-9 14:43
发表于 2018-9-22 19:01:00 | 显示全部楼层
支持楼主,学习一下
发表于 2018-9-22 19:57:13 | 显示全部楼层
3 h+ d# R( W3 ], {! ]3 E
支持楼主,学习一下,备份命令可以看懂一点,后面完全看不懂~~~~~~~~~~~~~~
发表于 2018-9-22 20:34:34 | 显示全部楼层
这个可以有,可以试试以前备份出来的了
发表于 2018-9-23 00:57:39 | 显示全部楼层
支持楼主,学习一下
发表于 2018-9-23 08:34:46 | 显示全部楼层
本帖最后由 wyl25866 于 2018-9-23 08:36 编辑
- ?/ `& u) [1 \! Y" y5 i
& j6 U2 E) ~" D7 ?6 ]这样备份的可以打包成可以在组播工具上的刷机包吗?      既然按分区读取、写入,可不可以用hitool  ???
发表于 2018-9-23 10:38:57 | 显示全部楼层
来了就坐吧
发表于 2018-9-24 06:42:31 | 显示全部楼层
楼主高手啊,打包工具第一次见
发表于 2018-9-24 07:14:42 | 显示全部楼层
没想到我一句话能制造蝴蝶效应,引出了这么多高手。。。
发表于 2018-9-24 13:12:39 | 显示全部楼层
你原版hs8145v的刷机包模板能提供一下吗?有模板再修改

点评

论坛上那个018的开shell就是  发表于 2018-9-25 15:09
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

粤公网安备 44152102000001号

GMT+8, 2019-7-19 18:52 , Processed in 0.163267 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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