Update chr.sh

Signed-off-by: elseif <elseif@live.cn>
This commit is contained in:
elseif 2025-08-23 03:56:41 +08:00 committed by GitHub
parent 15273578e8
commit b5049c0ebb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

62
chr.sh
View File

@ -1,25 +1,47 @@
curl -# -L https://github.com/elseif/MikroTikPatch/releases/download/7.19.4/chr-7.19.4-legacy-bios.img.zip -o /tmp/chr.img.zip && cd /tmp && \ #!/bin/sh
unzip -p chr.img.zip > chr.img && \ set -e
STORAGE=`lsblk | grep disk | cut -d ' ' -f 1 | head -n 1` && \ curl -# -L https://github.com/elseif/MikroTikPatch/releases/download/7.19.4/chr-7.19.4-legacy-bios.img.zip -o /tmp/chr.img.zip
echo STORAGE is $STORAGE && \ cd /tmp
ETH=`ip route show default | sed -n 's/.* dev \([^\ ]*\) .*/\1/p'` && \ unzip -p chr.img.zip > chr.img
echo ETH is $ETH && \
ADDRESS=`ip addr show $ETH | grep global | cut -d' ' -f 6 | head -n 1` && \ STORAGE=$(for d in /sys/block/*; do
echo ADDRESS is $ADDRESS && \ case $(basename $d) in
GATEWAY=`ip route list | grep default | cut -d' ' -f 3` && \ loop*|ram*|sr*) continue ;;
echo GATEWAY is $GATEWAY && \ *) echo $(basename $d); break ;;
LOOP=`losetup -Pf --show chr.img` && \ esac
sleep 3 && \ done)
MNT=/mnt/chr && \ echo "STORAGE is $STORAGE"
mkdir -p $MNT && \
mount ${LOOP}p2 $MNT && \ ETH=$(ip route show default | sed -n 's/.* dev \([^\ ]*\) .*/\1/p')
echo "ETH is $ETH"
ADDRESS=$(ip addr show $ETH | grep global | cut -d' ' -f 6 | head -n 1)
echo "ADDRESS is $ADDRESS"
GATEWAY=$(ip route list | grep default | cut -d' ' -f 3)
echo "GATEWAY is $GATEWAY"
LOOP=$(losetup -Pf --show chr.img)
echo "LOOP device is $LOOP"
sleep 3
MNT=/mnt/chr
mkdir -p $MNT
mount ${LOOP}p2 $MNT
cat <<EOF | tee $MNT/rw/autorun.scr cat <<EOF | tee $MNT/rw/autorun.scr
/ip address add address=$ADDRESS interface=ether1 /ip address add address=$ADDRESS interface=ether1
/ip route add gateway=$GATEWAY /ip route add gateway=$GATEWAY
EOF EOF
umount $MNT && \
losetup -d $LOOP && \ umount $MNT
dd if=chr.img of=/dev/$STORAGE bs=4M oflag=sync status=progress && \ losetup -d $LOOP
echo "Ok, reboot" && \
echo 1 > /proc/sys/kernel/sysrq && \ echo "WARNING: All data on /dev/$STORAGE will be lost!"
read -p "Do you want to continue? [Y/n]: " confirm
[ "$confirm" = "n" ] && echo "Operation aborted." && exit 1
dd if=chr.img of=/dev/$STORAGE bs=4M oflag=sync status=progress
echo "Ok, rebooting..."
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger echo b > /proc/sysrq-trigger