Install Mikrotik CHR on a Digital Ocean droplet
| wget http://download2.mikrotik.com/routeros/6.40.5/chr-6.40.5.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 |
stroebs commented Oct 28, 2017 •
edited