l4openbsd icon indicating copy to clipboard operation
l4openbsd copied to clipboard

OpenBSD/L4 port

OpenBSD port to the Fiasco-UX/L4 microkernel

Build kernel:

  • setup a Linux machine

  • unpack l4re-snapshot, compile fiasco and L4 ( e.g. in /home/l4/ )

  • unpack this source tree into that base path ( e.g. in /home/l4/openbsd/src )

  • export the /home/l4 path via NFS

  • setup an OpenBSD machine with a version corresponding to these sources!

    • find current version with

      grep "^osr" /home/l4/openbsd/src/sys/conf/newvers.sh

  • import the /home/l4 path via NFS (needs to be the same path on both machines)

  • adjust the kernel configuration to point to your L4 build directory

    • edit /home/l4/openbsd/src/sys/arch/i386/conf/L4 and change the makeoption L4_BUILDDIR
  • build the kernel on OpenBSD

    cd /home/l4/openbsd/

    mkdir -p obj/sys

    cd obj/sys

    ln -s /home/l4/openbsd/src/sys/arch/i386/conf/L4 .

    config -b . -s /home/l4/openbsd/src/sys/ L4

    make clean depend

    make

    [ lots of output => generates file: bsd ]

  • copy final "bsd" to l4loader directory on Linux machine

  • in l4loader directory on the Linux host:

  • edit Makefile and set L4_BUILDDIR as for the OpenBSD kernel configuration above

    make

    [ less output => generates: l4bsd ]

Build ramdisk:

  • on your OpenBSD machine, build the complete userland

    mkdir -d /usr/obj

    rm -rf /usr/obj/*

    set BSDSRCDIR=/home/l4/openbsd/src/

    set BSDOBJDIR=/home/l4/openbsd/obj/

    cd $BSDSRCDIR

    echo "BSDSRCDIR=$BSDSRCDIR" >> /etc/mk.conf

    echo "BSDOBJDIR=$BSDOBJDIR" >> /etc/mk.conf

    make obj

    cd $BSDSRCDIR/distrib/special

    make

    cd $BSDSRCDIR/distrib/uname -m/ramdisk_cd/

    make mr.fs

  • copy the resulting obj/mr.fs file to your Linux machine

Run:

  • treat "l4bsd" as if it was vmlinu[xz] from L4Linux
  • treat "mr.fs" as if it was the initrd from L4Linux (load as command line parameter lx_rd=rom/mr.fs)

General hints:

If you need debugging symbols in your userland binaries, add DEBUG and/or DEBUGLIBS to /etc/mk.conf. See mk.conf(5) for details.

To add support for debugging symbols in your kernel, add the DEBUG kernel config(8) option. (NOTE: This is known to be broken at the moment.)