Skip to content

chrissicool/l4openbsd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.)