home

systrace port for FreeBSD

Here you can find information about systrace port for FreeBSD. Systrace was written by Niels Provos and is part of OpenBSD and NetBSD. Robert Watson made some comments on systrace long time ago (2002) and proposed that someone should "port it over" and report problems in which they run into. Following informations are meant to fullfil just that.

In october 2003, I've got patches from Dr. Rich Murphey (WhiteOakLabs.com), who was working on port to FreeBSD 5.1. My work is based on these patches - I basically made some changes to make it work on RELENG-4 i386 systems, debugged a few kernel bugs, added debug messages, tweaked systrace userland. This patch is kind of dirty and not (yet) working on 5.x systems, but mostly works. Kernel panic may be still possible.

Current status: preparing to start working on the port again. I have to get some hardware first.

Download section

Changelog

Installation process (for RELENG-4)

Release build (for 4.9-RELEASE)

If you want to build whole release with systrace, use following steps:

  1. get 4.9-RELEASE sources (e.g. via cvsup as above)
    do not forget to fetch /usr/src/release directory containing scripts for release building. (via src-release collection)
  2. get patch against /usr/src/sys , systrace userland archive (from download section) and create build-script.sh. script:
       cat << EOF >> build-script.sh
       #!/bin/sh
       cd usr/src; 
       tar xvfz /PATH/TO/SYSTRACEUSERLAND-ARCHIVE/systrace-4.9-userland.tgz
       EOF
       

    Do not forget to modify the right location of systrace userland tgz file.
  3. build release via
       cd /usr/src/release;
       make release BUILDNAME=4.9-RELEASE-systrace \
          RELEASETAG=RELENG_4_9_0_RELEASE \
          CHROOTDIR=/tmp/Freebsd-build CVSROOT=anoncvs.server:/dir \
          NODOC=YES NOPORTS=YES \
          LOCAL_PATCHES=src-4.9-RELENG-systrace.patch \
          LOCAL_SCRIPT=build-script.sh
       
    Change BUILDNAME, CHROOTDIR and CVSROOT according your needs.

TODO (aka what doesn't work)

There is lot of things to do:

Systrace (programmers') documentation

Here will be light introduction to systrace internals. (in progress)