Pre-requisites

Checkout tudos/repomgr:

svn co -N http://svn.tudos.org/repos/tudos/trunk tudos

To list the available modules use:

cd tudos
./repomgr modules

Checkout hello, fiasco, l4env,

./repomgr co hello fiasco l4env

Use your distro package manager to install yacc, qemu and arping.

Build fiasco

cd kernel/fiasco
make menuconfig

Make sure you install yacc, and set yacc properly in the compiler settings.

make

This generates the fiasco kernel image (main) and irq0 tudos/kernel/fiasco/build directory.

Build other modules

cd tudos/l4
mkdir build
make O=/path/to/build config

Set DROPS_STDDIR accordingly:

DROPS_STDDIR=/path/to/tudos/l4

To build, use:

  make O=/path/to/l4/build

Executables are present in tudos/l4/build/bin directory. bootstrap is present in:

tudos/l4/build/bin/x86_586/
  * bootstrap

hello, roottask and sigma0 modules are present in:

tudos/l4/build/bin/x86_586/l4v2/
  * hello
  * roottask
  * sigma0

If you had configured kernel to build fiasco-ux, you can test with hello using:

./fiasco -l hello

Checkout dde

cd tudos/l4/pkg
svn up dde
svn up ore

Build

cd tudos/l4
make O=/path/to/build config
make O=/path/to/build

Test

You can test the modules with qemu. To create a cd-image to test with qemu, put all executables in a top-level directory:

boot/grub/menu.lst
boot/grub/stage2_eltorito
bootstrap
fiasco
sigma0
roottask
names
dm_phys
log
l4io
ore
ore_test_arping

stage2_eltorito is available in Debian under /usr/lib/grub/i386-pc/. boot/grub/menu.lst contents:

title ORe
kernel /bootstrap -serial -modaddr 0x2000000
module /fiasco -serial_esc -comspeed 115200 -comport 1 -nokdb -jdb_cmd=JH
module /sigma0
module /roottask
module /names
module /dm_phys
module /log
module /l4io
module /ore
module /ore_test_arping

To create an .iso use the following from the top-level directory:

mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -hide-rr-moved -J -joliet-long -o "cd-image.iso" .

To execute with qemu, use:

sudo qemu -cdrom cd-image.iso -serial stdio -net nic,model=rtl8139,vlan=0 -net tap,vlan=0 -m 200

Qemu runs and stops with the following output:

ore     | main(): initialized DDELinux2.6
ore     | main(): loopback: 0
ore     | (6)device lo entered promiscuous mode
ore     | (6)device eth0 entered promiscuous mode
ore     | (6)eth0: link up, 100Mbps, full-duplex, lpa 0x05E1
ore     | main(): Initialized 2 network devices.
ore     | Device =   lo, IRQ =  0, MAC = 00:00:00:00:00:00
ore     | Device = eth0, IRQ = 11, MAC = 52:54:00:12:34:56
ore     | main(): Registering 'ORe' at names...
ore     | main(): Ready for service.
arping  | ore_lookup_server(): ORe server ORe = 9.02
arping  | ore_do_open(): called
ore     | __init_mac(): MAC =  04:EA:43:01:96:09
arping  | ore_do_open(): opened. worker = 9.08
arping  | main(): opened eth0: 0 for 04:EA:43:01:96:09
arping  | main(): ORe handle = 0
arping  | main(): got send area: 0x00600008

Open another terminal and use arping to test the ping:

./arping -i tap0 04:EA:43:01:96:09 -w 100 -c 10000
60 bytes from 255.255.255.255 (04:ea:43:01:96:09): icmp_seq=9914 time=823.021 usec
60 bytes from 255.255.255.255 (04:ea:43:01:96:09): icmp_seq=9915 time=851.154 usec
60 bytes from 255.255.255.255 (04:ea:43:01:96:09): icmp_seq=9916 time=771.046 usec

Bibliography

  1. [DROPS_download]. DROPS download. http://os.inf.tu-dresden.de/drops/download.html.

  2. [ORe]. ORe. http://wiki.tudos.org/ORe.

  3. [CDimage]. CDimage. http://wiki.tudos.org/CD_image.