⬢ DragonFlyBSD Kernel Audit
DF-5534 / trigger.sh
← back to finding ↓ download raw
#!/bin/sh
VK=/usr/obj/usr/src/sys/VKERNEL64/kernel.debug
run_vk() {
    name=$1; secs=$2; mem=$3; shift 3
    pkill -9 -f kernel.debug 2>/dev/null; sleep 3
    i=0; while pgrep -f kernel.debug >/dev/null 2>&1 && [ $i -lt 60 ]; do sleep 1; i=$((i+1)); done
    rm -f /tmp/vkin.$name /tmp/vkc.$name
    mkfifo /tmp/vkin.$name
    (sleep $((secs + 90)) > /tmp/vkin.$name) &
    H=$!
    ( exec 3> /tmp/vkin.$name
      echo "ufs:vkd0" >&3
      sleep 2
      echo "ufs:vkd0" >&3 ) &
    P=$!
    ( cd /usr/obj/usr/src/sys/VKERNEL64 && exec ./kernel.debug -m $mem -r /vkroot.img -n 1 \
        -e init_path=/bin/vkinit "$@" -s < /tmp/vkin.$name > /tmp/vkc.$name 2>&1 ) &
    V=$!
    echo "[$name] pid=$V"
    i=0
    while [ $i -lt $secs ]; do
      kill -0 $V 2>/dev/null || break
      sleep 1; i=$((i+1))
    done
    sleep 2
    if kill -0 $V 2>/dev/null; then ALIVE=YES; else ALIVE=NO; fi
    echo "[$name] alive=$ALIVE after ${i}s"
    kill $P $H 2>/dev/null; kill -9 $V 2>/dev/null
    echo "[$name] === console ==="
    cat /tmp/vkc.$name
    echo "[$name] === end ==="
}
echo "########## RUN D: kern.nbuf=99999999999 ##########"
run_vk nbuf2 100 2g -e kern.nbuf=99999999999
echo "########## RUN E: handle with closing X (success branch) ##########"
run_vk deepX 100 512m \
  -e boot.netif.ip=10.1.2.3 -e boot.netif.netmask=255.255.255.0 \
  -e boot.netif.name=lo0 -e boot.nfsroot.server=127.0.0.1 \
  -e boot.nfsroot.nfshandle=Xdeadbeefcafebabe0123456789abcdefaabbccddX
echo "DE DONE"