备份原始固件
有了 root 权限,我们现在可以创建原始固件的备份。万一出现问题你可以用来恢复固件,或者如果你想要刷回到原始固件。
1. 断开所有网线,以防你使用其它路由器来设置 root 权限。
2. 将您的PC连接到Z1上的LAN1端口。
3. 重新获取路由器IP地址(提示:它是网关地址)。
4. 使用串行终端设置一个 root 密码。
m001122334455:/# passwd
5. 输入 cat /proc/mtd.列出所有分区。你的分区方案可能不同,但是至少mtd0并包括mtd4应该是相同的。
m001122334455:/# cat /proc/mtd
mtd0: 00020000 00020000 "loader1" //bootloader
mtd1: 007e0000 00020000 "bootkernel1"
mtd2: 00020000 00020000 "loader2" //bootloader备份
mtd3: 007e0000 00020000 "bootkernel2"
mtd4: 06fe0000 00020000 "ubi"
mtd5: 00020000 00020000 "origcaldata" //art数据存放在这
mtd6: 0001f800 0001f800"board-config" //包含主板信息,序列号存放在这
mtd7: 0087d800 0001f800 "rootfs-wired-9-144173-1-2"
mtd8: 0086a000 0001f800"rootfs-wired-9-144173-1-1"
mtd9: 0501a800 0001f800"storage"
mtd10: 0003f000 0001f800"caldata" //好像有MAC地址信息
6. 使用cat 命令创建一个关于loader1 的备份并将它存放在 /storage/ 文件夹。
m001122334455:/# cat /dev/mtd0 > /storage/mtd0
7. 使用SCP客户端获取备份。使用SCP协议建立连接,用用户名 root 和步骤4中设置的密码。
8. 一旦你在本地PC上收到并存储了备份,请从路由器中删除备份。通过使用SCP客户端或在串行终端使用rm命令来删除它。
m001122334455:/# rm /storage/mtd0
9. 重复步骤 6-8 对bootkernel1, loader2, bootkernel2, board-config 和 caldata 分区进行备份。一次备份一个分区,否则你可能会遇到内存溢出。
10. 另外,对storage 分区进行备份。这是一个大的分区,所以只需使用SCP软件将 /storage/ 文件夹中的所有文件传输到本地PC即可。
11. 验证你的备份,再一次重复步骤 6-9 .并比较(例如. Linux中的 checksum或 cmp命令)两次收到的文件。
刷入 initramfs 镜像
刷入路由器的步骤由两个部分组成:刷入 initramfs 镜像和刷入 sysupgrade 镜像。
1. 将你的PC连接到Z1上的LAN1端口。应该已经连接好了,你已经做过备份了对吧?
2. 在本地计算机上架设一个HTTP服务器,用来提供initramfs镜像下载服务。
3. 重新获取你计算机的本地IP地址(提示:它是Z1的DHCP服务分配的IP地址)。
4. 在串行终端中使用wget命令将initramfs镜像下载到你路由器上的 /storage/ 文件夹中。
m00180A167ED0:/# wget http://<your_local_ip>/<initramfs_file> -O /storage/initramfs.bin
4. 您可能需要验证下载的 initramfs 镜像。下载第二次并且比较它们是否有任何差异 (应该不会不同,而且 cmp 命令不应该返回任何输出)。(原英文帖序号就是4)
m001122334455:/# wget http://<your_local_ip>/<initramfs_file> -O /storage/initramfs2.bin
m001122334455:/# cmp/storage/initramfs.bin /storage/initramfs2.bin
m001122334455:/# rm/storage/initramfs2.bin
5. 使用dd命令将下载的initramfs镜像写入到 bootkernel1 分区。
m001122334455:/storage# dd if=/storage/initramfs.binof=/dev/mtdblock1
6. 使用 rm 命令删除下载的 initramfs 镜像。
m001122334455:/# rm /storage/initramfs.bin
7. 使用 reboot 命令重启路由。
m001122334455:/# reboot now
8. 如果一切都做对了,LEDE 现在应该启动了。.重新获取你计算机的新本地IP地址。如果LEDE 没有启动请勿继续下一步!
9. 在串行终端中使用wget命令将initramfs镜像下载到你路由器上的 /tmp/ 文件夹中。
root@LEDE:/# wget http://<your_local_ip>/<initramfs_file> -O /tmp/initramfs.bin
10. 你可能想要校验下载的 initramfs 镜像。下载第二次并且比较它们是否有任何差异 (应该不会不同,而且 cmp 命令不应该返回任何输出)。
root@LEDE:/#wget http://<your_local_ip>/<initramfs_file> -O /tmp/initramfs2.bin
root@LEDE:/#cmp /tmp/initramfs.bin /tmp/initramfs2.bin
root@LEDE:/#rm /tmp/initramfs2.bin
11. 使用dd命令将下载的initramfs镜像写入到 bootkernel3 (recovery) 分区。
root@LEDE:/# dd if=/tmp/initramfs.bin of=/dev/mtdblock3
12. 使用 rm 命令删除下载的 initramfs 镜像。
root@LEDE:/# rm /tmp/initramfs.bin
13. 使用 reboot 命令重启路由。
root@LEDE:/# reboot now
删除存储分区(此步可跳过)
存储器中还留有一些LEDE未使用的存储分区。我们可以在刷入 sysupgrade 镜像前删除这些分区,以便释放一些空间(大约100MB)。
1. 用 ubinfo 命令列出所有 UBI卷。
root@LEDE:/# ubinfo -a
2. 使用 ubirmvol 命令删除除 board-config 卷之外的所列出的UBI卷。对每个 UBI卷重复此条命令。永远不要删除 board-config 卷!
root@LEDE:/# ubirmvol /dev/ubi0 -N <volume_name>
3. 使用 ubimkvol 命令为校验数据创建一个新的卷。
root@LEDE:/# ubimkvol /dev/ubi0 -N caldata -s 252KiB
4. 用 ubinfo 命令验证你的 UBI卷。它应该显示两个卷: board-config 卷和最近创建的 caldata 卷。
root@LEDE:/# ubinfo -a
刷新 sysupgrade 镜像
路由器现在准备刷入 sysupgrade 镜像。输入 sysupgrade 镜像将重新填充校验数据,创建 rootfs 分区并扩展 rootfs_data 分区来利用UBI 空闲空间的其余部分。
1. 将你的PC连接到Z1上的LAN1端口。应该已经连接好了,你已经做过备份了对吧?
2. 在本地计算机上架设一个HTTP服务器,用来提供 sysupgrade 镜像下载服务。
3. 在串行终端使用 wget 命令下载 sysupgrade镜像到你路由器的 /tmp/ 文件夹。
root@LEDE:/# wget http://<your_local_ip>/<sysupgrade_file> -O /tmp/sysupgrade.tar
4. 你可能想要校验下载的 sysupgrade 镜像。下载第二次并且比较它们是否有任何差异 (应该不会不同,而且 cmp 命令不应该返回任何输出)。
root@LEDE:/# wget http://<your_local_ip>/<sysupgrade_file> -O/tmp/sysupgrade2.tar
root@LEDE:/# cmp /tmp/sysupgrade.tar/tmp/sysupgrade2.tar
root@LEDE:/# rm /tmp/sysupgrade2.tar
5. 使用 sysupgrade 命令执行系统升级。
root@LEDE:/# sysupgrade -v /tmp/sysupgrade.tar
6. 恭喜,你的 Meraki Z1已经运行上了LEDE!现在你可以拔掉USB TTL 转换器并合上盒子。
更新 LEDE
现在,你可以通过执行系统升级来更新LEDE到任何新版本。不再需要借助 initramfs 镜像了! 你可以在 LEDE website上下载Meraki Z1的最新升级镜像.
使用SSH访问路由器并使用 wget 命令和sysupgrade 命令执行升级。 root@LEDE: /# wget http://<your_local_ip>/<sysupgrade_file> -O /tmp/sysupgrade.tar
root@LEDE:/# sysupgrade -v /tmp/sysupgrade.tar
不要忘记修改 /etc/sysupgrade.conf 来告诉 LEDE 在升级中该保存哪些设置。
参考文献
文中提到的文件下载链接: https://pan.baidu.com/s/1xtsHuvVFy0b2ejEGUfwIrQ 密码: ydyh