宽带技术网

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9815|回复: 51

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

[复制链接]
发表于 2018-9-22 16:48:26 | 显示全部楼层 |阅读模式
本帖最后由 ceocn 于 2018-9-23 11:53 编辑
0 e. x* E' ?5 _2 [( j6 y4 `9 `  q5 \1 G- H" f. ]
此操作有风险,只供研究所用,由此造成任何损坏请自己担责& w6 b  l8 y0 I3 Q- \$ P. `

% t9 N& A) L* w一,华为光猫备份和还原分区:(手上只有8145v所以以这个光猫为例子,其它华为光猫也差不多,)
- C; J. [& g: e
) q* e6 f3 [1 S% L- e: u1,备份各分区:+ C& _9 q' s7 ^8 [9 f( y; R% A3 L- c
插入U盘(剩余空间大于1G)
% r4 v8 P* S- {0 V2 U7 {" A0 g一行一行的输入后回车,等备份完成后再输入下一行(有的分区较大备份时间较长)
# u: K5 j+ k0 E# |7 t9 ^% ^6 R% l
+ m' y2 n* N, G, }8 a  m备份命令如下:8 F( x8 O" S% @+ N5 }  d2 G  V
; X  v) r% G: _/ v
dd if=/dev/mtd0 of=/mnt/usb/USB_disc1/0.bin
: Y6 l. U) V8 {) y( r0 Z
7 z5 P( Y* {! m$ ?9 T! Pdd if=/dev/mtd1 of=/mnt/usb/USB_disc1/1.bin
1 I7 T0 l" x; f3 ~' D: [5 g
5 l, o7 |6 N. c- S0 H/ Tdd if=/dev/mtd2 of=/mnt/usb/USB_disc1/2.bin
, s% D9 p6 ~! S
' [  k' T+ F% x4 U: K; i. Z) u9 ^dd if=/dev/mtd3 of=/mnt/usb/USB_disc1/3-uboot.bin0 C# \' |/ u2 [8 U; e
( s7 ]# s0 f6 ~) U% P3 K
dd if=/dev/mtd5 of=/mnt/usb/USB_disc1/5.bin3 ~% L4 ~: K. T3 @+ y" e

" [) y: f4 B) @+ Xdd if=/dev/mtd7 of=/mnt/usb/USB_disc1/7.bin
6 e) |2 J9 `  A
1 f0 R* M1 v& D7 z3 Cdd if=/dev/mtd9 of=/mnt/usb/USB_disc1/9-kernel.bin
) Y6 ~: ~. y2 Y7 S$ S" j2 j$ z$ A2 ^- m8 W- K) Y( \3 Y% p7 u' w
dd if=/dev/mtd11 of=/mnt/usb/USB_disc1/11-rootfs.bin
; M1 `8 y" ^8 h+ Z
+ G9 e5 q2 w% v! {dd if=/dev/mtd13 of=/mnt/usb/USB_disc1/13.bin3 g7 Z! j- }3 c; r
' R; |" C: H$ n5 m/ j7 }
dd if=/dev/mtd15 of=/mnt/usb/USB_disc1/15.bin
, R1 Y& \6 K4 I* {4 ]( ^4 y6 t1 t* u4 A3 e
dd if=/dev/mtd16 of=/mnt/usb/USB_disc1/16.bin; g9 Y3 v0 p% q
, A; v1 M/ @4 e/ S4 N/ h7 O) I$ {
dd if=/dev/mtd17 of=/mnt/usb/USB_disc1/17.bin
; a" [" Q9 L7 Z' c/ w5 V  P! v0 a1 T; ?  p; \
dd if=/dev/mtd19 of=/mnt/usb/USB_disc1/19.bin5 W% y# u2 l" b
* y/ j7 i5 s, u5 l
dd if=/dev/ubi0_13 of=/mnt/usb/USB_disc1/0_13.bin+ }+ ]7 L# M) d

- f# [' M8 C% |# KU盘根目录下这些 bin文件就是各分区的完整备份
0 @& V3 }& |8 l: W8 r9 S9 j
; c7 @& A& ?/ {& k# VA和B分区是一样的,所以只需备份其中一个即可
* X7 c8 _' O* c# ]& q! }各分区的意思如下:) v. V9 r- G! ~
mtd0: ="startcode"
9 {+ {+ d7 q: O9 Hmtd1: ="ubifs"
; z5 W9 L" j+ V$ Y5 v% Rmtd2: = "reserved"( T0 Z) S! B8 w
mtd3: = "ubootA"
! K- f; N! E) rmtd4: = "ubootB"
4 F% Q; j% `7 Bmtd5: = "flash_configA"
; g/ e% k& {1 G8 s6 T' g$ i1 umtd6: = "flash_configB"% c' X* z* `/ b3 p0 O/ b# I
mtd7: = "slave_paramA"1 E9 r: Z, ]; u" T9 B6 z
mtd8: = "slave_paramB"
& L. x6 M* Z" {( J) o" Amtd9: = "kernelA"
  |. d# d+ F" D2 Pmtd10: = "kernelB", f# R" }  \4 f7 q
mtd11: = "rootfsA"
% l; o1 e7 u8 l' ~% U7 N9 {$ P  L4 y) fmtd12: = "rootfsB"
" U, Q* O$ H, M5 h6 [; Mmtd13: = "wifi_paramA"
6 S& Q+ l1 r  ^" Fmtd14: = "wifi_paramB"
9 s; B4 G2 K5 l& ?mtd15: = "system_param"
( t3 h9 h5 A; l  qmtd16: = "file_system"/ Z: T% W2 t/ K
mtd17: = "frameworkA"1 M* Q* p- c# m9 ^9 Z/ ?/ t1 l( d
mtd18: = "frameworkB"7 C$ B% I- i7 ]$ }* ?' @% A4 q7 J0 i
mtd19: = "apps"
. S7 i# ^8 Y6 Aubi0_13 = "jffs2"
  h% Z' A  ]* ~$ ~( b5 Q$ ^! @& E% w7 G: ?" P9 e
: N$ f( W* B9 }3 T4 |! y0 A
其中最重要的是uboot    kernel     rootfs  这三个分区,后面也只用这三个文件作为示例
$ U7 a) A6 q1 s+ F* V5 T( v' i4 j' \/ ?& B' e
其它光猫可以使用命令cat /proc/mtd3 k" @7 h$ O" \; K" F9 u
查看详细分区结构,8145V结果如下:: N  Y% d3 ?* o+ {9 N. u  }

$ ^; V% O( q8 b  H8 W* p
& A# X) U5 |8 @, N; t
dev:    size   erasesize  name
! T2 W# j3 b. m) M1 N, qmtd0: 00100000 00020000 "startcode"
' a9 O+ x+ U' d' F; G; Z/ Fmtd1: 0ff00000 00020000 "ubifs"
! T4 }4 C2 r" ~9 e1 y' ~: ?6 Wmtd2: 00000000 00000000 "reserved"7 o: R3 _( s5 A- {- P6 F) Z* T
mtd3: 0009b000 0001f000 "ubootA"6 \7 {$ N4 Z9 M0 J/ w- @  I& j1 ^4 W' y
mtd4: 0009b000 0001f000 "ubootB"
9 i; A- [4 D9 ]* `mtd5: 0003e000 0001f000 "flash_configA"2 w- l3 x% d' D3 f  b, w# M
mtd6: 0003e000 0001f000 "flash_configB"! V- ~/ [% Z) i; b% ?8 k( _8 e0 J
mtd7: 0003e000 0001f000 "slave_paramA"
0 x$ k4 I$ _# T- s, t0 d# m6 ^& Ymtd8: 0003e000 0001f000 "slave_paramB"
4 i; Z- l+ l; S! B/ c  t& Z' amtd9: 00307000 0001f000 "kernelA"
* U* G3 o/ U9 Lmtd10: 00307000 0001f000 "kernelB"
$ u4 s, \& o, jmtd11: 02815000 0001f000 "rootfsA". ^" N, ^9 y3 v  x: [& S/ g' O
mtd12: 02815000 0001f000 "rootfsB"
/ K3 u: i+ I1 L' Jmtd13: 0003e000 0001f000 "wifi_paramA"
2 g$ a+ Y0 E+ z9 v; i7 Amtd14: 0003e000 0001f000 "wifi_paramB"* P1 }; w6 C& W: y( C- F9 h- {
mtd15: 0003e000 0001f000 "system_param"
5 D  ]9 u0 X3 c: u7 Y7 Pmtd16: 0141a000 0001f000 "file_system"
7 q7 x( R" i. P. M0 J4 ~& x$ B1 Wmtd17: 0081d000 0001f000 "frameworkA"5 l/ f1 ^& b+ \$ r
mtd18: 0081d000 0001f000 "frameworkB"2 y# }' F* D! e8 j6 G
mtd19: 07003000 0001f000 "apps"
& E! U' v: @  C2 ?! D1 c- D1 O* G  j& b8 O+ q. n" t

9 t; w' ]8 d8 g, r* s7 X& ^5 u然后根据这个详细结果来修改备份和还原分区命令
: r& \, u. L% Y
& E5 d2 p  o! V, ]/ F# Y1 v8 ?, T) M" o* m, U8 R+ S9 ?; L

8 ~) W3 J9 g& G: t7 U% n! J" g/ ^$ M( I6 _4 o
2,适当修改一些备份文件(也可以不修改,但为了更安全最好是修改一下.因为恢复或刷机bin文件不能大于光猫这个分区的物理flash空间)" L9 P) R; V9 f; J& o. N/ P
将这备份好的bin分区文件在电脑上用winhex或Hex Workshop等等十六进制编辑工具打开$ _$ M- d4 @, N
直接将winhex下拉条拉到最下面如下图,可以看到很多FFFFFFFFFFFFFFFFFF之类的东东,这些东东是flash中的空白位,是不需要再刷入的垃圾数值# h3 [( l/ J1 s
: k. Z; S3 [' I9 o0 \* Z% N
下面用rootfs作为示例
+ U0 V% V$ b; O+ V% d/ a8 n: {3 t+ J0 T3 Y( \  z, t. O  N
, n' ~% V7 e; Y4 y, Q
将光标在最后面的FF处点一下,然后点查找,查找数值处输入00,类型为  十六进制值   ,勾选  向上  查找  如下图
( z0 ^8 J" {! h/ e! O3 S9 j; V( B1 c

  S, h3 Q& ?/ k点  确定  开始查找,会看到一堆杂乱的乱码如下图:
( U- l, u7 n( [1 C2 D  [
* c- ~& \- N8 D% f% s找到的00的位置的后面全部是FFFFFFFFFFFF,将这些数据选中并且删除掉(不包括00),请将下图看清楚再删除- M4 V# J' b; m7 t

3 J' y% e7 j4 m9 v2 x删除后如下图
+ `$ z1 G5 l8 w) ^* t: m4 n6 P
! ?* e8 c; v( ~* a
4 V2 ]" b3 O2 X4 z然后保存,就是一个完整无多余的分区bin文件' C& a" R1 E7 ~0 K' H7 i: O
然后用同样的方法修改其它分区bin文件.说简单点就是:删除掉尾部的空位FFFFFFFFFF数值6 r, p* m& r/ N9 O% W0 u
0 x; ^& O0 T: P( b! h; J+ S
3,还原到光猫分区中(此操作风险很大,请自行承担)4 \  S' F+ B' N4 Q6 I! o4 l3 G
将修改处理好的bin文件复制到U盘上,插入光猫USB口& B4 Y1 j1 n) j
然后输入如下命令进行还原这三个分区(每输入一行回车后,多等会,等成功后再输入下一行,千万不要把三行命令一次全部输入进去)/ g" x# {! }7 ?8 k" s
dd if=/mnt/usb/USB_disc1/3-uboot.bin of=/dev/mtdblock3- i% K" j3 C! i. H/ a9 b
7 q! Y: d. p& B% n  s' q3 g
dd if=/mnt/usb/USB_disc1/9-kernel.bin of=/dev/mtdblock9
* `5 b0 u+ g' h0 [, E; Y8 |
% U/ G4 ^- `/ O" o6 u  Hdd if=/mnt/usb/USB_disc1/11-rootfs.bin of=/dev/mtdblock11
  k/ r4 \9 M6 a7 K/ V
  Q/ I8 X; M$ [
% z- C8 Q* Y( k: L+ I) P说明:一般新光猫未刷错机造成无法启动,系统未滚回备用系统,就是A系统3    9    11分区在运行,否则就是B系统4     10    12分区在启动! o7 F+ c* b$ O+ r

2 O2 D9 U3 D9 {还原进光猫分区后,稍等十几秒,再重启光猫,就OK了,' V7 u" N2 w; b) D% |

, y$ c2 a% ~( S2 Y此操作在某种承度上可以代替刷机,也可以看作是手动刷机* F# x$ l: f" ]

$ N( x* A7 S, J" a二,合成线刷固件(使用组播工具或WEB页面刷机)
4 A4 M' b5 T$ ]/ w) T) C8 O
9 h, U1 J1 j( X! y. B1,使用HWFW_GUI工具合成完整固件
打开HWFW_GUI然后将本教程提供的固件模板打开,适合8145v  r017   r018版本的固件,其它版本和光猫使用其它固件模板,模板可以找适合自己光猫的补shell的固件,或其它版本固件,都可以.
2 R% J3 C4 Z, X1 I这里使用一个论坛上别人所发的补全shell的固件作为示例( n/ k8 S/ |: J- C
a,然后点添加项目,然后选择前文所修改好的3-uboot.bin; Z) `+ f7 `0 _' M+ w: W! N
项目路径写flash:uboot   项目类型选择UBOOT  如下图   其它默认 点保存' S; ]0 }4 n9 w# m9 [- j

, a' @2 B! e8 A$ N% K( E  L/ O, [) w! f# P9 {6 u5 [% j
b,点添加项目,选择修改好的9-kernel.bin) {; S5 Y. q2 a1 |6 A
项目路径写flash:kernel    项目类型选择KERNEL    项目版本写你备份的这个固件的版本,查看方式可以用winhex打开9-kernel.bin 最前面的一段就是,比如:whwhV300R018C10SPC100B054  不要前面的whwh
, T7 e4 |3 k7 O4 P+ p# F0 b如下图
$ }) l' \- E- F- M. g& j; i8 u: c) H- [5 B; y% \# v0 q
3 Z9 k$ d& o5 p/ Z
c,点添加项目,选择修改好的11-rootfs.bin; ?6 d6 Q* C& p% x; I
项目路径写flash:rootfs    项目类型选择ROOTFS   项目版本写V300R018C10SPC100B054     (同样也是用winhex打开11-rootfs.bin看前面的字段去掉whwh的那段就是)  如下图0 V" b4 c; Q' A. D- v1 r

7 ]9 r/ [6 H) w0 a4 J7 Z6 P: a3 `' n6 ]4 K$ J* z9 c0 o
# [/ b+ X; b$ c: m
最后保存好,至次真正的固件制作成功,可以使用组播等等工具刷机
# F) w) x1 z! g+ e0 X5 x来个补好后的固件图
7 Z( I! A* N' d$ }( h7 c
2 Q; H5 s0 b1 B- w4 J2 z) K# ?) g( S7 ]& W0 g

% V" T5 O! I: \' D2 ?5 l" o, o; `1 H& x/ Y3 N

( G9 V; Y$ I- M$ `$ Y% `* Y' V
4 m% D' l4 v0 v% C/ Y+ S; O( }未完待续/ l6 M" w9 t% y1 [3 `+ O

$ q7 M7 l: e' z, b' S
0 l6 D2 S: @; s2 a4 B  D' m; q( [  F7 c4 [; a

4 ], ~0 }  a3 p; E, B, \
; |- \; m" ^2 ^3 V- v* e9 L3 I
3 x) d0 Z7 M, @% O' d; x, m. y7 ^6 p$ a0 [5 K8 P
( z  ~$ C- s  i9 d  s; o' a

  z, V0 x2 v+ |  {  e4 _* a* O/ ]2 u+ b4 p
2 R7 k. `! k4 r' F. a
: l. z9 ?/ R! ]% B, o$ C

本帖子中包含更多资源

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

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 | 显示全部楼层

! b! W8 [1 t, L! c4 U支持楼主,学习一下,备份命令可以看懂一点,后面完全看不懂~~~~~~~~~~~~~~
发表于 2018-9-22 20:34:34 | 显示全部楼层
这个可以有,可以试试以前备份出来的了
发表于 2018-9-22 21:32:26 | 显示全部楼层
不知道用的是什么软件亲。
% W5 x$ H* f6 I+ U# T. L# @有些命令为什么我输入之后显视错误呢。

点评

***t 到光猫里打命令  发表于 2018-9-25 15:11
发表于 2018-9-23 00:57:39 | 显示全部楼层
支持楼主,学习一下
发表于 2018-9-23 08:34:46 | 显示全部楼层
本帖最后由 wyl25866 于 2018-9-23 08:36 编辑
9 W/ U4 o! m' f' X# N( l: g1 \
0 I' s8 M8 e/ D( H: Y& {% e# w! i这样备份的可以打包成可以在组播工具上的刷机包吗?      既然按分区读取、写入,可不可以用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-3-26 14:53 , Processed in 0.118223 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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