From 6638b21eaaff2a0263c43179ef6af353e421f7c8 Mon Sep 17 00:00:00 2001 From: yanistyle Date: Wed, 29 Oct 2025 17:10:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20scripts/autoupdate-bash.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/autoupdate-bash.sh | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/scripts/autoupdate-bash.sh b/scripts/autoupdate-bash.sh index 705d4be..db5cd59 100644 --- a/scripts/autoupdate-bash.sh +++ b/scripts/autoupdate-bash.sh @@ -75,13 +75,33 @@ if cat /proc/mounts | grep -q ${lodev}p2; then umount ${lodev}p2; fi e2fsck -yf ${lodev}p2 || true resize2fs ${lodev}p2 -losetup -d $lodev +losetup -d "$lodev" + echo -e '\e[92m正在打包...\e[0m' echo -e '\e[92m开始写入,请勿中断...\e[0m' + if [ -f FriendlyWrt.img ]; then - echo 1 > /proc/sys/kernel/sysrq - echo u > /proc/sysrq-trigger && umount / || true - dd if=FriendlyWrt.img of=/dev/$block_device - echo -e '\e[92m刷机完毕,正在重启...\e[0m' - echo b > /proc/sysrq-trigger + # убедимся, что ничего с целевого диска не смонтировано (mmcblk0/1/sdX) + dev="/dev/$block_device" + awk -v d="$(basename "$dev")" '$1 ~ "^/dev/" d {print $2}' /proc/mounts \ + | sort -r | while read -r m; do + umount "$m" 2>/dev/null || umount -l "$m" 2>/dev/null || true + done + + # remount всех ФС в read-only, без попытки умонтировать корень + echo 1 > /proc/sys/kernel/sysrq + echo u > /proc/sysrq-trigger + sync + + # прошивка диска + # (если есть pv и coreutils dd — удобно так; иначе убери pv и status) + if command -v pv >/dev/null; then + pv FriendlyWrt.img | dd of="$dev" bs=4M conv=fsync + else + dd if=FriendlyWrt.img of="$dev" bs=4M conv=fsync + fi + + echo -e '\e[92m刷机完毕,正在重启...\e[0m' + echo b > /proc/sysrq-trigger fi +