DF-5579 / run_ctl.sh
#!/bin/sh VK=/usr/obj/usr/src/sys/VKERNEL64/kernel.debug pkill -9 -f kernel.debug 2>/dev/null; sleep 1 rm -f /tmp/vkin /tmp/vkconsole.log mkfifo /tmp/vkin (sleep 900 > /tmp/vkin) & HOLDER=$! ( exec 3> /tmp/vkin echo "ufs:vkd0" >&3 for i in $(seq 1 120); do grep -q "Mounting root from ufs:vkd0$" /tmp/vkconsole.log 2>/dev/null && break sleep 1 done sleep 20 echo "/root/vkmem 0x454780; echo TEXT_RC=\$?; sleep 2" >&3 sleep 6 echo "/root/vkmem control; echo CTL_RC=\$?; sleep 2" >&3 sleep 6 echo "echo VKDONE" >&3 ) & PUMP=$! cd /usr/obj/usr/src/sys/VKERNEL64 ./kernel.debug -m 512m -r /vkroot.img -n 1 -e init_path=/bin/vkinit -s < /tmp/vkin > /tmp/vkconsole.log 2>&1 & VKPID=$! i=0 while [ $i -lt 500 ]; do grep -q "VKDONE" /tmp/vkconsole.log 2>/dev/null && break kill -0 $VKPID 2>/dev/null || break sleep 2 i=$((i+2)) done sleep 3 echo "=== vkernel alive? ===" if kill -0 $VKPID 2>/dev/null; then echo "ALIVE"; else echo "DEAD"; fi echo "=== console (from root mount) ===" N=$(grep -an "Mounting root from ufs:vkd0$" /tmp/vkconsole.log | tail -1 | cut -d: -f1) if [ -z "$N" ]; then N=1; fi awk -v n="$N" 'NR>=n' /tmp/vkconsole.log | tr -d "\000" | head -80 kill $PUMP $HOLDER 2>/dev/null pkill -9 -f kernel.debug 2>/dev/null exit 0 |