DF-5473 / build_image.sh
#!/bin/sh # build_image.sh — assemble the minimal UFS root image the vkernel boots. # Runs ON THE GUEST as root. Builds /root/vkrig/vkroot.img with just enough # world (sh, sysctl, reboot + libs + vktrigger) for the DF-5472/DF-5473 rig. set -e RIG=/root/vkrig IMG=$RIG/vkroot.img MNT=/mnt/vkroot mkdir -p $RIG $MNT dd if=/dev/zero of=$IMG bs=1m count=200 status=none vnconfig -u vn1 2>/dev/null || true vnconfig -c -S labels vn1 $IMG disklabel -w vn1s0 auto # auto label has no partitions — replace with an 'a' spanning the slice disklabel vn1s0 > $RIG/proto grep -v "^#" $RIG/proto | grep -v "^$" > $RIG/proto2 printf "a: * 0 4.2BSD\n" >> $RIG/proto2 disklabel -R vn1s0 $RIG/proto2 # poke devfs so the partition node appears i=0 while [ ! -c /dev/vn1s0a ] && [ $i -lt 20 ]; do dd if=/dev/vn1s0 of=/dev/null bs=512 count=1 2>/dev/null sleep 0.5 i=$((i+1)) done [ -c /dev/vn1s0a ] || { echo "vn1s0a did not appear"; exit 1; } newfs /dev/vn1s0a mount /dev/vn1s0a $MNT mkdir -p $MNT/bin $MNT/sbin $MNT/lib $MNT/libexec $MNT/root $MNT/etc $MNT/dev $MNT/tmp copy_bin() { local b="$1" cp "$b" "$MNT$b" # copy the shared-library closure ldd "$b" | awk '{for(i=1;i<=NF;i++) if ($i ~ /^\//) print $i}' | sort -u | while read -r lib; do case "$lib" in /lib/*) d=/lib ;; /usr/lib/*) d=/usr/lib ;; *) continue ;; esac mkdir -p "$MNT$(dirname "$lib")" cp -n "$lib" "$MNT$lib" 2>/dev/null || cp "$lib" "$MNT$lib" done } for b in /bin/sh /bin/echo /bin/ls /bin/cat /bin/sync \ /sbin/init /sbin/sysctl /sbin/reboot /sbin/halt \ /sbin/mount /sbin/umount; do copy_bin "$b" done cp /libexec/ld-elf.so.2 $MNT/libexec/ld-elf.so.2 2>/dev/null || \ cp /usr/libexec/ld-elf.so.2 $MNT/libexec/ld-elf.so.2 # vktrigger (built earlier from vktrigger.c into $RIG) cc -O -o $MNT/root/vktrigger $RIG/vktrigger.c # minimal /etc so sh/sysctl don't complain cp /etc/pwd.db $MNT/etc/ 2>/dev/null || true cp /etc/group $MNT/etc/ 2>/dev/null || true echo nameserver 127.0.0.1 > $MNT/etc/resolv.conf df -h $MNT umount $MNT vnconfig -u vn1 echo "IMAGE READY: $IMG" |