Basic L4-Linux setup & run

Bjoern Doebel doebel at os.inf.tu-dresden.de
Wed Aug 29 22:50:18 CEST 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

> This is my first contact with L4 mKernel so forgive my limited knowledge on
> this subject.
> I've compiled dice, fiasco and L4env and starting to run some servers with
> trusted grub (grabbed the code from the latest OpenTC snapshot).
> But after reading all the L4-linux how-to's, I still cannot start L4-linux
> under "dope" or "con".
> I've noticed these docs looks aged, and some options are not accepted with
> current code base (--l4io, --noirq, etc).
> So, there is something I'm missing here... So far i can load everything
> (including dope server and l4-linux loads fine), but I can't see something
> like a system console, only plain and empty dope screen... I was especting
> some small dope window showing the l4-linux boot progress and maybe a
> console. Someone could show me the light please?
> Thanks :)

[..]

> --- start serial output ------------------------------------------------
> Welcome to Fiasco(ia32)!
> DD-L4(v2)/x86 microkernel (C) 1998-2007 TU Dresden
> Rev: rUNKNOWN compiled with gcc 4.1.2 for Intel Pentium
> Performance-critical config option(s) detected:
>   CONFIG_ASSEMBLER_IPC_SHORTCUT is off
>   CONFIG_NDEBUG is off
>   CONFIG_NO_FRAME_PTR is off
>   CONFIG_FINE_GRAINED_CPUTIME is on
> 
> Enabling special fully nested mode for PIC
> Using the PIT (i8254) on IRQ 0 for scheduling
> SERIAL ESC: allocated IRQ 4 for serial uart
> SERIAL ESC: allocated IRQ 4 for serial uart
> Not using serial hack in slow timer handler.
> Absolute KIP Syscalls using: Sysenter
> CPU: AuthenticAMD (6:8:0:0) Model: Athlon (Thoroughbred) at 696 MHz
> 
>   16/256 Entry I TLB (4K pages)      8 Entry I TLB (4M pages)
>   32/256 Entry D TLB (4K pages)      8 Entry D TLB (4M pages)
>   64 KB L1 I Cache (2-way associative, 64 bytes per line)
>   64 KB L1 D Cache (2-way associative, 64 bytes per line)
>  256 KB L2 U Cache (8-way associative, 64 bytes per line)
> 
> Freeing init code/data: 24576 bytes (6 pages)
> 
> Calibrating timer loop... done.
> SIGMA0: Hello!
>   KIP @ 1000
>   Found Fiasco: KIP syscalls: yes
>   allocated 4KB for maintenance structures
> 
> 
> Roottask.
>   Command line found: "(cd)/tcb/roottask -sigma0 -configfile task modname
> "bmodfs" attached 7 modules"
> 
>   409150kB ( 399MB) total RAM (reported by bootloader)
>   367424kB ( 359MB) received RAM from Sigma0
>    41376kB (  41MB) reserved RAM for RMGR
>   Received I/O ports 0000-ffff
>   Attached irqs = [ <!0> 1 <!2> 3 <!4> 5 6 7 8 9 A B C D E F ]
> 
> Roottask: Parsing config file.
>   configured task 0x02 ():
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:0 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x04 ():
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:0 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x00 (events):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:0 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x00 (names):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:0 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x00 (log):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:1 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x00 (dm_phys):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:0 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x00 (simple_ts):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:0 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x00 (rtc):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:1 mcp:ff prio:10 small:ff mods:0
>   configured task 0x00 (l4io):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:1 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x00 (ore):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:1 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x00 (l4dope):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:1 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x00 (bmodfs):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:0 mcp:ff prio:a0 small:ff mods:0
>   configured task 0x00 (loader):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:1 mcp:ff prio:a0 small:ff mods:0
> 
> Roottask: Parsing command line config.
>   configured task 0x00 (bmodfs):
>     vm_offs:0 irq:ffff lmcp:ffff allow_cli:0 mcp:ff prio:10 small:ff mods:7
> 
> Roottask: Loading 18 modules.
> #05: loading "(cd)/tcb/events"
>      from [0212c000-0216e66c] to [01540000-01548c10][01549000-0155e5d0]
>      entry at 00062368 via trampoline page code
>      symbols at [18ffe000-19000000] (8kB), lines at [18ff7000-18ffe000]
> (28kB)
> #06: loading "(cd)/tcb/names --events"
>      from [0216f000-021ae253] to [002d0000-002d5e6a][002d6000-002e1000]
>      entry at 00063370 via trampoline page code
>      symbols at [18ff5000-18ff7000] (8kB), lines at [18fef000-18ff5000]
> (24kB)
> #07: loading "(cd)/tcb/log"
>      from [021af000-021eb905] to [00400000-004068aa][00407000-00439848]
>      entry at 00064368 via trampoline page code
>      symbols at [18fed000-18fef000] (8kB), lines at [18fe7000-18fed000]
> (24kB)
> #08: loading "(cd)/tcb/dm_phys -v --events"
>      from [021ec000-0227838c] to [01500000-015121ca][01513000-0151d000]
>      entry at 00065378 via trampoline page code
>      symbols at [18fe2000-18fe7000] (20kB), lines at [18fd5000-18fe2000]
> (52kB)
> #09: loading "(cd)/tcb/simple_ts --events -t 384"
>      from [02279000-022c4d04] to [01400000-014080ea][01409000-01418608]
>      entry at 0006637c via trampoline page code
>      symbols at [18fd3000-18fd5000] (8kB), lines at [18fcb000-18fd3000]
> (32kB)
> #0a: loading "(cd)/tcb/rtc --events"
>      from [022c5000-022f5ec1] to [01080000-010840e0][01085000-0108a000]
>      entry at 00067370 via trampoline page code
>      symbols at [18fc9000-18fcb000] (8kB), lines at [18fc4000-18fc9000]
> (20kB)
> #0b: loading "(cd)/tcb/l4io --events"
>      from [022f6000-0254ee28] to [00b80000-00ba22a5][00ba3000-00c0a000]
>      entry at 00069370 via trampoline page code
>      symbols at [18f72000-18fc4000] (328kB), lines at [18f58000-18f72000]
> (104kB)
> #0c: loading "(cd)/tcb/ore --events"
>      from [0254f000-0272f014] to [01800000-01832019][01833000-01862000]
>      entry at 0006a370 via trampoline page code
>      symbols at [18f4f000-18f58000] (36kB), lines at [18f29000-18f4f000]
> (152kB)
> #0d: loading "(cd)/tcb/l4dope --events"
>      from [02730000-0289de76] to [01b00000-01b411a1][01b42000-01b83000]
>      entry at 0006b374 via trampoline page code
>      symbols at [18f1b000-18f29000] (56kB), lines at [16ed9000-16f05000]
> (176kB)
> #0e: loading "(cd)/tcb/bmodfs"
>      from [0289e000-0293d5d0] to [01220000-01235659][01236000-0124d000]
>      passing module (cd)/tcb/libloader.s.so               [
> 0293e000-029dcc02 ]
>      passing module (cd)/tcb/libld-l4.s.so                [
> 029dd000-02a569c9 ]
>      passing module (cd)/tcb/task_config.cfg              [
> 02a57000-02a57319 ]
>      passing module (cd)/tcb/run                          [
> 02a58000-02aa5ee1 ]
>      passing module (cd)/tcb/proxygon                     [
> 02aa6000-02b6bcbb ]
>      passing module (cd)/userland/l4linux2.6.21           [
> 02b6c000-0371baad ]
>      passing module (cd)/userland/drops.rd                [
> 0371c000-0471c000 ]
>      entry at 0006c47c via trampoline page code
>      symbols at [18f16000-18f1b000] (20kB), lines at [18f04000-18f16000]
> (72kB)
> #0f: loading "(cd)/tcb/loader --events --fprov=BMODFS task_config.cfg"
>      from [0471c000-047f49e4] to [01300000-01324ef9][01325000-01343000]
>      entry at 0006d390 via trampoline page code
>      symbols at [16ed3000-16ed9000] (24kB), lines at [16eba000-16ed3000]
> (100kB)
> 
> names   | Starting thread listening for `exit' events
> ROOT: Sending ports 0070-0070 to task #0a
> ROOT: Sending ports 0080-0080 to task #0a
> ROOT: Sending ports 0071-0071 to task #0a
> rtc     | Date:29.08.2007 Time:18:16:01
> simplets| Configured for 384 tasks.
> DMphys  | DMphys memory map:
> DMphys  |   phys. memory 0x00000000-0x19000000 (from L4 kernel info page)
> DMphys  |   using 0x00100000-0x19000000
> DMphys  |        Memory area      Pool  PS  Flags
> DMphys  |   0x00000000-0x0009f000  --   --  RESERVED
> DMphys  |   0x00100000-0x00161000  --   --  RESERVED
> DMphys  |   0x00161000-0x001c6000  --   --  DENIED
> DMphys  |   0x001c6000-0x002d0000   0   12  MAPPED
> DMphys  |   0x002d0000-0x002e1000  --   --  DENIED
> DMphys  |   0x002e1000-0x00400000   0   12  MAPPED
> DMphys  |   0x00400000-0x0043a000  --   --  DENIED
> DMphys  |   0x0043a000-0x00b80000   0   12  MAPPED
> DMphys  |   0x00b80000-0x00c0a000  --   --  DENIED
> DMphys  |   0x00c0a000-0x01080000   0   12  MAPPED
> DMphys  |   0x01080000-0x0108a000  --   --  DENIED
> DMphys  |   0x0108a000-0x01220000   0   12  MAPPED
> DMphys  |   0x01220000-0x0124d000  --   --  DENIED
> DMphys  |   0x0124d000-0x01300000   0   12  MAPPED
> DMphys  |   0x01300000-0x01343000  --   --  DENIED
> DMphys  |   0x01343000-0x01400000   0   12  MAPPED
> DMphys  |   0x01400000-0x01419000  --   --  DENIED
> DMphys  |   0x01419000-0x01500000   0   12  MAPPED
> DMphys  |   0x01500000-0x0151c000  --   --  RESERVED
> DMphys  |   0x0151c000-0x01540000   0   12  MAPPED
> DMphys  |   0x01540000-0x0155f000  --   --  DENIED
> DMphys  |   0x0155f000-0x01800000   0   12  MAPPED
> DMphys  |   0x01800000-0x01862000  --   --  DENIED
> DMphys  |   0x01862000-0x01b00000   0   12  MAPPED
> DMphys  |   0x01b00000-0x01b83000  --   --  DENIED
> DMphys  |   0x01b83000-0x01c00000   0   12  MAPPED
> DMphys  |   0x01c00000-0x02800000   0   22  MAPPED
> DMphys  |   0x02800000-0x0293e000   0   12  MAPPED
> DMphys  |   0x0293e000-0x0471c000  --   --  DENIED
> DMphys  |   0x0471c000-0x04800000   0   12  MAPPED
> DMphys  |   0x04800000-0x16c00000   0   22  MAPPED
> DMphys  |   0x16c00000-0x16eba000   0   12  MAPPED
> DMphys  |   0x16eba000-0x18ef0000  --   --  DENIED
> DMphys  |   0x18f00000-0x18f04000   0   12  MAPPED
> DMphys  |   0x18f04000-0x19000000  --   --  DENIED
> DMphys  |
> DMphys  | DMphys memory pools:
> DMphys  |  pool 0 (Default memory pool):
> DMphys  |  size: 340552KB total, 340552KB free,  32KB reserved
> DMphys  |   0x001c6000-0x002d0000 (  1064KB,    1MB) free DS:
> DMphys  |   0x002e1000-0x00400000 (  1148KB,    1MB) free DS:
> DMphys  |   0x0043a000-0x00b80000 (  7448KB,    7MB) free DS:
> DMphys  |   0x00c0a000-0x01080000 (  4568KB,    4MB) free DS:
> DMphys  |   0x0108a000-0x01220000 (  1624KB,    2MB) free DS:
> DMphys  |   0x0124d000-0x01300000 (   716KB,    1MB) free DS:
> DMphys  |   0x01343000-0x01400000 (   756KB,    1MB) free DS:
> DMphys  |   0x01419000-0x01500000 (   924KB,    1MB) free DS:
> DMphys  |   0x0151c000-0x01540000 (   144KB,    0MB) free DS:
> DMphys  |   0x0155f000-0x01800000 (  2692KB,    3MB) free DS:
> DMphys  |   0x01862000-0x01b00000 (  2680KB,    3MB) free DS:
> DMphys  |   0x01b83000-0x0293e000 ( 14060KB,   14MB) free DS:
> DMphys  |   0x0471c000-0x16eba000 (302712KB,  296MB) free DS:
> DMphys  |   0x18f00000-0x18f04000 (    16KB,    0MB) free DS:
> io      | Enabling events support.
> l4dope  | DOpE(init): using events mechanism
> ROOT: Sending ports 0cfb-0cfb to task #0b
> ROOT: Sending ports 0cf8-0cfb to task #0b
> ROOT: Sending ports 0cfe-0cff to task #0b
> bmodfs  | Passed the following modules:
> io      | PCI: Using configuration type 1
> bmodfs  |   module "(cd)/tcb/libloader.s.so" (636kB)
> io      | PCI: Probing PCI hardware
> bmodfs  |   module "(cd)/tcb/libld-l4.s.so" (487kB)
> io      | PCI: Probing PCI hardware (bus 00)
> ROOT: Sending ports 0cfc-0cff to task #0b
> bmodfs  |   module "(cd)/tcb/task_config.cfg" (1kB)
> io      | PCI: Cannot allocate resource region 4 of device 00:07.1
> bmodfs  |   module "(cd)/tcb/run" (312kB)
> io      | Limiting direct PCI/PCI transfers.
> bmodfs  |   module "(cd)/tcb/proxygon" (792kB)
> io      | 00000000-ffffffff : PCI mem
> bmodfs  |   module "(cd)/userland/l4linux2.6.21" (11967kB)
> io      |   e8000000-ebffffff : Intel Corporation 440BX/ZX/DX -
> 82443BX/ZX/DX H
> bmodfs  |   module "(cd)/userland/drops.rd" (16384kB)
> io      : ost bridge
> loader  | sleeping for 10000 ms
> io      |   ec000000-ec7fffff : VMware Inc [VMware SVGA II] PCI Display
> Adapter
> io      |   ec800000-ec800fff : LSI Logic / Symbios Logic 53c1030 PCI-X
> Fusion-
> io      : MPT Dual Ultra320 SCSI
> io      |   f0000000-f7ffffff : VMware Inc [VMware SVGA II] PCI Display
> Adapter
> io      | 0000-ffff : PCI IO
> io      |   0cf8-0cff : PCI conf1
> io      |   1000-103f : Intel Corporation 82371AB/EB/MB PIIX4 ACPI
> io      |   1040-105f : Intel Corporation 82371AB/EB/MB PIIX4 ACPI
> io      |   1060-106f : VMware Inc [VMware SVGA II] PCI Display Adapter
> io      |   1070-107f : Intel Corporation 82371AB/EB/MB PIIX4 IDE
> io      |   1080-10ff : LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT
> Dual
> io      :  Ultra320 SCSI
> io      |   1400-147f : Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
> io      | Available IRQs=[ <!0> 1 <!2> 3 <!4> 5 6 7 8 9 a b c d e f ]
> l4dope  | L4INPUT native mode activated
> ore     | l4dde_mm_init(): Using ...
> l4dope  | L4INPUT:                !!! W A R N I N G !!!
> ore     |   16 MB at 0x00180000 (vmem)
> l4dope  | L4INPUT:  Please, do not use Fiasco's "-esc" with L4INPUT.
> ore     |   16 MB in 1 regions (kmem)
> l4dope  | L4INPUT:                !!! W A R N I N G !!!
> ROOT: Sending ports 0060-006f to task #0b
> ore     | main(): initialized DDELinux2.4
> l4dope  | serio: i8042 AUX port at 0x60,0x64 irq 12
> ore     | main(): loopback: 0
> l4dope  | serio: i8042 KBD port at 0x60,0x64 irq 1
> ore     | device lo entered promiscuous mode
> l4dope  | input: ImPS/2 Generic Wheel Mouse on isa0060/serio1
> ore     | main(): Initialized 1 network devices.
> l4dope  | input: AT Translated Set 2 keyboard on isa0060/serio0
> ore     | Device =   lo, IRQ =  0, MAC = 00:00:00:00:00:00

The ORe network switch does not seem to be configured for your internal
network interface. Afair, VMWare emulates an AMD PCNet device, so go to
l4/pkg/ore/server and run "make config". Select AMD PCNet 32.

> l4dope  | input: PC Speaker
> ore     | main(): Registering 'ORe' at names...
> l4dope  | input: L4 input event injector
> ore     | main(): Ready for service.
> l4dope  | L4 input event injector: IRQ handler up
> l4dope  | a0060/serio1/input0
> l4dope  | connect "ImPS/2 Generic Wheel Mouse", isa0060/serio1/input0
> l4dope  | connect "AT Translated Set 2 keyboard", isa0060/serio0/input0
> l4dope  | connect "PC Speaker", isa0061/input0
> l4dope  | connect "L4 input event injector", l4/sys
> l4dope  | SharedMem(alloc): hl.raw=100000, id=43, size=800
> l4dope  | SharedMem(get_adr): address = 0x6000
> l4dope  | SharedMem(alloc): hl.raw=100000, id=44, size=800
> l4dope  | SharedMem(get_adr): address = 0x7000
> l4dope  | SharedMem(alloc): hl.raw=100000, id=45, size=800
> l4dope  | SharedMem(get_adr): address = 0xd000
> l4dope  | SharedMem(alloc): hl.raw=100000, id=46, size=800
> l4dope  | SharedMem(get_adr): address = 0xe000
> l4dope  | SharedMem(alloc): hl.raw=100000, id=47, size=800
> l4dope  | SharedMem(get_adr): address = 0xf000
> l4dope  | SharedMem(alloc): hl.raw=100000, id=49, size=800
> l4dope  | SharedMem(get_adr): address = 0x16000
> l4dope  | SharedMem(alloc): hl.raw=100000, id=4a, size=800
> l4dope  | SharedMem(get_adr): address = 0x17000
> l4dope  | dope: paddr=f0000000 size=16384KiB
> l4dope  | Mapped video memory at f0000000 to 03000000+000000 [16384kB] via
> L4IO
> l4dope  | mapping: vaddr=0x3000000 size=16777216(0x1000000) offset=0(0x0)
> l4dope  | Frame buffer base:  0x3000000
> l4dope  | Resolution:         1024x768x16
> l4dope  | Bytes per scanline: 2048
> l4dope  | Current video mode is 1024x768 red=11:5 green=5:6 blue=0:5 res=0:0
> loader  | l4linux2.6.21: Starting application using libld-l4.s.so
> loader  | l4linux2.6.21,#10: Loading binary
> loader  | l4linux2.6.21,#10: Loading ldso
> loader  | l4linux2.6.21,#10: Starting libld-l4.s.so at 00013800 via 0000cbf0
> l4lx    | ======> L4Linux 2.6 starting... <========
> l4lx    | Linux version 2.6.21-l4 (tjcl at fx242) (gcc version 4.1.2) #3 Wed
> Aug 2
> l4lx    : 2 16:43:46 WEST 2007
> l4lx    | Binary name: l4linux2.6.21
> l4lx    | Kernel command line (6 args): mem=128M root=/dev/ram
> load_ramdisk=1 r
> l4lx    : amdisk_size=16384 l4env_rd=drops.rd video=l4fb:800x600 at 16
> ,xpos:214,yp
> l4lx    : os:140,refreshsleep:75,title:LegacyLinux
> l4lx    | Image: 00400000 - 00683000 [2572 KiB].
> l4lx    | Areas: Text:     00400000 - 005e9000 [1956kB] (a bit longer)
> l4lx    |        Data:     005e9000 - 005fe2cc [84kB]
> l4lx    |        Initdata: 00602000 - 006260a0 [144kB]
> l4lx    |        BSS:      00628000 - 00680900 [354kB]
> l4lx    | l4lx_thread_create: Created thread 10.03 (tamer)
> l4lx    | Using tamed mode.
> ROOT: Sending all ports (for cli/sti) to task #0f
> l4lx    | Got 65536 out of 65536 I/O ports
> l4lx    | l4env_linux_startup thread 4.
> l4lx    | l4lx_thread_create: Created thread 10.04 (server)
> l4lx    | main thread will be 10.04
> l4lx    | l4env_register_pointer_section: addr = 00600000 size = 536576
> l4lx    |      sec-w-init: virt: 0x00600000 to 0x00682fff [524 KiB]
> l4lx    |      sec-w-init: Number of physical regions: 1, 536576 Bytes
> l4lx    |      sec-w-init: 1: Phys: 0x0093e000 to 0x009c1000, Size:   536576
> l4lx    | main thread: received startup message.
> l4lx    | Main thread running, waiting...
> l4lx    | setup_l4env_memory: Forcing superpages for main memory
> l4lx    | Main memory size: 128MB
> l4lx    |     Main memory: virt: 0x00800000 to 0x087fffff [131072 KiB]
> l4lx    |     Main memory: Number of physical regions: 1, 134217728 Bytes
> l4lx    |     Main memory: 1: Phys: 0x06800000 to 0x0e800000, Size:
> 134217728
> l4lx    | Filling lower ptabs...
> l4lx    | Done (1338 entries).
> l4lx    | l4env_rd_path: drops.rd
> l4lx    | Loading: drops.rd
> l4lx    | INITRD: Size of RAMdisk is 16384KiB
> l4lx    | RAMdisk from 08800000 to 09800000 [16384KiB]
> l4lx    | l4lx_thread_create: Created thread 10.05 (timer.i0)
> l4lx    | l4lx_thread_create: Created thread 10.06 (Idler)
> l4lx    | Creating 1 ORe device(s).
> l4lx    | Opening device eth0 at ORe instance ORe
> l4lx    | l4ore_open(): called
> l4lx    | l4ore_open(): descriptor: 0
> l4lx    | ore_lookup_server(): ORe server ORe = C.02
> l4lx    | ore_do_open(): called
> ore     | [C.2] ore/server/src/clients.c:215:setup_connection():
> ore     |  Error: no device found.
> l4lx    | ore_do_open(): opened. worker = 7FF.7F
> l4lx    | [10.4] ore/lib/client/lib.c:181:l4ore_open():
> l4lx    |  Error: ore_open() returned INVALID_ID

L4Linux stops, because it cannot initialize the ORe network device. As long
as L4Linux is your only client accessing the network, you also have the
option to remove ORe from your menu.lst, configure  L4Linux to not use the
ORe stub and use a native NIC driver instead. ORe is used if there are
multiple clients for the NIC, e.g. in the case of multiple L4Linux instances.

Regards,
Bjoern
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFG1dwJP5ijxgQLUNkRAkDAAJ40GKtqztDw37FPsiHLaup+U1WJigCdEpeb
jCavrM0wntavQHPrfjGpJMM=
=/qYm
-----END PGP SIGNATURE-----




More information about the l4-hackers mailing list