From cf7d03787dc4f0465f59ebf91cd11c368abfe555 Mon Sep 17 00:00:00 2001 From: songchenwen Date: Sat, 11 Apr 2020 18:29:27 +0800 Subject: [PATCH] Add fw_update Script --- .github/workflows/friendlywrt.yml | 3 +- .../workflows/friendlywrt_with_features.yml | 3 +- .github/workflows/lean.yml | 5 + .github/workflows/lienol_on_lean.yml | 5 + README.md | 2 + scripts/fw_update.sh | 98 +++++++++++++++++++ 6 files changed, 114 insertions(+), 2 deletions(-) create mode 100755 scripts/fw_update.sh diff --git a/.github/workflows/friendlywrt.yml b/.github/workflows/friendlywrt.yml index 4a6defc..3347ba9 100644 --- a/.github/workflows/friendlywrt.yml +++ b/.github/workflows/friendlywrt.yml @@ -91,7 +91,8 @@ jobs: sed -i 's/pcdata(boardinfo.system or "?")/"ARMv8"/' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm sed -i "/redirect_https/d" friendlywrt/package/network/services/uhttpd/files/uhttpd.config sed -i '/luciversion/a \/ ${{ steps.changelog.outputs.buildtag }} by scw' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm - + cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update + - name: Add Temperature to Netdata run: | cd friendlywrt-rk3328 diff --git a/.github/workflows/friendlywrt_with_features.yml b/.github/workflows/friendlywrt_with_features.yml index d7e8138..175397d 100644 --- a/.github/workflows/friendlywrt_with_features.yml +++ b/.github/workflows/friendlywrt_with_features.yml @@ -91,7 +91,8 @@ jobs: sed -i 's/pcdata(boardinfo.system or "?")/"ARMv8"/' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm sed -i "/redirect_https/d" friendlywrt/package/network/services/uhttpd/files/uhttpd.config sed -i '/luciversion/a \/ ${{ steps.changelog.outputs.buildtag }} by scw' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm - + cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update + - name: Add Temperature to Netdata run: | cd friendlywrt-rk3328 diff --git a/.github/workflows/lean.yml b/.github/workflows/lean.yml index 253e308..9f68689 100644 --- a/.github/workflows/lean.yml +++ b/.github/workflows/lean.yml @@ -61,6 +61,11 @@ jobs: cd friendlywrt-rk3328 cp -r openwrt/target/linux/octeontx/patches-5.4 friendlywrt/target/linux/rockchip-rk3328/ ls friendlywrt/target/linux/rockchip-rk3328/patches-5.4 + + - name: Install Mods + run: | + cd friendlywrt-rk3328 + cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update - name: Change Log id: changelog diff --git a/.github/workflows/lienol_on_lean.yml b/.github/workflows/lienol_on_lean.yml index b63b52b..e3fbde4 100644 --- a/.github/workflows/lienol_on_lean.yml +++ b/.github/workflows/lienol_on_lean.yml @@ -64,6 +64,11 @@ jobs: cp -r openwrt/target/linux/octeontx/patches-5.4 friendlywrt/target/linux/rockchip-rk3328/ ls friendlywrt/target/linux/rockchip-rk3328/patches-5.4 + - name: Install Mods + run: | + cd friendlywrt-rk3328 + cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update + - name: Change Log id: changelog run: | diff --git a/README.md b/README.md index 9a6ab61..d7bab15 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ 默认 LAN 口 IP `192.168.2.1` 默认密码 `password` +无需拔 SD 卡的升级方法, 4月11日以后的固件,ssh 进路由器, 并执行 `fw_update` 后面跟上新 ROM 的 zip 文件下载 URL, 比如 `fw_update "https://github.com/songchenwen/nanopi-r2s/releases/download/FriendlyWRT-2020-04-11-bf4fc77/FriendlyWRT-2020-04-11-bf4fc77-ROM.zip"`。这种刷机方式会保留配置文件, 如果新旧 ROM 的配置文件不兼容会引发各种问题,请自行判断配置文件的兼容性。 + Fork 自 [klever1988](https://github.com/klever1988/nanopi-openwrt) 和 [soffchen](https://github.com/soffchen/NanoPi-R2S) 主要整合了 [Passwall](https://github.com/songchenwen/openwrt-package) 和 AdguardHome diff --git a/scripts/fw_update.sh b/scripts/fw_update.sh new file mode 100755 index 0000000..a8ba1f6 --- /dev/null +++ b/scripts/fw_update.sh @@ -0,0 +1,98 @@ +#!/bin/bash + +cd /root + +url=$1 +zipfile=update_rom.zip +imgfile=rom.img +lomntpoint=/mnt/img +backupfile=/tmp/backup.tar.gz + +if [ "$url" == "" ];then + echo "需要传入 ROM zip 文件下载链接" + exit 1 +fi + +rm -f "$zipfile" +rm -f "$imgfile" +rm -f "$backupfile" +rm -f "/tmp/$imgfile.zst" +rm -f *sd.img.gz + +echo "开始下载固件文件 $url" +wget -O "$zipfile" "$url" + +if [ -f "$zipfile" ]; then + echo "固件下载成功" +else + echo "固件下载失败" + exit 1 +fi + +gzfile=$(unzip -Z -1 "$zipfile" | grep "sd.img.gz$") + +if [ "$gzfile" == "" ]; then + echo "没发现 sd.img.gz 结尾的固件包" + exit 1 +fi +unzip "$zipfile" "$gzfile" +rm $zipfile + +if [ -f "$gzfile" ]; then + echo "zip 固件已解压至 $gzfile" +else + echo "zip 固件解压失败" + exit 1 +fi + +pv "$gzfile" | gunzip -dc > "$imgfile" +if [ -f "$imgfile" ]; then + echo "gz 固件已解压至 $imgfile" +else + echo "gz 固件解压失败" + exit 1 +fi + +lodev=$(losetup -f) +echo "使用设备 $lodev 改写 ROM 文件" + +mkdir -p "$lomntpoint" +losetup -o 100663296 $lodev "$imgfile" +mount $lodev "$lomntpoint" +cd "$lomntpoint" +echo "开始备份设置" +sysupgrade -b "$backupfile" +echo "开始写入备份到镜像文件" +tar zxf "$backupfile" +echo "备份文件已写入, 移除挂载" + +cd /tmp +rm "$backupfile" +umount "$lomntpoint" +losetup -d $lodev + +echo "开始压缩镜像" +zstfile="/tmp/$imgfile.zst" +zstdmt "/root/$imgfile" -o "$zstfile" + +if [ -f "$zstfile" ]; then + echo 1 > /proc/sys/kernel/sysrq + echo "卸载 SD 卡" + echo u > /proc/sysrq-trigger || umount / + + rotestfile="/rotest.txt" + touch "$rotestfile" + if [ $? -eq 0 ]; then + rm "$rotestfile" + echo "卸载 SD 卡失败" + exit 1 + fi + + echo "开始刷机, 请不要断电或关机, 如果刷机失败请取出 SD 卡用电脑重新写入 ROM" + pv "$zstfile" | zstdcat | dd of=/dev/mmcblk0 conv=fsync + echo "刷机完毕, 正在重启..." + echo o > /proc/sysrq-trigger +else + echo "压缩出错" + exit 1 +fi -- GitLab