宽带技术网

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 39461|回复: 118

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

  [复制链接]
发表于 2018-9-22 16:48:26 | 显示全部楼层 |阅读模式
本帖最后由 ceocn 于 2018-9-23 11:53 编辑
- n/ x3 l/ D) \0 c4 R& e) |! F- l/ y" u3 C: w6 L+ k& h7 D
此操作有风险,只供研究所用,由此造成任何损坏请自己担责
# r0 t0 B, }& j8 d+ |3 q  W8 Z
) \* J, A2 Q$ A! @, d一,华为光猫备份和还原分区:(手上只有8145v所以以这个光猫为例子,其它华为光猫也差不多,)6 l8 h0 E% j3 v+ @  A
4 Q8 S  M+ s/ T+ _2 H$ {. c! I
1,备份各分区:. b, f! K* m# W4 V& o7 L" N- g$ O1 _8 f
插入U盘(剩余空间大于1G)
1 R3 K6 X* I# x1 Z4 h( W% F% T一行一行的输入后回车,等备份完成后再输入下一行(有的分区较大备份时间较长)
. H/ p. F- ]# S# H. ^0 M; m4 c$ a, z& Y/ ?
备份命令如下:
/ ?6 `3 z. q7 D; f) U
9 H, j% M0 b5 r- T/ ]dd if=/dev/mtd0 of=/mnt/usb/USB_disc1/0.bin6 B. {& ~* D& n: M2 U! P. a

% r4 k5 X& x) O0 T8 \- T' Sdd if=/dev/mtd1 of=/mnt/usb/USB_disc1/1.bin: x' l* \9 i, W  \$ c& `0 n7 L9 }, |+ Z

. M& t3 t$ D! d/ U. w0 t  odd if=/dev/mtd2 of=/mnt/usb/USB_disc1/2.bin: Z6 B; [& n7 m

+ R1 z. P# Q% F/ e( B3 Y9 jdd if=/dev/mtd3 of=/mnt/usb/USB_disc1/3-uboot.bin
/ L7 R; N. N6 \, C2 M2 k3 t: K' W- t6 O/ D' b
dd if=/dev/mtd5 of=/mnt/usb/USB_disc1/5.bin
1 d4 {" z" x* {) y" N% p5 X! V1 b8 c. M
dd if=/dev/mtd7 of=/mnt/usb/USB_disc1/7.bin
2 L5 Z; g7 F3 p' k! h1 ?4 z1 V- a
/ u  x$ Q! w# ~3 r, ?dd if=/dev/mtd9 of=/mnt/usb/USB_disc1/9-kernel.bin
% M% J* N8 ~+ |$ `$ ?% S# M$ o: }2 ?5 i, p9 A. x
dd if=/dev/mtd11 of=/mnt/usb/USB_disc1/11-rootfs.bin/ t' l  T! I9 i: \6 _+ r- }

6 E8 Y3 h$ X* \dd if=/dev/mtd13 of=/mnt/usb/USB_disc1/13.bin
) H9 m# v& z  L
7 H) v) e8 z! n$ S1 x) Fdd if=/dev/mtd15 of=/mnt/usb/USB_disc1/15.bin
  Q, i, m) Z9 [4 B- d2 x" S. b# s: Z
dd if=/dev/mtd16 of=/mnt/usb/USB_disc1/16.bin
* G! u7 `" f, Z6 ]! |
" `2 z# d- d4 idd if=/dev/mtd17 of=/mnt/usb/USB_disc1/17.bin
/ {0 x1 q& O5 P3 O4 ]5 j1 g3 D$ }1 _, c7 _2 _" `& E5 ~4 {  D3 p
dd if=/dev/mtd19 of=/mnt/usb/USB_disc1/19.bin
$ K. N$ o+ n0 a( l  _7 m' {& W: b% u* [  E3 [+ c
dd if=/dev/ubi0_13 of=/mnt/usb/USB_disc1/0_13.bin& `  V+ @- v0 ~8 U) x) t6 X

5 O! L. w, N2 d7 o2 ~! HU盘根目录下这些 bin文件就是各分区的完整备份/ e2 d' a9 T' m0 r$ w" m, ?/ \5 y0 a' h

# g, }+ {8 K9 w# \" KA和B分区是一样的,所以只需备份其中一个即可$ c6 \9 W! U& ]
各分区的意思如下:
! @! C& ?& c( O+ Gmtd0: ="startcode"
% L5 U' T" L; j8 mmtd1: ="ubifs"
3 k, K0 v4 v0 n! G) j# m# omtd2: = "reserved"
# y$ k  s; p+ `4 Ymtd3: = "ubootA"
& r8 @2 ]$ M; z( P0 Cmtd4: = "ubootB"
4 U6 F# ~/ p7 @+ I$ Fmtd5: = "flash_configA"" H5 G; v0 J# p
mtd6: = "flash_configB"
3 q0 N2 }) K/ E1 [/ e- [mtd7: = "slave_paramA"
8 y# I0 f7 ]/ p4 Q, Z) Jmtd8: = "slave_paramB"
) C+ F& _) i% f; J0 L, d& p9 i$ bmtd9: = "kernelA"& T6 {/ `* F! L7 F% t
mtd10: = "kernelB"" S% @7 C  X( K% J7 ^. k9 t! E
mtd11: = "rootfsA"/ j1 S( W4 j  ^
mtd12: = "rootfsB"2 j7 Q7 v7 X9 }: P9 a+ b
mtd13: = "wifi_paramA"
! f' c. i7 Z; u6 A" ^6 b; ?mtd14: = "wifi_paramB"  i1 A+ c" q7 p; \" W8 P
mtd15: = "system_param"/ t" w5 I  O- g8 f% F, z
mtd16: = "file_system"
+ T* v. X( q! v" R( \5 p. Vmtd17: = "frameworkA"
- H6 m0 b5 h; W4 a5 L: M7 lmtd18: = "frameworkB"
" _+ ^0 V. m! I, z9 H+ `+ F# amtd19: = "apps"9 l- t. n" B$ J9 x& [& z
ubi0_13 = "jffs2"
% d( h& ]6 O. U1 V6 [
1 I$ q/ W7 c+ P# p) e  A
- B* l( k* f1 K( [8 b' {3 a: T, n其中最重要的是uboot    kernel     rootfs  这三个分区,后面也只用这三个文件作为示例
& v% v( Y1 W0 J+ O
4 o( y$ x9 _& e0 A# ]其它光猫可以使用命令cat /proc/mtd& I" @: m5 g6 q' {- u0 t# O
查看详细分区结构,8145V结果如下:* Z. {* A8 r+ n6 n

1 G; N& j4 b& D$ |

7 E& ?  R. \+ F: l5 odev:    size   erasesize  name
: u$ }# n) Q9 l$ n3 N( r* _mtd0: 00100000 00020000 "startcode"1 L) F$ K5 f2 w" y4 z6 h0 n
mtd1: 0ff00000 00020000 "ubifs"
5 b# n. T6 b, q; R& u+ pmtd2: 00000000 00000000 "reserved"- _. v8 P: N. ?
mtd3: 0009b000 0001f000 "ubootA"
: m2 X0 z$ A- i2 Kmtd4: 0009b000 0001f000 "ubootB"
! v$ I( U4 Z+ b. N* Cmtd5: 0003e000 0001f000 "flash_configA"2 F- |! K- t9 n) G, [) K
mtd6: 0003e000 0001f000 "flash_configB"
! s) j8 X/ h4 Z4 Wmtd7: 0003e000 0001f000 "slave_paramA"' g  i2 V& b+ G( {% K. [5 ~
mtd8: 0003e000 0001f000 "slave_paramB"
7 g: t5 |! j- ]- Lmtd9: 00307000 0001f000 "kernelA"5 S* b* u0 J( g( U- M8 `+ u% ?
mtd10: 00307000 0001f000 "kernelB"* @" M  c# m! B$ k1 L+ F" G+ O$ l7 S
mtd11: 02815000 0001f000 "rootfsA"
" U1 X# p$ ?- o% b' j3 Cmtd12: 02815000 0001f000 "rootfsB"
; _. m$ S! I7 {mtd13: 0003e000 0001f000 "wifi_paramA"7 R% F: c0 C& ^5 s5 P
mtd14: 0003e000 0001f000 "wifi_paramB"6 m2 \8 J- P, ]) Z  ]# P' k
mtd15: 0003e000 0001f000 "system_param". N" D" r5 z! h0 T  u
mtd16: 0141a000 0001f000 "file_system"4 c7 y5 O  |$ I) B) Q" b& H
mtd17: 0081d000 0001f000 "frameworkA"
) v+ M, S& i7 ]8 ]mtd18: 0081d000 0001f000 "frameworkB"
" l7 ~. \/ V4 K) e, \. L4 ?mtd19: 07003000 0001f000 "apps"3 G6 y: s5 N1 R* \  ?' N

8 T+ {7 R8 Z3 a  c: k

0 m% v. ~6 Z; d, G  @+ O0 V然后根据这个详细结果来修改备份和还原分区命令. `/ T$ F" ^. S6 A) w* g% T
8 c% u' `6 ^7 u5 J) s. G$ y
+ B9 `$ r; m' H0 L% ^' t% d, o1 Z; W

% `+ G3 R6 e" t6 h0 j8 d1 f- P6 c0 r. P
2,适当修改一些备份文件(也可以不修改,但为了更安全最好是修改一下.因为恢复或刷机bin文件不能大于光猫这个分区的物理flash空间)
) N6 O9 i: r4 t$ h4 W$ R) O将这备份好的bin分区文件在电脑上用winhex或Hex Workshop等等十六进制编辑工具打开% D- M  C/ Q) ^- }2 e: N5 o. j
直接将winhex下拉条拉到最下面如下图,可以看到很多FFFFFFFFFFFFFFFFFF之类的东东,这些东东是flash中的空白位,是不需要再刷入的垃圾数值
- q- z! c* f2 F1 n$ u9 S
! H2 r+ A3 U9 }/ a6 ]. K, q下面用rootfs作为示例8 l& J( G! V' h' `2 W0 A
* t  t& z3 p, {

- x# T; E" l3 z& x将光标在最后面的FF处点一下,然后点查找,查找数值处输入00,类型为  十六进制值   ,勾选  向上  查找  如下图
& C5 L1 U2 b; [3 K7 D  i! q! W; F2 W

. P/ d, P$ O$ V' [$ u- \点  确定  开始查找,会看到一堆杂乱的乱码如下图:
: H+ }0 W1 w3 h% H1 h% Y: v$ m
+ D7 y. e+ L" \1 L; [- r找到的00的位置的后面全部是FFFFFFFFFFFF,将这些数据选中并且删除掉(不包括00),请将下图看清楚再删除% d/ H5 Z* T! k% [3 U5 [. y9 M% S

$ F* s( ~! e& B# r删除后如下图
( u" W2 u; G  W
$ a5 c4 F/ `8 i5 r$ F$ i5 {& ?3 v4 g# P+ G6 U
然后保存,就是一个完整无多余的分区bin文件
& c" h3 x2 y. o" E然后用同样的方法修改其它分区bin文件.说简单点就是:删除掉尾部的空位FFFFFFFFFF数值: p# N' U' ^' D6 Q) {; r; W

: S! x& e% d( R, i0 v/ {  z3,还原到光猫分区中(此操作风险很大,请自行承担)! n5 I4 x' D' d+ b( A
将修改处理好的bin文件复制到U盘上,插入光猫USB口# q9 Z) Z- z' R) S
然后输入如下命令进行还原这三个分区(每输入一行回车后,多等会,等成功后再输入下一行,千万不要把三行命令一次全部输入进去), C  l$ a" P8 Q  z
dd if=/mnt/usb/USB_disc1/3-uboot.bin of=/dev/mtdblock3
8 m: z" O: K/ J4 f
( I5 h# B2 f9 Edd if=/mnt/usb/USB_disc1/9-kernel.bin of=/dev/mtdblock9
2 Q. e& s1 [# E3 a4 ~- p) e. M; U& Y7 W, g* m* u( |
dd if=/mnt/usb/USB_disc1/11-rootfs.bin of=/dev/mtdblock113 A& n1 r! V2 V2 F2 f7 X
6 X; l  U; d& V) G( H
, [! Q6 Z- L3 ^- ]$ ^& f
说明:一般新光猫未刷错机造成无法启动,系统未滚回备用系统,就是A系统3    9    11分区在运行,否则就是B系统4     10    12分区在启动
" t5 }4 J0 V9 n, `8 ~+ X2 \: n. b% }. Y
还原进光猫分区后,稍等十几秒,再重启光猫,就OK了,) G* n  H1 [9 C3 ]' Y* Q6 Q
8 u& ~+ ^3 \8 w' k$ }5 T9 g4 i+ J% x
此操作在某种承度上可以代替刷机,也可以看作是手动刷机
( E' z% C0 ~4 ]* R& p9 s0 a
$ N( L: }) V, x/ c& x# V( W二,合成线刷固件(使用组播工具或WEB页面刷机)
7 b7 I3 U, z2 q3 [% O8 K
2 ^8 ]( Q! k3 ]3 k: Y8 @* M& C1,使用HWFW_GUI工具合成完整固件
打开HWFW_GUI然后将本教程提供的固件模板打开,适合8145v  r017   r018版本的固件,其它版本和光猫使用其它固件模板,模板可以找适合自己光猫的补shell的固件,或其它版本固件,都可以.& t7 b: A3 K- }5 {
这里使用一个论坛上别人所发的补全shell的固件作为示例
' a! J& O9 ]6 V% f0 S3 r: X' N6 ma,然后点添加项目,然后选择前文所修改好的3-uboot.bin! C4 t6 ~& N% z: |8 |+ B4 M# d* G/ a
项目路径写flash:uboot   项目类型选择UBOOT  如下图   其它默认 点保存
, t: J8 p4 y% m/ q! T& @9 d! S" p# _$ U* J( B' }" c
1 I, I' m* Y. q7 A) ?
b,点添加项目,选择修改好的9-kernel.bin- T1 t; m( ]2 |: J4 c( m
项目路径写flash:kernel    项目类型选择KERNEL    项目版本写你备份的这个固件的版本,查看方式可以用winhex打开9-kernel.bin 最前面的一段就是,比如:whwhV300R018C10SPC100B054  不要前面的whwh& k' w% I! r. ^, A. }/ e
如下图2 N" M+ Q4 \- ?7 P1 f

" N0 T. F' S5 w/ z8 Q! o
+ N8 x+ l% }1 s+ Z8 H+ F- Z5 Ic,点添加项目,选择修改好的11-rootfs.bin( {" m; i, Z- K/ T/ F$ g
项目路径写flash:rootfs    项目类型选择ROOTFS   项目版本写V300R018C10SPC100B054     (同样也是用winhex打开11-rootfs.bin看前面的字段去掉whwh的那段就是)  如下图
7 p( p6 M+ q/ S" B4 r& X# A' Y- B' i# ~9 M1 y, M8 X- j9 P  r8 T

8 Q) P7 R$ M# Q! h- S9 m0 U
1 {$ Q) N! b6 k$ c最后保存好,至次真正的固件制作成功,可以使用组播等等工具刷机) {$ K1 H$ `0 s. f9 c3 a
来个补好后的固件图7 B+ M" j% e* g
, ?$ q9 v& r$ |( Z6 z

0 G7 s4 @  C, g/ e* B* `
" Q) Z: F! j" ~: S& I4 H
) F. F" a, I4 G4 C; `) v
) j+ h, ?1 u9 t3 o' I7 w0 @7 N5 m6 v3 M  d
未完待续
  A) ~- b3 ^1 i! n* i- }+ }
3 [% |  O; a* N* G1 v3 L+ \! `0 W* D) ]# P! p  t1 v
( u' _' [+ u" J  C+ k

& r1 x1 M/ [5 X5 S: b' A1 N3 T
7 H$ M6 J" c! f' {# Y% _
7 D# @/ N4 P2 o2 L. ?4 I* n
2 f- D+ Q6 |3 X# E3 C
; }5 k" H, x5 ~0 [: p  R$ {2 h
' X  a, o2 }( [' p* m' A
2 j# p0 K0 {- ~1 H$ k; M; z# |/ L" B8 i8 L+ A% d0 ^# k) q  y
( X0 H' h1 _' @- E+ a- r. r" }; T

本帖子中包含更多资源

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

x

点评

你好大神,麻烦问一下华为光猫直接用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-9-22 19:01:00 | 显示全部楼层
支持楼主,学习一下
发表于 2018-9-22 19:57:13 | 显示全部楼层
2 h, x& N/ ]5 F* ?3 I9 R
支持楼主,学习一下,备份命令可以看懂一点,后面完全看不懂~~~~~~~~~~~~~~
发表于 2018-9-22 20:34:34 | 显示全部楼层
这个可以有,可以试试以前备份出来的了
发表于 2018-9-23 00:57:39 | 显示全部楼层
支持楼主,学习一下
发表于 2018-9-23 08:34:46 | 显示全部楼层
本帖最后由 wyl25866 于 2018-9-23 08:36 编辑 2 V  M/ f# B: B0 F& F+ w
0 G' g) [! t+ A6 Y: I" `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|宽带技术网 |网站地图

粤公网安备 44152102000001号

GMT+8, 2021-12-2 12:16 , Processed in 0.034157 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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