reaching puberty: how genode is becoming a general-purpose os

42
Reaching puberty: How Genode is becoming a general-purpose OS Norman Feske <[email protected]>

Upload: others

Post on 19-May-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Reaching puberty: How Genode is becoming a general-purpose OS

Reaching puberty:How Genode is becoming

a general-purpose OS

Norman Feske<[email protected]>

Page 2: Reaching puberty: How Genode is becoming a general-purpose OS

Outline

1. Background

2. Noux runtime for Unix software

3. Challenges of dynamic system composition

4. Fundamental features

5. Current ventures

Reaching puberty: How Genode is becoming a general-purpose OS 2

Page 3: Reaching puberty: How Genode is becoming a general-purpose OS

Outline

1. Background

2. Noux runtime for Unix software

3. Challenges of dynamic system composition

4. Fundamental features

5. Current ventures

Reaching puberty: How Genode is becoming a general-purpose OS 3

Page 4: Reaching puberty: How Genode is becoming a general-purpose OS

Genode in a nut shell

→ Application-specific TCB

Reaching puberty: How Genode is becoming a general-purpose OS 4

Page 5: Reaching puberty: How Genode is becoming a general-purpose OS

Combined with virtualization

Reaching puberty: How Genode is becoming a general-purpose OS 5

Page 6: Reaching puberty: How Genode is becoming a general-purpose OS

Genode OS Framework

Reaching puberty: How Genode is becoming a general-purpose OS 6

Page 7: Reaching puberty: How Genode is becoming a general-purpose OS

Genode OS Framework (2)

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

Reaching puberty: How Genode is becoming a general-purpose OS 7

Page 8: Reaching puberty: How Genode is becoming a general-purpose OS

Eating our own dog food

Reaching puberty: How Genode is becoming a general-purpose OS 8

Page 9: Reaching puberty: How Genode is becoming a general-purpose OS

Noux runtime for Unix software

Idea: Provide Unix kernel interface as a service

fundamentals

write, readstat, lstat, fstat, fcntlioctl

open, close, lseekdirent

getcwd, fchdirselect

execve, fork, wait4getpid

pipe

dup2

unlink, rename, mkdir

networking

socket

getsockopt, setsockoptaccept

bind

listen

send, sendtorecv, recvfromgetpeername

shutdown

connect

getaddrinfo

In contrast, Linux has more than 300 syscalls

Reaching puberty: How Genode is becoming a general-purpose OS 9

Page 10: Reaching puberty: How Genode is becoming a general-purpose OS

Noux runtime for Unix software (2)

Things we don’t need to consider

Interaction with device driversUnix initialization sequenceUsers, groupsInstance never shared by multiple usersThe opposite: One user may run many instancesMulti-threadingScalability of a single instanceEach instance serves one specific (limited) purposeRun many instances in order to scale!

Reaching puberty: How Genode is becoming a general-purpose OS 10

Page 11: Reaching puberty: How Genode is becoming a general-purpose OS

Noux runtime for Unix software (3)

Reaching puberty: How Genode is becoming a general-purpose OS 11

Page 12: Reaching puberty: How Genode is becoming a general-purpose OS

Noux: Running VIM

noux config

<config>

<fstab> <tar name="vim.tar" /> </fstab>

<start name="/bin/vim">

<env name="TERM" value="linux" />

<arg value="--noplugin" />

<arg value="-n" /> <!-- no swap file -->

<arg value="-N" /> <!-- no-compatible mode -->

</start>

</config>

Reaching puberty: How Genode is becoming a general-purpose OS 12

Page 13: Reaching puberty: How Genode is becoming a general-purpose OS

Noux: Bash + file system

noux config

<config>

<fstab>

<tar name="coreutils.tar" />

<tar name="vim.tar" />

<tar name="bash.tar" />

<dir name="home"> <fs label="home" /> </dir>

<dir name="ram"> <fs label="root" /> </dir>

<dir name="tmp"> <fs label="tmp" /> </dir>

</fstab>

<start name="/bin/bash">

<env name="TERM" value="linux" />

</start>

</config>

Reaching puberty: How Genode is becoming a general-purpose OS 13

Page 14: Reaching puberty: How Genode is becoming a general-purpose OS

Noux: Bash + file system (2)

ram fs config

<config>

<content>

<dir name="tmp">

<rom name="init" as="something" />

</dir>

<dir name="home">

<dir name="user">

<rom name="timer" />

</dir>

</dir>

</content>

<policy label="noux -> root" root="/" />

<policy label="noux -> home" root="/home/user" writeable="yes" />

<policy label="noux -> tmp" root="/tmp" writeable="yes" />

</config>

Reaching puberty: How Genode is becoming a general-purpose OS 14

Page 15: Reaching puberty: How Genode is becoming a general-purpose OS

Noux features

Executes unmodified GNU softwareBash, VIM, GCC, Coreutils, Lynx...

Supports stacked file systems

Instance starts in fraction of a second

Uses original GNU build system → Porting software is easy

Two versionsI noux/minimalI noux/net (includes TCP/IP)

less than 5,000 LOC

Reaching puberty: How Genode is becoming a general-purpose OS 15

Page 16: Reaching puberty: How Genode is becoming a general-purpose OS

Outline

1. Background

2. Noux runtime for Unix software

3. Challenges of dynamic system composition

4. Fundamental features

5. Current ventures

Reaching puberty: How Genode is becoming a general-purpose OS 16

Page 17: Reaching puberty: How Genode is becoming a general-purpose OS

Unified configuration concept

Reaching puberty: How Genode is becoming a general-purpose OS 17

Page 18: Reaching puberty: How Genode is becoming a general-purpose OS

Unified configuration concept (II)

Reaching puberty: How Genode is becoming a general-purpose OS 18

Page 19: Reaching puberty: How Genode is becoming a general-purpose OS

Unified configuration concept (III)

→ Uniform syntax

→ Extensible through custom tags at each level

→ XML parser adds less than 300 LOC to TCB

Reaching puberty: How Genode is becoming a general-purpose OS 19

Page 20: Reaching puberty: How Genode is becoming a general-purpose OS

Dynamic system configuration

Problems

Change screen resolution at runtimeAudio-mixing parametersTouchscreen calibrationResizing terminal windowsPolicy for hot-plugged device resources

Reaching puberty: How Genode is becoming a general-purpose OS 20

Page 21: Reaching puberty: How Genode is becoming a general-purpose OS

Dynamic system configuration (2)

Straight-forward approachIntroduce problem-specific RPC interfaces

Disadvantages

New RPC interfaces → added complexity

Specific to the server implementation

Redundancy to existing (static) configuration concept

Reaching puberty: How Genode is becoming a general-purpose OS 21

Page 22: Reaching puberty: How Genode is becoming a general-purpose OS

Dynamic system configuration (3)

Generalized solution

Turn static config mechanism into dynamic mechanism

How?

Add single RPC function to ROM session interface:

void sigh(Signal_context_capability sigh)

Client responds to signal by re-acquiring session resources

Reaching puberty: How Genode is becoming a general-purpose OS 22

Page 23: Reaching puberty: How Genode is becoming a general-purpose OS

Dynamic system configuration (4)

Reaching puberty: How Genode is becoming a general-purpose OS 23

Page 24: Reaching puberty: How Genode is becoming a general-purpose OS

Loader service

Challenges

Start and stop subsystems at runtimeControlled by softwareDecouple started subsystem from controlling software

Solution

Trusted loader serviceClient paysClient configures subsystemClient cannot interfere during runtime

Reaching puberty: How Genode is becoming a general-purpose OS 24

Page 25: Reaching puberty: How Genode is becoming a general-purpose OS

Loader service

Reaching puberty: How Genode is becoming a general-purpose OS 25

Page 26: Reaching puberty: How Genode is becoming a general-purpose OS

Outline

1. Background

2. Noux runtime for Unix software

3. Challenges of dynamic system composition

4. Fundamental features

5. Current ventures

Reaching puberty: How Genode is becoming a general-purpose OS 26

Page 27: Reaching puberty: How Genode is becoming a general-purpose OS

File-system infrastructure

FreeBSD libc turned into modular C runtime

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

→ application-specific plugins

Reaching puberty: How Genode is becoming a general-purpose OS 27

Page 28: Reaching puberty: How Genode is becoming a general-purpose OS

File-system infrastructure (2)

Reaching puberty: How Genode is becoming a general-purpose OS 28

Page 29: Reaching puberty: How Genode is becoming a general-purpose OS

File-system infrastructure (3)

Reaching puberty: How Genode is becoming a general-purpose OS 29

Page 30: Reaching puberty: How Genode is becoming a general-purpose OS

Media playback

Reaching puberty: How Genode is becoming a general-purpose OS 30

Page 31: Reaching puberty: How Genode is becoming a general-purpose OS

Media playback (2)

Reaching puberty: How Genode is becoming a general-purpose OS 31

Page 32: Reaching puberty: How Genode is becoming a general-purpose OS

User-level debugging

Reaching puberty: How Genode is becoming a general-purpose OS 32

Page 33: Reaching puberty: How Genode is becoming a general-purpose OS

User-level debugging (2)

Reaching puberty: How Genode is becoming a general-purpose OS 33

Page 34: Reaching puberty: How Genode is becoming a general-purpose OS

User-level debugging (3)

Reaching puberty: How Genode is becoming a general-purpose OS 34

Page 35: Reaching puberty: How Genode is becoming a general-purpose OS

Compiling Genode on Genode

Construction sites

KernelsBase systemC runtime, 3rd-party librariesNouxPorting the tool-chain componentsGCC, binutils, GNU make, findutils

→ Insightful lessons about application performance

Reaching puberty: How Genode is becoming a general-purpose OS 35

Page 36: Reaching puberty: How Genode is becoming a general-purpose OS

Outline

1. Background

2. Noux runtime for Unix software

3. Challenges of dynamic system composition

4. Fundamental features

5. Current ventures

Reaching puberty: How Genode is becoming a general-purpose OS 36

Page 37: Reaching puberty: How Genode is becoming a general-purpose OS

User interface concept

Genode’s architecture calls for tailored UI concept

Ingredients Nitpicker, framebuffer drivers, input drivers

Desired

Convenient command-line interfaceScriptingFlexibilitymulti-head, virtual desktops, different window layoutsResource management

Reaching puberty: How Genode is becoming a general-purpose OS 37

Page 38: Reaching puberty: How Genode is becoming a general-purpose OS

Performance and scalability

Multi-processor supportI NUMAI Challenge: Platform-independent APII Facilitating Genode’s recursive structure

StorageI/O scheduling, caching

Networking (i. e., TCP/IP performance)

ToolsProfiling, debugging, tracing

Reaching puberty: How Genode is becoming a general-purpose OS 38

Page 39: Reaching puberty: How Genode is becoming a general-purpose OS

Networking and security

IOMMU support on NOVA

Trusted computing

→ Network of Genode systems

Capability-based security on Linux

Reaching puberty: How Genode is becoming a general-purpose OS 39

Page 40: Reaching puberty: How Genode is becoming a general-purpose OS

Noux: Unix networking tools

Needed command-line tools

netcat, wget, ...Lynx + SSLSSHGit

ApproachIntegrate lwIP into Noux runtime

→ One TCP/IP stack per Noux instances

Reaching puberty: How Genode is becoming a general-purpose OS 40

Page 41: Reaching puberty: How Genode is becoming a general-purpose OS

A lot more...

More light-weight device-driver environments (e. g., OSS)

ARM TrustZone

Hardware support (e. g., ARM SoCs)

HelenOS Spartan kernel

“Real” file system

Virtual NAT

Genode on FPGA softcores

Reaching puberty: How Genode is becoming a general-purpose OS 41

Page 42: Reaching puberty: How Genode is becoming a general-purpose OS

Thank you

Genode OS Frameworkhttp://genode.org

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

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

Reaching puberty: How Genode is becoming a general-purpose OS 42