diff --git a/scripts/autoupdate.sh b/scripts/autoupdate.sh index b66434e..9995398 100644 --- a/scripts/autoupdate.sh +++ b/scripts/autoupdate.sh @@ -2,21 +2,18 @@ set -e $1 opkg update || true -if ! command -v pv &> /dev/null -then - opkg install pv - if ! command -v pv &> /dev/null; then echo -e '\e[91mpv命令不可用,升级中止!\e[0m' && exit 1; fi -fi -if ! command -v fdisk &> /dev/null -then - opkg install --force-overwrite fdisk - if ! command -v fdisk &> /dev/null; then echo -e '\e[91mfdisk命令不可用,升级中止!\e[0m' && exit 1; fi -fi -if ! command -v losetup &> /dev/null -then - opkg install --force-overwrite losetup - if ! command -v losetup &> /dev/null; then echo -e '\e[91mlosetup命令不可用,升级中止!\e[0m' && exit 1; fi -fi +function proceed_command () { + if ! command -v $1 &> /dev/null; then opkg install --force-overwrite $1; fi + if ! command -v $1 &> /dev/null; then echo -e '\e[91m'$1'命令不可用,升级中止!\e[0m' && exit 1; fi +} +proceed_command pv +proceed_command fdisk +proceed_command sfdisk +proceed_command losetup +proceed_command resize2fs +wget -P /tmp https://ghproxy.com/https://github.com/klever1988/nanopi-openwrt/raw/zstd-bin/truncate +wget -P /tmp https://ghproxy.com/https://github.com/klever1988/nanopi-openwrt/raw/zstd-bin/ddnz +chmod +x /tmp/truncate /tmp/ddnz board_id=$(cat /etc/board.json | jsonfilter -e '@["model"].name' | tail -c 4 | tr -d "\n" | awk '{print tolower($0)}') mount -t tmpfs -o remount,size=650m tmpfs /tmp @@ -37,22 +34,21 @@ else fi fi -#if [ -f /mnt/mmcblk0p2/artifact/FriendlyWrt*.img.gz ]; then - #cd /mnt/mmcblk0p2/artifact/ - if [ `md5sum -c md5sum.txt|grep -c "OK"` -eq 0 ]; then - echo -e '\e[91m固件HASH值匹配失败,脚本退出\e[0m' - exit 1 - fi - #cd /mnt/mmcblk0p2 - echo -e '\e[92m准备解压镜像文件\e[0m' - pv $board_id.img.gz | gunzip -dc > FriendlyWrt.img && rm $board_id.img.gz +if [ `md5sum -c md5sum.txt|grep -c "OK"` -eq 0 ]; then + echo -e '\e[91m固件HASH值匹配失败,脚本退出\e[0m' + exit 1 +fi +echo -e '\e[92m准备解压镜像文件\e[0m' +pv $board_id.img.gz | gunzip -dc > FriendlyWrt.img && rm $board_id.img.gz + +bs=`expr $(cat /sys/block/mmcblk0/size) \* 512` +../truncate -s $bs FriendlyWrt.img +echo ", +" | sfdisk -N 2 FriendlyWrt.img -#fi lodev=$(losetup -f) -offset=`expr $(fdisk -l -u FriendlyWrt.img | tail -n1 | awk '{print $2}') \* 512` -losetup -o $offset $lodev FriendlyWrt.img +losetup -P $lodev FriendlyWrt.img mkdir -p /mnt/img -mount -t ext4 $lodev /mnt/img +mount -t ext4 ${lodev}p2 /mnt/img echo -e '\e[92m解压已完成,准备编辑镜像文件,写入备份信息\e[0m' cd /mnt/img sysupgrade -b back.tar.gz @@ -63,14 +59,21 @@ echo -e '\e[92m备份文件已经写入,移除挂载\e[0m' #rm back.tar.gz cd /tmp/upg umount /mnt/img + +sleep 2 +umount ${lodev}p1 +umount ${lodev}p2 +e2fsck -pf ${lodev}p2 || true +resize2fs ${lodev}p2 + losetup -d $lodev echo -e '\e[92m正在打包...\e[0m' -#zstdmt /mnt/mmcblk0p2/FriendlyWrt.img -o /tmp/FriendlyWrtupdate.img.zst echo -e '\e[92m开始写入,请勿中断...\e[0m' if [ -f FriendlyWrt.img ]; then echo 1 > /proc/sys/kernel/sysrq - echo u > /proc/sysrq-trigger || umount / - pv FriendlyWrt.img | dd of=/dev/mmcblk0 conv=fsync + echo u > /proc/sysrq-trigger && umount / || true + #pv FriendlyWrt.img | dd of=/dev/mmcblk0 conv=fsync + ../ddnz FriendlyWrt.img /dev/mmcblk0 echo -e '\e[92m刷机完毕,正在重启...\e[0m' echo b > /proc/sysrq-trigger fi