DF-0820 / reproduce.sh
#!/bin/sh # DF-0820 reproduce.sh — runs IN the guest as root. # Rebuilds craft, creates a base UFS image, patches the requested variant, # mounts it, and reports. Expects img variant name as $1. # # Usage (from host): vm.sh run_root 'sh /root/reproduce.sh <variant>' # variant: fsize0 | ncgneg1 | ncghuge | frag0 | sbsizebig set -u V="${1:-fsize0}" cd /root cc -o craft craft.c 2>/dev/null || { echo "CRAFT_BUILD_FAIL"; exit 3; } # Fresh base image rm -f base.img "img_${V}.img" truncate -s 4M base.img vnconfig -u vn0 2>/dev/null || true vnconfig -c vn0 base.img newfs -v /dev/vn0 >/dev/null 2>&1 vnconfig -u vn0 case "$V" in fsize0) ./craft base.img img_fsize0.img fs_fsize=0 ;; ncgneg1) ./craft base.img img_ncgneg1.img fs_ncg=-1 ;; ncghuge) ./craft base.img img_ncghuge.img fs_ncg=858993460 ;; frag0) ./craft base.img img_frag0.img fs_frag=0 ;; sbsizebig) ./craft base.img img_sbsizebig.img fs_sbsize=65536 ;; *) echo "unknown variant $V"; exit 4 ;; esac mkdir -p /mnt/test vnconfig -c vn0 "img_${V}.img" echo "=== MOUNT $V (expect panic for fsize0/ncgneg1/ncghuge/sbsizebig) ===" mount -t ufs /dev/vn0 /mnt/test 2>&1 echo "MOUNT_RC=$? (reached only if no panic)" umount /mnt/test 2>/dev/null vnconfig -u vn0 2>/dev/null |