gnu/hurd aka extensibility from the ground · 29 neighbour/sub-hurd looks like linux containers...

32
1 GNU/Hurd AKA Extensibility from the Ground Samuel Thibault 2011 August 26th

Upload: others

Post on 03-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

1

GNU/HurdAKA

Extensibility from the Ground

Samuel Thibault

2011 August 26th

Page 2: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

2

<marcus> Jeroen: you are a Hurd developer. Being insane is part of the public image.

Page 3: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

3

It's all about freedom #0

Extensibility for the user

● Mount one's own files● Access archives content

● Access remote files

● Experiment with filesystems

● Access one's own network● Access remote networks / VPN

● Access virtual machine network

● Redirect one's sound● Through network

● Sound effects

● Recording

● ...

Page 4: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

4

Outline

● The big hammer● Traditional monolithic layering● Gvfs layering● FUSE layering● Micro-kernel layering

Page 5: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

5

Outline

● The big hammer● Traditional monolithic layering● Gvfs layering● FUSE layering● Micro-kernel layering● Hurd possibilities

Page 6: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

6

Outline

● The big hammer● Traditional monolithic layering● Gvfs layering● FUSE layering● Micro-kernel layering● Hurd possibilities● So what?

Page 7: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

7

Outline

● The big hammer● Traditional monolithic layering● Gvfs layering● FUSE layering● Micro-kernel layering● Hurd possibilities● So what?● Yet more fun

Page 8: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

8

The big hammer

Just run KVM/qemu/virtualbox/whatever!● Quite slower

● and kvm not available to users by default

● Communication between guest and host is a burden

Goal: having extensibility simply at the shell prompt

Page 9: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

9

Traditional monolithic layering

EXTxFS ISOFS NFS

VFS

IPKernel

root user

ifconfig

mount

sh

cp

Page 10: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

10

Traditional monolithic layering

● User mounts through “users” option● Need to ask root

– and frowned upon● Only kernel-provided filesystems

● User network through tap● Need to ask root● No firewall tuning support

Page 11: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

11

gvfs layering

EXTxFS ISOFS NFS

VFS

cp

IPKernel

root user

ifconfig

mount

sh

gvfsgedit

Page 12: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

12

gvfs layering

● Supports a lot of nice features● Transparent ftp, webdav, smb, ...

● Only works for gnome applications● Not even in gnome-terminal shells● Not easily extensible

● i.e., does not compose well.

Page 13: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

13

FUSE layering

EXTxFS ISOFS NFS

IP

user

ifconfig

mount

sh

cp

FUSE

VFS

root

fuse

Kernel

Page 14: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

14

FUSE layering, user

EXTxFS ISOFS NFS

ifconfig

mountfuse

IP

sh

cp

FUSE

VFS

root

Kernel

user

Page 15: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

15

FUSE layering

● Provides a lot of nice features, but● Does not combine well by default

● cd ~/.avfs/#ftp:ftp.gnu.org/.../coreutils-6.9.tar.bz2#

● does not work

● Does not optimize well by default● fuseiso9660 ~/.avfs/#ftp:ftp.gnu.org/.../foo.iso ~/mnt

● downloads it all!

● Does not provide all root features by default● How to deal with partitioned disk image?● e2fsck what?

→ Users are still second-class citizens

Page 16: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

16

Micro-kernel layering

pfinetproc

auth

ext2fs

root user

sh

cp

Kernel Tasks, memory, IPC

Page 17: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

17

Micro-kernel layering

pfinetproc

auth

ext2fs

root user

sh

cp

Kernel Tasks, memory, IPC

Page 18: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

18

Micro-kernel layering

● Server crash? Not a problem● “Computer bought the farm” is just an error, not

something-of-the-death

● Easier to debug/tune● Just run gdb, gprof, …

● Can dare crazy things● The Hurd console has dynamic font support

– See chinese support in pseudo-graphical mode of Debian installer.

● Kernel only handles Tasks, memory, IPC

Page 19: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

19

Hurd possibilities

isofs

Kernel

pfinetproc

auth

ext2fs

root user

sh

cp

ftpfs

Page 20: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

20

Hurd possibilities

$ settrans ~/ftp: /hurd/hostmux /hurd/ftpfs /

(just once for good)

$ settrans ~/mnt /hurd/iso9660fs ~/ftp://ftp.gnu.org/old-gnu/gnu-f2/hurd-F2-main.iso

$ ls ~/mnt

README-or-FAIL

● Only downloads what is needed.

● Can be permanentsettrans ~/.signature /hurd/run /usr/games/fortune

Page 21: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

21

How does it work?

isofs

Kernel

pfinetproc

auth

ext2fs

root user

ftpfssh

cplibc

libc

Page 22: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

22

Hurd possibilities (cont'ed)

ftpfs

isofs

Kernel

root

pfinet

ext2fs

auth

proc pfinetuser

ext2fs

part

sh

cp

Page 23: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

23

Hurd possibilities (cont'ed)

ftpfs

isofs

Kernel

root

pfinet

ext2fs

auth

proc pfinetuser

ext2fs

part

sh

cp

i.e. ISO image inside a disk image on ftp over a VPN

Page 24: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

24

Hurd possibilities (cont'ed)

● VPN running as user

● Parted running as user

● Chroot as user

● ...

● No less power than root● Since root uses the same mechanism anyway!● Except hardware access, of course

– And still, could be interfaced safely thanks to I/O MMU

● More power for everybody (root and non-root)● Combine translators, invent new ones without kernel

programming, ...

Page 25: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

25

So, FUSE vs Hurd?

● FUSE is here● At last!● Not available by default on Linux installations● Does not permit everything to users

● Hurd is here too● At last!● Provides everything by default

– Including ioctls, arbitrary RPCs actually, could have a node which is a file, AND a directory, AND a CD drive,...

● Permits everything to users– Hardware access is controlled

Page 26: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

26

Neighbour Hurds

pfinetproc

auth

ext2fs

root

cpshuser

pfinetproc

auth

ext2fs

root

cpshuser

Kernel

Page 27: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

27

Neighbour Hurds

cpsh cpsh

pfinet

Kernel

user user

proc

auth

ext2fs

rootproc

auth

ext2fs

root

Page 28: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

28

Sub-Hurd

pfinetproc

auth

ext2fs

root

sh

cp

Kernel

user

pfinetproc

auth

ext2fs

user/root

Page 29: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

29

Neighbour/Sub-Hurd

Looks like Linux containers● Except they can be combined in many ways,

including recursive● Since it is simply the standard features in the Hurd● Since it is safer, because ext2fs, pfinet, etc. are not

shared

● And complete● Since that's how a normal Hurd system is structured

already.– Linux containers have a hard time being completely contained,

e.g. sound?

Page 30: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

30

Current State

● Hardware support● DDE Linux 2.6 drivers layer for network boards● IDE, SCSI, PCMCIA, Xorg, ...● Xen domU

● Software support● ~68% of Debian archive

– XFCE, almost gnome, almost KDE

– Firefox (aka iceweasel), gnumeric, …

● Standard Debian Installation CD● Plan to release in Debian Wheezy● Arch Hurd LiveCD and GHAMP

Page 31: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

31

People at work nowadays

● Emilio Pozuelo Monfort : gnome● Jeremie Koenig : glibc, openjdk● Olaf Buddenhagen : community, mentor● Pino Toscano : KDE● Samuel Thibault : debian installer, autobuilders● Thomas Schwinge : GNU gdb, gcc● And various porters : Gabriele Giacone, Svante

Signell, …● You're welcome!

Page 32: GNU/Hurd AKA Extensibility from the Ground · 29 Neighbour/Sub-Hurd Looks like Linux containers Except they can be combined in many ways, including recursive Since it is simply the

32

Thanks!

● http://hurd.gnu.org/

● http://www.debian.org/ports/hurd/

● http://people.debian.org/~mbanck/debian-hurd.pdf

● The increasing irrelevance of IPC performance for microkernel-based Operating Systems

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.37.9653&rep=rep1&type=pdf