DragonFlyBSD Kernel Audit
DF-0003 / setup_env.sh
← back to finding ↓ download raw
#!/bin/sh
# DF-0003 guest setup: install kernel headers + forwarder + symlinks needed to
# build a kld module on a guest that lacks /usr/src/sys.  Idempotent.
set -eu

# 1. Kernel source headers (shipped from the audited host tree).
if [ ! -f /usr/src/sys/conf/kmod.mk ]; then
	echo ">>> extracting kernel headers"
	mkdir -p /usr/src
	tar -xzf /tmp/dfsys_headers.tar.gz -C /usr/src
	ln -sfn /usr/src/sys /sys
fi

# 2. machine/X.h -> #include <cpu/X.h> forwarders (mimics kern.fwd.mk).
FWD=/usr/obj/fwd_x86_64/include/machine
if [ ! -d "$FWD" ]; then
	echo ">>> generating machine forwarders"
	mkdir -p "$FWD"
	for h in /usr/src/sys/cpu/x86_64/include/*.h; do
		b=$(basename "$h")
		gu=$(echo "$b" | tr ".[:lower:]" "_[:upper:]")
		printf "/* CONFIG-GENERATED */\n#ifndef _MACHINE_%s_\n#define _MACHINE_%s_\n#include <cpu/%s>\n#endif\n" \
			"$gu" "$gu" "$b" > "$FWD/$b"
	done
fi
echo ">>> setup complete: $(ls "$FWD" | wc -l) forwarders, kmod.mk at /usr/src/sys/conf/kmod.mk"