WRT1200AC/1900AC系列路由Openwrt/LEDE切换固件的方法
路由存放固件的FLASH芯片有两个分区,分别存放两个固件,可通过SSH命令从当前OP/LEDE固件重启切换至另一个备用固件。而不需要通过“三次开关机”大法。
SSH登录路由,输入以下命令查看所处分区:
fw_printenv boot_part
例如:
root@lede:~# fw_printenv boot_part
boot_part=1
#返回结果显示当前使用的固件在第1分区。
#如果要重启并切换至第2分区的另一个固件,则分别输入以下2条命令:
fw_setenv boot_part 2
reboot
#路由器重启。清空浏览器缓存,再次连接即可。
如果当前使用的是官方的固件,想切换固件这一方法不适用,因为官方固件没有开启SSH。用3楼的方法进行切换。
原厂固件就用它了。
这么操作:
1、下载官方固件,改名成 factory.img, 然后用winscp软件上传到路由器的 /tmp 目录下;
2、使用putty软件登录路由器,输入
cd /tmp
sysupgrade -F -n -v factory.img
系统自动升级固件并重启,重启后就是官方固件了。LEDE现在还是在开发中,上次试过一次在luci界面刷非LEDE固件失败,还是尽量用上面的方法刷固件。
如果是要刷DD-WRT固件,则需要改一下固件文件的后缀名,例如,把路由器对应的DD-WRT固件factory-to-ddwrt.bin上传到路由的 /tmp 文件夹下,改一下文件名后缀:
mv /tmp/factory-to-ddwrt.bin /tmp/factory-to-ddwrt.trx
sysupgarde -n -F -v /tmp/factory-to-ddwrt.trx
刷完固件之后, 路由器就是一个分区是原来的LEDE,另一个分区是DD-WRT。
命令行切换重启分区就用置顶贴的方式,或者用以下脚本自动判别并切换。
--------------------以下为脚本内容-------------------------------------
#!/bin/sh
# Hacked from /lib/upgrade/linksys.sh (then taken from anomeome and hacked even further)
cur_boot_part=`/usr/sbin/fw_printenv -n boot_part`
target_firmware=""
if [ "$cur_boot_part" = "1" ]
then
target_firmware="Switching to Kernel/Partition 2"
fw_setenv boot_part 2
fw_setenv bootcmd "run altnandboot"
elif [ "$cur_boot_part" = "2" ]
then
target_firmware="Switching to Kernel/Partition 1"
fw_setenv boot_part 1
fw_setenv bootcmd "run nandboot"
fi
# Re-enable recovery so we get back in case the new firmware ist kaput
fw_setenv auto_recovery yes
echo "$target_firmware"
# Add option to reboot now or later
read -p "Are you ready to reboot now? y or n = " CONT
if [ "$CONT" = "y" ]; then
echo "Rebooting now"
reboot
elif [ "$CONT" = "yes" ]; then
echo "Rebooting now"
reboot
else
echo "Exiting for manual reboot"
fi
------------------------------
如果使用的DD-WRT, 切换固件方法类似,如下:
查看所处分区
ubootenv get boot_part
假设返回结果显示所处第1分区,切换到第2分区并重启:
ubootenv set boot_part 2
reboot
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/216.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~