setup: enablb sd-card auto expand on update

This commit is contained in:
John Doe
2021-03-13 02:27:46 +08:00
parent 606f995d46
commit 8b3164a2e8

View File

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