genode os framework

99
Microkernel-based Systems Summer School 2013: Genode OS Framework Norman Feske <[email protected]>

Upload: vasily-sartakov

Post on 17-Jan-2015

590 views

Category:

Education


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Genode OS Framework

Microkernel-based SystemsSummer School 2013:Genode OS Framework

Norman Feske<[email protected]>

Page 2: Genode OS Framework

Outline

1. Why do we need another operating system?

2. Genode entering the picture

3. Architectural Principles

4. Core - the root of the process tree

5. Inter-process communication

6. Classification of components

7. Kernelization example

8. Components overview

Microkernel-based Systems Summer School 2013: Genode OS Framework 2

Page 3: Genode OS Framework

Outline

1. Why do we need another operating system?

2. Genode entering the picture

3. Architectural Principles

4. Core - the root of the process tree

5. Inter-process communication

6. Classification of components

7. Kernelization example

8. Components overview

Microkernel-based Systems Summer School 2013: Genode OS Framework 3

Page 4: Genode OS Framework

Myths

Microkernel-based Systems Summer School 2013: Genode OS Framework 4

Page 5: Genode OS Framework

Problem: Complexity

Today’s commodity OSes Exceedingly complex trusted computingbase (TCB)

TCB of an application on Linux:

Kernel + loaded kernel modulesDaemonsX Server + window managerDesktop environmentAll running processes of the user

→ User credentials are exposed to millions of lines of code

Microkernel-based Systems Summer School 2013: Genode OS Framework 5

Page 6: Genode OS Framework

Problem: Complexity (II)

Implications:

High likelihood for bugs (need for frequent security updates)Huge attack surface for directed attacksZero-day exploits

Microkernel-based Systems Summer School 2013: Genode OS Framework 6

Page 7: Genode OS Framework

Problem: Global names

Many examples on traditional systemsI UIDs, PIDsI network interface namesI port numbersI device nodesI ...

Leak information

Name is a potential attack vector (ambient authority)

Microkernel-based Systems Summer School 2013: Genode OS Framework 7

Page 8: Genode OS Framework

Problem: Resource management

Pretension of unlimited resourcesLack of accounting→ Largely indeterministic behavior→ Need for complex heuristics, schedulers

Microkernel-based Systems Summer School 2013: Genode OS Framework 8

Page 9: Genode OS Framework

Key technologies

MicrokernelsDecomponentization, kernelizationCapability-based securityVirtualization

Microkernel-based Systems Summer School 2013: Genode OS Framework 9

Page 10: Genode OS Framework

Tricky questions

How to...

...build a system without global names?

...trade between parties that do not know each other?

...reclaim kidnapped goods from an alien? (without violence)

...deal with distributed access-control policies?

...transparently monitor communication?

...recycle a subsystem without knowing its internal structure?

Microkernel-based Systems Summer School 2013: Genode OS Framework 10

Page 11: Genode OS Framework

Even more tricky questions

How to...

...avoid performance hazards through many indirections?

...translate architectural ideas into a real implementation?

Microkernel-based Systems Summer School 2013: Genode OS Framework 11

Page 12: Genode OS Framework

Outline

1. Why do we need another operating system?

2. Genode entering the picture

3. Architectural Principles

4. Core - the root of the process tree

5. Inter-process communication

6. Classification of components

7. Kernelization example

8. Components overview

Microkernel-based Systems Summer School 2013: Genode OS Framework 12

Page 13: Genode OS Framework

A bit of history

Research timeline at TU Dresden

Microkernel-based Systems Summer School 2013: Genode OS Framework 13

Page 14: Genode OS Framework

A new generation of kernels on the horizon

Microkernel-based Systems Summer School 2013: Genode OS Framework 14

Page 15: Genode OS Framework

Unique feature: Cross-kernel portability

When started, no suitable microkernel was available→ Prototyped on Linux and L4/Fiasco→ Later ported to other kernels

Microkernel-based Systems Summer School 2013: Genode OS Framework 15

Page 16: Genode OS Framework

Today: Rich OS construction kit

Support of a variety of kernelsOKL4, L4/Fiasco, L4ka::Pistachio, NOVA, Fiasco.OC, Linux, Codezero

Preservation of special kernel features

I OKLinux on OKL4,I L4Linux on Fiasco.OC,I Vancouver on NOVA,I Real-time priorities on L4/Fiasco

Uniform API → kernel-independent components

Many ready-to-use device drivers, protocol stacks, and3rd-party libraries

Microkernel-based Systems Summer School 2013: Genode OS Framework 16

Page 17: Genode OS Framework

Outline

1. Why do we need another operating system?

2. Genode entering the picture

3. Architectural Principles

4. Core - the root of the process tree

5. Inter-process communication

6. Classification of components

7. Kernelization example

8. Components overview

Microkernel-based Systems Summer School 2013: Genode OS Framework 17

Page 18: Genode OS Framework

Object capabilities

Delegation of rights

Each process lives in a virtual environmentA process that possesses a right (capability) can

I Use it (invoke)I Delegate it to acquainted processes

Microkernel-based Systems Summer School 2013: Genode OS Framework 18

Page 19: Genode OS Framework

Recursive system structure

Microkernel-based Systems Summer School 2013: Genode OS Framework 19

Page 20: Genode OS Framework

Service announcement

Microkernel-based Systems Summer School 2013: Genode OS Framework 20

Page 21: Genode OS Framework

Session creation

Microkernel-based Systems Summer School 2013: Genode OS Framework 21

Page 22: Genode OS Framework

Session creation

Microkernel-based Systems Summer School 2013: Genode OS Framework 22

Page 23: Genode OS Framework

This works recursively

→ Application-specific TCB

Microkernel-based Systems Summer School 2013: Genode OS Framework 23

Page 24: Genode OS Framework

Combined with virtualization

Microkernel-based Systems Summer School 2013: Genode OS Framework 24

Page 25: Genode OS Framework

Resource management

Explicit assignment of physical resources to processes

Microkernel-based Systems Summer School 2013: Genode OS Framework 25

Page 26: Genode OS Framework

Resource management (II)

Resources can be attached to sessions

Microkernel-based Systems Summer School 2013: Genode OS Framework 26

Page 27: Genode OS Framework

Resource management (III)

Intermediation of resource requests

Microkernel-based Systems Summer School 2013: Genode OS Framework 27

Page 28: Genode OS Framework

Resource management (IV)

Virtualization of resources

Microkernel-based Systems Summer School 2013: Genode OS Framework 28

Page 29: Genode OS Framework

Resource management (V)

Server-side heap partitioning

Microkernel-based Systems Summer School 2013: Genode OS Framework 29

Page 30: Genode OS Framework

Parent interface

void exit(exit_value)

void announce(service_name, root_capability)

session_capability session(service_name, session_args)

void upgrade(to_session_capability, quantum)

void close(session_capability)

Microkernel-based Systems Summer School 2013: Genode OS Framework 30

Page 31: Genode OS Framework

Root interface

session_capability session(session_args)

void upgrade(session_capability, upgrade_args)

void close(session_capability)

Microkernel-based Systems Summer School 2013: Genode OS Framework 31

Page 32: Genode OS Framework

Outline

1. Why do we need another operating system?

2. Genode entering the picture

3. Architectural Principles

4. Core - the root of the process tree

5. Inter-process communication

6. Classification of components

7. Kernelization example

8. Components overview

Microkernel-based Systems Summer School 2013: Genode OS Framework 32

Page 33: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Microkernel-based Systems Summer School 2013: Genode OS Framework 33

Page 34: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Debug output

amount write(string)

Microkernel-based Systems Summer School 2013: Genode OS Framework 34

Page 35: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Physical memory

ram_dataspace_capability alloc(size, cached)

void free(ram_dataspace_capability)

void ref_account(ram_session_capability)

void transfer_quota(ram_session_capability, amount)

amount quota()

amount used()

Microkernel-based Systems Summer School 2013: Genode OS Framework 35

Page 36: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Object identities

capability alloc(entrypoint_capability)

void free(capability)

Microkernel-based Systems Summer School 2013: Genode OS Framework 36

Page 37: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Threads

thread_capability create_thread(name)

void kill_thread(thread_capability)

void start(thread_capability, ip, sp)

Microkernel-based Systems Summer School 2013: Genode OS Framework 37

Page 38: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Memory-mapped I/O

Session arguments base, size, write-combined

io_mem_dataspace_capability dataspace()

Microkernel-based Systems Summer School 2013: Genode OS Framework 38

Page 39: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Port-based I/O

Session arguments base, size

value inb(address)

value inw(address)

value inl(address)

void outb(address, value)

void outw(address, value)

void outl(address, value)

Microkernel-based Systems Summer School 2013: Genode OS Framework 39

Page 40: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Device interrupts

Session argument irq number

void wait_for_irq()

Microkernel-based Systems Summer School 2013: Genode OS Framework 40

Page 41: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Protection domain

void bind_thread(thread_capability)

void assign_parent(parent_capability)

Microkernel-based Systems Summer School 2013: Genode OS Framework 41

Page 42: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Access to boot modules

Session argument filename

rom_dataspace_capability dataspace()

Microkernel-based Systems Summer School 2013: Genode OS Framework 42

Page 43: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Address-space management

local_addr attach(dataspace_capability, size, offset,

use_local_addr, local_addr,

executable)

void detach(local_addr)

void add_client(thread_capability thread)

/* managed dataspaces */

dataspace_capability dataspace()

void fault_handler(signal_context_capability)

state state()

Microkernel-based Systems Summer School 2013: Genode OS Framework 43

Page 44: Genode OS Framework

Core services

LOG RAM CAP CPU IO MEM IO PORT IRQ PD ROM RM SIGNAL

Asynchronous signal delivery

signal_context_capability alloc_context(imprint)

void free_context(signal_context_capability)

void submit(signal_context_capability, count)

signal wait_for_signal()

Microkernel-based Systems Summer School 2013: Genode OS Framework 44

Page 45: Genode OS Framework

Default demo scenario

Microkernel-based Systems Summer School 2013: Genode OS Framework 45

Page 46: Genode OS Framework

Configuration

<config>

<parent-provides>

<service name="ROM"/> <service name="RAM"/> <service name="IRQ"/>

<service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/>

<service name="PD"/> <service name="RM"/> <service name="CPU"/>

<service name="LOG"/>

</parent-provides>

<default-route> <any-service> <parent/> <any-child/> </any-service> </default-route>

<start name="pci_drv">

<resource name="RAM" quantum="1M"/>

<provides><service name="PCI"/></provides> </start>

<start name="vesa_drv">

<resource name="RAM" quantum="1M"/>

<provides><service name="Framebuffer"/></provides> </start>

<start name="ps2_drv">

<resource name="RAM" quantum="1M"/>

<provides><service name="Input"/></provides> </start>

<start name="timer">

<resource name="RAM" quantum="1M"/>

<provides><service name="Timer"/></provides> </start>

<start name="nitpicker">

<resource name="RAM" quantum="1M"/>

<provides><service name="Nitpicker"/></provides> </start>

<start name="launchpad">

<resource name="RAM" quantum="32M"/> </start>

</config>

Microkernel-based Systems Summer School 2013: Genode OS Framework 46

Page 47: Genode OS Framework

Screenshot

Microkernel-based Systems Summer School 2013: Genode OS Framework 47

Page 48: Genode OS Framework

Sessions

Microkernel-based Systems Summer School 2013: Genode OS Framework 48

Page 49: Genode OS Framework

Virtualized framebuffer

Microkernel-based Systems Summer School 2013: Genode OS Framework 49

Page 50: Genode OS Framework

Sessions including virtualized framebuffer

Microkernel-based Systems Summer School 2013: Genode OS Framework 50

Page 51: Genode OS Framework

Outline

1. Why do we need another operating system?

2. Genode entering the picture

3. Architectural Principles

4. Core - the root of the process tree

5. Inter-process communication

6. Classification of components

7. Kernelization example

8. Components overview

Microkernel-based Systems Summer School 2013: Genode OS Framework 51

Page 52: Genode OS Framework

Remote procedure calls (RPC)

Microkernel-based Systems Summer School 2013: Genode OS Framework 52

Page 53: Genode OS Framework

Remote procedure calls: Classes

Microkernel-based Systems Summer School 2013: Genode OS Framework 53

Page 54: Genode OS Framework

Remote procedure calls: New RPC object

Microkernel-based Systems Summer School 2013: Genode OS Framework 54

Page 55: Genode OS Framework

Remote procedure calls: Invocation

Microkernel-based Systems Summer School 2013: Genode OS Framework 55

Page 56: Genode OS Framework

Shared memory

Microkernel-based Systems Summer School 2013: Genode OS Framework 56

Page 57: Genode OS Framework

Asynchronous notifications

Microkernel-based Systems Summer School 2013: Genode OS Framework 57

Page 58: Genode OS Framework

Asynchronous notifications (II)

Microkernel-based Systems Summer School 2013: Genode OS Framework 58

Page 59: Genode OS Framework

Mechanisms combined

RPC + shared memory→ Synchronous bulk data (transaction)

Asynchronous notifications + shared memory→ Asynchronous bulk data (streaming)

Microkernel-based Systems Summer School 2013: Genode OS Framework 59

Page 60: Genode OS Framework

Synchronous bulk data transfer

Microkernel-based Systems Summer School 2013: Genode OS Framework 60

Page 61: Genode OS Framework

Asynchronous bulk data transfer

Microkernel-based Systems Summer School 2013: Genode OS Framework 61

Page 62: Genode OS Framework

Packet stream in detail

Packet descriptor

Allocated by sourceEnqueued in submit / acknowledgement queueDescribes portion of bulk buffer (offset, size)Carries domain-specific control information

Conditions

Submit queue is fullSubmit queue is emptyAcknowledgement queue is fullAcknowledgement queue is empty→ wakeup via signals

Microkernel-based Systems Summer School 2013: Genode OS Framework 62

Page 63: Genode OS Framework

Packet stream example

Microkernel-based Systems Summer School 2013: Genode OS Framework 63

Page 64: Genode OS Framework

Outline

1. Why do we need another operating system?

2. Genode entering the picture

3. Architectural Principles

4. Core - the root of the process tree

5. Inter-process communication

6. Classification of components

7. Kernelization example

8. Components overview

Microkernel-based Systems Summer School 2013: Genode OS Framework 64

Page 65: Genode OS Framework

Classification

Kernel enables base platform

Device driver translates device interface to API

Protocol stack translates API to API

Application is leaf node in process tree

Runtime environment has one or more children

Resource multiplexer has multiple clients

combinations are possible

Microkernel-based Systems Summer School 2013: Genode OS Framework 65

Page 66: Genode OS Framework

Kernel

Microkernel-based Systems Summer School 2013: Genode OS Framework 66

Page 67: Genode OS Framework

Device driver

Translates device interface to session interface

Uses core’s IO MEM, IO PORT, IRQ services

Single client

Contains no policy

Enforces policy (device-access arbitration)

Microkernel-based Systems Summer School 2013: Genode OS Framework 67

Page 68: Genode OS Framework

Device driver (2)

Critical because of DMA

MMU protects physical memory from driver codeDriver code accesses device via MMIODevice has access to whole physical memory (DMA)

→ Device driver can access whole physical memory

IOMMUs can help ...but are no golden bullet

Microkernel-based Systems Summer School 2013: Genode OS Framework 68

Page 69: Genode OS Framework

Device driver (3)

Even with no IOMMU, isolating drivers has benefits

Taming classes of non-DMA-related bugs

I Memory leaksI Synchronization problems, dead-locksI Flawed driver logic, wrong state machinesI Device initialization

Minimizing attack surface from the outside

Microkernel-based Systems Summer School 2013: Genode OS Framework 69

Page 70: Genode OS Framework

Protocol stack

Translates API to another (or the same) API

Does not enforce policy

Single client

May be co-located with device driver

Microkernel-based Systems Summer School 2013: Genode OS Framework 70

Page 71: Genode OS Framework

Protocol stack (2)

Libraries

Library Translation

Qt4 Qt4 API → various Genode sessionslwIP socket API → NIC session

Components translating sessions

Component Translation

TCP terminal Terminal session → NIC sessioniso9660 ROM session → Block sessionffat fs File-system session → Block session

Microkernel-based Systems Summer School 2013: Genode OS Framework 71

Page 72: Genode OS Framework

Protocol stack (3)

Components that filter sessions

Microkernel-based Systems Summer School 2013: Genode OS Framework 72

Page 73: Genode OS Framework

Protocol stack (4)

Operate on session interfaces, not physical resources

→ May be instantiated any number of times

→ Critical for availablility

→ Not neccessarily critical for integrity and confidentiality

→ Information leakage constrained to used interfaces

complex code should go in here

Microkernel-based Systems Summer School 2013: Genode OS Framework 73

Page 74: Genode OS Framework

Application

Leaf node in process tree

Uses services

Implements application logic

Provides no service

Microkernel-based Systems Summer School 2013: Genode OS Framework 74

Page 75: Genode OS Framework

Runtime environment

Hosts other processes as children

Defines and imposes policy!

Examples

InitVirtual machine monitorDebuggerPython interpreter

Microkernel-based Systems Summer School 2013: Genode OS Framework 75

Page 76: Genode OS Framework

Resource multiplexer

Multiplexes session interface

Multiple clients → Potential multi-level component

Free from policy

Enforce policy dictated by parent

Prone to cross-client information leakage

Prone to resource-exhaustion-based DoS

Microkernel-based Systems Summer School 2013: Genode OS Framework 76

Page 77: Genode OS Framework

Resource multiplexer (2)

→ Often as critical as the kernel

→ Must be as low complex as possible

→ Must work on client-provided resources

→ Must employ heap partitioning

only a few resource multiplexers needed

Microkernel-based Systems Summer School 2013: Genode OS Framework 77

Page 78: Genode OS Framework

Outline

1. Why do we need another operating system?

2. Genode entering the picture

3. Architectural Principles

4. Core - the root of the process tree

5. Inter-process communication

6. Classification of components

7. Kernelization example

8. Components overview

Microkernel-based Systems Summer School 2013: Genode OS Framework 78

Page 79: Genode OS Framework

Case study: Kernelizing the GUI server

Persistent security problems of GUIs

Impersonation(Trojan horses, phishing, man in the middle)Spyware(input loggers, arcane observers)Robustness/availability risks(resource-exhaustion-based denial of service

GUI belongs to TCB → low complexity is important!

Microkernel-based Systems Summer School 2013: Genode OS Framework 79

Page 80: Genode OS Framework

Starting point: DOpE as secure GUI

Microkernel-based Systems Summer School 2013: Genode OS Framework 80

Page 81: Genode OS Framework

DOpE as secure GUI - Drawbacks

Prone to resource exhaustion by malicious clientsProvides custom look and feel*

I Stands in the way when using legacy softwareI May be enhanced by theme support

Complexity of 12,000 LOC

Microkernel-based Systems Summer School 2013: Genode OS Framework 81

Page 82: Genode OS Framework

Straight-forward attempt: Shrinking DOpE

Revisiting the implementation

Keeping only essential functionality→ 7,000 LOC

We loose:

Majority of widgets (grid, scale, scrollbar, etc.)Flexible command interfaceCoolness, fancyness, convenienceReal-time support

7,000 LOC are too much for such a crippled GUI!

Microkernel-based Systems Summer School 2013: Genode OS Framework 82

Page 83: Genode OS Framework

Bottom-up approach

What do we really need in the GUI server?

Widgets? → NoFont support? → NoWindow decoration? → NoTextual command interface? → NoLook and feel, gradients, translucency? → NoHardware abstractions (e. g., color-space conversion)? → NoWindows displaying pixel buffers? → YESDistribution of input events? → YESSecure labeling? → YES

Microkernel-based Systems Summer School 2013: Genode OS Framework 83

Page 84: Genode OS Framework

Buffers and views

Microkernel-based Systems Summer School 2013: Genode OS Framework 84

Page 85: Genode OS Framework

User interaction

Input-event handling

Only one receiver of each input eventFocused view defines input routingRouting controlled by the user only

Microkernel-based Systems Summer School 2013: Genode OS Framework 85

Page 86: Genode OS Framework

Client-side window handling

Report motion events to focused view while a button is pressed→ Client-side window policies (move, resize, stacking)→ Key for achieving low server-side complexity

Emergency break→ Special key regains control over misbehaving applications

Microkernel-based Systems Summer School 2013: Genode OS Framework 86

Page 87: Genode OS Framework

Trusted path

It is not sufficient to label windows!

A Trojan Horse could present an image of a secure windowNot the secure window must be marked, but all others!

Revoke some degree of freedom from the clients

Dedicated screen area, reserved for the trusted GUIRevoking the ability to use the whole color space

→ X-Ray mode, activated by special key (x-ray key)

Microkernel-based Systems Summer School 2013: Genode OS Framework 87

Page 88: Genode OS Framework

Trusted path (2)

Microkernel-based Systems Summer School 2013: Genode OS Framework 88

Page 89: Genode OS Framework

Nitpicker results

Source-code complexity

GUI server Lines of code

X.org > 80,000Trusted X 30,000DOpE 12,000EWS 4,500Nitpicker < 2,000

Low performance overhead, no additional copyLow-complexity clients are possible (Scout: 4,000 LOC)

Microkernel-based Systems Summer School 2013: Genode OS Framework 89

Page 90: Genode OS Framework

Nitpicker results (2)

Support for legacy softwareProtection against spywareHelps to uncover Trojan horsesLow source-code complexity

→ Poster child of a resource multiplexer

Microkernel-based Systems Summer School 2013: Genode OS Framework 90

Page 91: Genode OS Framework

Outline

1. Why do we need another operating system?

2. Genode entering the picture

3. Architectural Principles

4. Core - the root of the process tree

5. Inter-process communication

6. Classification of components

7. Kernelization example

8. Components overview

Microkernel-based Systems Summer School 2013: Genode OS Framework 91

Page 92: Genode OS Framework

Interfaces

LOG Unidirectional debug output

Terminal Bi-directional input and outputsynchronous bulk

Timer Facility to block the client

Input Obtain user inputsynchronous bulk

Framebuffer Display pixel buffersynchronous bulk

PCI Represents PCI bus, find and obtain PCI devices

Microkernel-based Systems Summer School 2013: Genode OS Framework 92

Page 93: Genode OS Framework

Interfaces (2)

ROM Obtain read-only data modulesshared memory

Block Block-device accesspacket stream

File system File-system accesspacket stream

NIC Bi-directional transfer of network packets2 x packet stream

Audio out Audio outputpacket stream

Microkernel-based Systems Summer School 2013: Genode OS Framework 93

Page 94: Genode OS Framework

Device drivers

Session type Location

Timer os/src/drivers/timer

Block os/src/drivers/atapi

os/src/drivers/ahci

os/src/drivers/sd card

dde linux/src/drivers/usb drv

Input os/src/drivers/input/ps2

dde linux/src/drivers/usb drv

Framebuffer os/src/drivers/framebuffer/vesa

os/src/drivers/framebuffer/sdl

os/src/drivers/framebuffer/pl11x

os/src/drivers/framebuffer/omap4

Audio out linux drivers/src/drivers/audio out

Terminal os/src/drivers/uart

NIC dde ipxe/src/drivers/nic

dde linux/src/drivers/usb drv

PCI os/src/drivers/pci

Microkernel-based Systems Summer School 2013: Genode OS Framework 94

Page 95: Genode OS Framework

Resource multiplexers and protocol stacks

Session type Location

LOG os/src/server/terminal log

demo/src/server/nitlog

Framebuffer, demo/src/server/liquid framebuffer

Input os/src/server/nit fb

Nitpicker os/src/server/nitpicker

Terminal os/src/server/terminal crosslink

gems/src/server/terminal

gems/src/server/tcp terminal

Microkernel-based Systems Summer School 2013: Genode OS Framework 95

Page 96: Genode OS Framework

Resource multiplexers and protocol stacks (2)

Session type Location

Audio out os/src/server/mixer

NIC os/src/server/nic bridge

ROM os/src/server/rom prefetcher

os/src/server/tar rom

os/src/server/iso9660

Block os/src/server/rom loopdev

os/src/server/part blk

gems/src/server/http block

File system os/src/server/ram fs

libports/src/server/ffat fs

Microkernel-based Systems Summer School 2013: Genode OS Framework 96

Page 97: Genode OS Framework

Protocol-stack libraries

API Location

POSIX libports/lib/mk/libc.mk

libports/lib/mk/libc log.mk

libports/lib/mk/libc fs.mk

libports/lib/mk/libc rom.mk

libports/lib/mk/libc lwip.mk

libports/lib/mk/libc ffat.mk

libports/lib/mk/libc lock pipe.mk

libports/lib/mk/libc terminal.mk

Qt4 qt4/lib/mk/qt *

OpenGL libports/lib/mk/gallium.mk

Microkernel-based Systems Summer School 2013: Genode OS Framework 97

Page 98: Genode OS Framework

Runtime environments

Runtime Location

Init os/src/init

Loader os/src/server/loader

L4Linux ports-foc/src/l4linux

L4Android ports-foc/src/l4android

OKLinux ports-okl4/src/oklinux

Vancouver ports/src/vancouver

Noux ports/src/noux

GDB Monitor ports/src/app/gdb monitor

Python libports/lib/mk/x86 32/python.mk

Lua libports/lib/mk/moon.mk

Microkernel-based Systems Summer School 2013: Genode OS Framework 98

Page 99: Genode OS Framework

Thank you

Genode OS Frameworkhttp://genode.org

Genode Labs GmbHhttp://www.genode-labs.com

Source code at GitHubhttp://github.com/genodelabs/genode

Microkernel-based Systems Summer School 2013: Genode OS Framework 99