Created
May 17, 2019 04:58
-
-
Save 728512/2bafef85a783dfef0205586d3f1debe6 to your computer and use it in GitHub Desktop.
make-chr.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
wget https://download2.mikrotik.com/routeros/6.44.3/chr-6.44.3.img.zip -O chr.img.zip && \ | |
gunzip -c chr.img.zip > chr.img && \ | |
apt-get update && \ | |
apt install -y qemu-utils pv && \ | |
qemu-img convert chr.img -O qcow2 chr.qcow2 && \ | |
qemu-img resize chr.qcow2 `fdisk /dev/vda -l | head -n 1 | cut -d',' -f 2 | cut -d' ' -f 2` && \ | |
modprobe nbd && \ | |
qemu-nbd -c /dev/nbd0 chr.qcow2 && \ | |
echo "Give some time for qemu-nbd to be ready" && \ | |
sleep 2 && \ | |
partx -a /dev/nbd0 && \ | |
mount /dev/nbd0p2 /mnt && \ | |
ADDRESS=`ip addr show eth0 | grep global | cut -d' ' -f 6 | head -n 1` && \ | |
GATEWAY=`ip route list | grep default | cut -d' ' -f 3` && \ | |
echo "/ip address add address=$ADDRESS interface=[/interface ethernet find where name=ether1] | |
/ip route add gateway=$GATEWAY | |
/ip service disable telnet | |
/user set 0 name=root password=xxxxxx | |
" > /mnt/rw/autorun.scr && \ | |
umount /mnt && \ | |
echo "Magic constant is 65537 (second partition address). You can check it with fdisk before appliyng this" && \ | |
echo "This scary sequence removes seconds partition on nbd0 and creates new, but bigger one" && \ | |
echo -e 'd\n2\nn\np\n2\n65537\n\nw\n' | fdisk /dev/nbd0 && \ | |
e2fsck -f -y /dev/nbd0p2 || true && \ | |
resize2fs /dev/nbd0p2 && \ | |
sleep 1 && \ | |
echo "Compressing to gzip, this can take several minutes" && \ | |
mount -t tmpfs tmpfs /mnt && \ | |
pv /dev/nbd0 | gzip > /mnt/chr-extended.gz && \ | |
sleep 1 && \ | |
killall qemu-nbd && \ | |
sleep 1 && \ | |
echo u > /proc/sysrq-trigger && \ | |
echo "Warming up sleep" && \ | |
sleep 1 && \ | |
echo "Writing raw image, this will take time" && \ | |
zcat /mnt/chr-extended.gz | pv > /dev/vda && \ | |
echo "Sleep 5 seconds (if lucky)" && \ | |
sleep 5 || true && \ | |
echo "sync disk" && \ | |
echo s > /proc/sysrq-trigger && \ | |
echo "Ok, reboot" && \ | |
echo b > /proc/sysrq-trigger |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment