小米路由flash备份
来自Jack's Lab
(版本间的差异)
(→SSH 备份) |
(→编程器备份) |
||
第97行: | 第97行: | ||
2b4503988d1d627297c91349c9b6c173 xiaomi.r1d.flash.bin | 2b4503988d1d627297c91349c9b6c173 xiaomi.r1d.flash.bin | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | 可以看到,其内容与用 ssh 备份的是一样 | ||
<br><br> | <br><br> |
2014年6月10日 (二) 12:22的最后版本
[编辑] 1 概述
R1D 使用一片 16MB 大小的 SPI Flash 存放 CFE (bootloader),内核,squashfs 文件系统,board data,nvram 数据等等
Flash 的分区如下:
# cat /proc/mtd dev: size erasesize name mtd0: 00040000 00010000 "boot" mtd1: 00300000 00010000 "os" mtd2: 00300000 00010000 "os1" mtd3: 00890000 00010000 "squashfs" mtd4: 00010000 00010000 "crash" mtd5: 00100000 00010000 "overlay" mtd6: 00010000 00010000 "board_data" mtd7: 00010000 00010000 "nvram" mtd8: 00fe0000 00010000 "firmware"
内核里实际映射地址范围为:
0x000000000000-0x000000040000 : "boot" 0x000000040000-0x000000340000 : "os" 0x000000340000-0x000000640000 : "os1" 0x000000640000-0x000000ed0000 : "squashfs" 0x000000ed0000-0x000000ee0000 : "crash" 0x000000ee0000-0x000000fe0000 : "overlay" 0x000000fe0000-0x000000ff0000 : "board_data" 0x000000ff0000-0x000001000000 : "nvram" 0x000000000000-0x000000fe0000 : "firmware"
最后一个分区 mtd8 实际是前 6 个分区的全镜像,他的存在只为在系统升级时提供方便。官方发布的固件,带有 CFE 的版本(如 0.4.85, 0.4.92)内部只有两个文件 brcm4709_nor.bin 和 root.ext4.lzma,brcm4709_nor.bin 这个文件实际是直接写入 /dev/mtd8 这个分区的,这个可以查看路由系统下 /bin/flash.sh 这个脚本:
104 upnor() { 105 if [ -f brcm${surfix_ver}_nor.bin ]; then 106 klogger -n "Burning Full NOR Flash Image..." 107 mtd write brcm${surfix_ver}_nor.bin firmware >& /dev/null <------ 108 if [ $? -eq 0 ]; then 109 klogger "Done" 110 else 111 klogger "Error" 112 exit 1 113 fi 114 fi 115 } ${surfix_ver} 变量的值在R1D上为4709
[编辑] 2 SSH 备份
ssh 登录上路由系统,执行如下脚本:
#!/bin/sh cat /proc/mtd > mtd cat /dev/mtd0 > mtd0.boot cat /dev/mtd1 > mtd1.os cat /dev/mtd2 > mtd2.os1 cat /dev/mtd3 > mtd3.squashfs cat /dev/mtd4 > mtd4.crash cat /dev/mtd5 > mtd5.overlay cat /dev/mtd6 > mtd6.board_data cat /dev/mtd7 > mtd7.nvram cat /dev/mtd8 > mtd8.firmware
mtd0 - mtd7 的大小之和为 0x1000000,即 16MB,因此,整个flash的镜像为:
$ cat mtd0.boot mtd1.os mtd2.os1 mtd3.squashfs mtd4.crash mtd5.overlay mtd6.board_data mtd7.nvram > mtd.all $ md5sum mtd.all 2b4503988d1d627297c91349c9b6c173 mtd.all
[编辑] 3 编程器备份
量产版路由的SPI Flash 在风扇下面,需要拆开风扇,电路版上白色字标 U153 的长方形器件即是,八个脚,标:"MXIC MX 25L12835F"
风枪温度设为 395,风量中等,选一个和器件大小差不多的风口,对着吹,距离15mm左右,10秒左右就能取下 flash
冷却后,用 SPI Flash 编程读出整个 flash 的内容,存为:xiaomi.r1d.flash.bin
$ md5sum xiaomi.r1d.flash.bin 2b4503988d1d627297c91349c9b6c173 xiaomi.r1d.flash.bin
可以看到,其内容与用 ssh 备份的是一样