reaching puberty: how genode is becoming a general-purpose os
TRANSCRIPT
![Page 2: Reaching puberty: How Genode is becoming a general-purpose OS](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022052004/6285b00039e033156d3384d1/html5/thumbnails/42.jpg)
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