gnu/hurd aka extensibility from the ground
TRANSCRIPT
![Page 1: GNU/Hurd AKA Extensibility from the Ground](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/1.jpg)
1
GNU/HurdAKA
Extensibility from the Ground
Samuel Thibault
2011 August 26th
![Page 2: GNU/Hurd AKA Extensibility from the Ground](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/4.jpg)
4
Outline
● The big hammer● Traditional monolithic layering● Gvfs layering● FUSE layering● Micro-kernel layering
![Page 5: GNU/Hurd AKA Extensibility from the Ground](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/9.jpg)
9
Traditional monolithic layering
EXTxFS ISOFS NFS
VFS
IPKernel
root user
ifconfig
mount
sh
cp
![Page 10: GNU/Hurd AKA Extensibility from the Ground](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/11.jpg)
11
gvfs layering
EXTxFS ISOFS NFS
VFS
cp
IPKernel
root user
ifconfig
mount
sh
gvfsgedit
![Page 12: GNU/Hurd AKA Extensibility from the Ground](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/16.jpg)
16
Micro-kernel layering
pfinetproc
auth
ext2fs
root user
sh
cp
Kernel Tasks, memory, IPC
![Page 17: GNU/Hurd AKA Extensibility from the Ground](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/17.jpg)
17
Micro-kernel layering
pfinetproc
auth
ext2fs
root user
sh
cp
Kernel Tasks, memory, IPC
![Page 18: GNU/Hurd AKA Extensibility from the Ground](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/19.jpg)
19
Hurd possibilities
isofs
Kernel
pfinetproc
auth
ext2fs
root user
sh
cp
ftpfs
![Page 20: GNU/Hurd AKA Extensibility from the Ground](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/21.jpg)
21
How does it work?
isofs
Kernel
pfinetproc
auth
ext2fs
root user
ftpfssh
cplibc
libc
![Page 22: GNU/Hurd AKA Extensibility from the Ground](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/24.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/25.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/26.jpg)
26
Neighbour Hurds
pfinetproc
auth
ext2fs
root
cpshuser
pfinetproc
auth
ext2fs
root
cpshuser
Kernel
![Page 27: GNU/Hurd AKA Extensibility from the Ground](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/27.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/28.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/29.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/30.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/31.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022020703/61fb3cf22e268c58cd5bcc9b/html5/thumbnails/32.jpg)
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