nanopi-openwrt/scripts/autoupdate.sh

91 lines
3.7 KiB
Bash
Raw Normal View History

2020-03-24 17:42:26 +08:00
#!/bin/sh
2021-02-27 06:20:25 +08:00
set -e $1
2020-03-24 17:42:26 +08:00
2021-03-06 04:31:38 +08:00
opkg update || true
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
opkg install coreutils-truncate || true
2022-12-03 22:41:40 +08:00
wget -NP /tmp https://ghproxy.com/https://raw.githubusercontent.com/stupidloud/nanopi-openwrt/zstd-bin/truncate
wget -NP /tmp https://ghproxy.com/https://raw.githubusercontent.com/stupidloud/nanopi-openwrt/zstd-bin/ddnz
chmod +x /tmp/truncate /tmp/ddnz
2021-02-27 06:20:25 +08:00
2022-04-06 03:04:19 +08:00
board_id=$(cat /etc/board.json | jsonfilter -e '@["model"].id' | sed 's/friendly.*,nanopi-//;s/xunlong,orangepi-//;s/^r1s-h5$/r1s/;s/^r1$/r1s-h3/;s/^r1-plus$/r1p/;s/^r1-plus-lts$/r1p-lts/;s/default-string-default-string/x86/;s/vmware-inc-vmware7-1/x86/')
arch=`uname -m`
[ $arch == 'x86_64' ] && board_id='x86';
2021-04-07 01:28:30 +08:00
mount -t tmpfs -o remount,size=850m tmpfs /tmp
2021-02-27 06:20:25 +08:00
rm -rf /tmp/upg && mkdir /tmp/upg && cd /tmp/upg
2021-03-24 00:38:45 +08:00
set +e
2022-12-03 22:41:40 +08:00
wget https://ghproxy.com/https://github.com/stupidloud/nanopi-openwrt/releases/download/$(date +%Y-%m-%d)/$board_id$ver.img.gz -O- | gzip -dc > $board_id.img
2021-03-22 19:11:16 +08:00
if [ $? -eq 0 ]; then
2022-12-03 22:41:40 +08:00
wget https://ghproxy.com/https://github.com/stupidloud/nanopi-openwrt/releases/download/$(date +%Y-%m-%d)/$board_id$ver.img.md5 -O md5sum.txt
2020-03-24 17:42:26 +08:00
echo -e '\e[92m今天固件已下载准备解压\e[0m'
else
echo -e '\e[91m今天的固件还没更新尝试下载昨天的固件\e[0m'
2022-12-03 22:41:40 +08:00
wget https://ghproxy.com/https://github.com/stupidloud/nanopi-openwrt/releases/download/$(date -d "@$(( $(busybox date +%s) - 86400))" +%Y-%m-%d)/$board_id$ver.img.gz -O- | gzip -dc > $board_id.img
2021-03-22 19:11:16 +08:00
if [ $? -eq 0 ]; then
2022-12-03 22:41:40 +08:00
wget https://ghproxy.com/https://github.com/stupidloud/nanopi-openwrt/releases/download/$(date -d "@$(( $(busybox date +%s) - 86400))" +%Y-%m-%d)/$board_id$ver.img.md5 -O md5sum.txt
2020-03-24 17:42:26 +08:00
echo -e '\e[92m昨天的固件已下载准备解压\e[0m'
else
echo -e '\e[91m没找到最新的固件脚本退出\e[0m'
exit 1
fi
fi
2021-03-24 00:38:45 +08:00
set -e
2021-02-27 06:20:25 +08:00
sed -i 's/-slim//;s/-with-docker//' md5sum.txt
if [ `md5sum -c md5sum.txt|grep -c "OK"` -eq 0 ]; then
echo -e '\e[91m固件HASH值匹配失败脚本退出\e[0m'
exit 1
fi
2021-04-07 06:31:56 +08:00
mv $board_id.img FriendlyWrt.img
2021-09-24 22:46:57 +08:00
block_device='mmcblk0'
2021-10-25 20:01:11 +08:00
[ ! -d /sys/block/$block_device ] && block_device='mmcblk1'
2022-11-12 19:36:15 +08:00
[ $board_id = 'x86' ] && block_device=${disk:-sda}
2021-09-24 22:46:57 +08:00
bs=`expr $(cat /sys/block/$block_device/size) \* 512`
truncate -s $bs FriendlyWrt.img || ../truncate -s $bs FriendlyWrt.img
echo ", +" | sfdisk -N 2 FriendlyWrt.img
2021-02-27 06:20:25 +08:00
2021-03-06 04:31:38 +08:00
lodev=$(losetup -f)
losetup -P $lodev FriendlyWrt.img
2021-02-27 06:20:25 +08:00
mkdir -p /mnt/img
mount -t ext4 ${lodev}p2 /mnt/img
2020-03-24 17:42:26 +08:00
echo -e '\e[92m解压已完成准备编辑镜像文件写入备份信息\e[0m'
sleep 10
2020-03-24 17:42:26 +08:00
cd /mnt/img
2021-02-27 06:20:25 +08:00
sysupgrade -b back.tar.gz
2020-03-24 17:42:26 +08:00
tar zxf back.tar.gz
if ! grep -q macaddr /etc/config/network; then
echo -e '\e[91m注意由于已知的问题“网络接口”配置无法继承重启后需要重新设置WAN拨号和LAN网段信息\e[0m'
rm etc/config/network;
fi
2020-03-24 17:42:26 +08:00
echo -e '\e[92m备份文件已经写入移除挂载\e[0m'
2021-02-27 06:20:25 +08:00
#rm back.tar.gz
cd /tmp/upg
2020-03-24 17:42:26 +08:00
umount /mnt/img
sleep 5
2021-08-29 09:59:44 +08:00
if cat /proc/mounts | grep -q ${lodev}p1; then umount ${lodev}p1; fi
if cat /proc/mounts | grep -q ${lodev}p2; then umount ${lodev}p2; fi
e2fsck -yf ${lodev}p2 || true
resize2fs ${lodev}p2
2021-03-05 22:45:34 +08:00
losetup -d $lodev
2021-02-27 06:20:25 +08:00
echo -e '\e[92m正在打包...\e[0m'
echo -e '\e[92m开始写入请勿中断...\e[0m'
if [ -f FriendlyWrt.img ]; then
2020-03-28 07:39:42 +08:00
echo 1 > /proc/sys/kernel/sysrq
echo u > /proc/sysrq-trigger && umount / || true
2021-09-24 22:46:57 +08:00
#pv FriendlyWrt.img | dd of=/dev/$block_device conv=fsync
../ddnz FriendlyWrt.img /dev/$block_device
2021-02-27 06:20:25 +08:00
echo -e '\e[92m刷机完毕正在重启...\e[0m'
2020-03-24 17:42:26 +08:00
echo b > /proc/sysrq-trigger
fi