A roadmap for the Hurd? Samuel Thibault 2019 February 3rd 1
The Hurd is all about freedom #0 “The freedom to run the program, for any purpose” I.e.: ● Freedom from sysadmin! ● WTH is fdisk/mke2fs/... hidden in /sbin? ● I should be able to just work with my disk/network access ● Freedom to innovate ● Experimental filesystem, personal work-flow, new kind of process combination,… ● Give a PCI card function to a process ● Freedom from misbehaving programs and drivers 2
Micro-kernel layering e x t 2 f s s h a u t h c p p fj n e t p r o c r o o t u s e r K e r n e l T a s k s , m e m o r y , I P C 15
Micro-kernel layering e x t 2 f s s h a u t h c p p fj n e t p r o c r o o t u s e r K e r n e l T a s k s , m e m o r y , I P C 16
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 (actually pure VGA textmode!) of Debian installer. – And Emojis! ● Kernel only handles Tasks, memory, IPC ● Can virtualize at a very fine grain 17
Hurd possibilities e x t 2 f s s h f t p f s a u t h c p p fj n e t p r o c i s o f s r o o t u s e r K e r n e l 18
Hurd possibilities € s e t t r a n s - c ~ / f t p : / h u r d / h o s t m u x / h u r d / f t p f s / ( j u s t o n c e f o r g o o d ) € s e t t r a n s - a ~ / m n t / h u r d / i s o 9 6 6 0 f s ~ / f t p : / / f t p . g n u . o r g / o l d - g n u / g n u - f 2 / h u r d - F 2 - m a i n . i s o € l s ~ / m n t R E A D M E - o r - F A I L … ● Only downloads what is needed. ● Can be permanently stored in ext2fs € s e t t r a n s ~ / . s i g n a t u r e / h u r d / r u n / u s r / g a m e s / f o r t u n e 19
Current state ● Quite stable ● Have not reinstalled boxes for a decade ● Debian buildds keep building packages, no hang after weeks! ● ~75% of Debian archive builds out of tree ● XFCE, gnome, KDE, … ● Support merged upstream: gcc, glibc, llvm ● Ongoing: go, rust ● Debian distribution ● GuixSD/Arch ongoing 20
A roadmap? ● Many many existing bits, just needs polishing ● The tail of “90% support done in 10% time, 10% support done in 90%time” ● But would be so cool to have really working! ● Many ongoing project ideas ● Would welcome help ● Many crazy ideas ● Would welcome experimenting 21
Bits to polish ● httpfs/ftpfs ● cd /http://ftp.debian.org/debian/pool/main/h/hurd ● dpkg -iO *20181030-2*.deb ● cd /ftp://ftp.gnu.org/ ● find . -name emacs\* 22
Bits to polish ● Namespace-based translators ● cd software.tar.gz,,/ ● cat README ● cd disk.img,,part1,,ext2fs/ 23
Bits to polish ● mboxfs ● cd mbox,,/ ● mkdir that_man ● mv $(grep -l that@mail *) that_man 24
Bits to polish ● Xmlfs ● cd index.html,,/ ● cd html/body/ ● for i in $(find . -name h1); do cat $i/.text ; done 25
Bits to polish ● High-level language bindings for translators ● Perl (pith) ● Lisp ● Java ● Python 26
Bits to polish ● Some more in hurdextras/ ● jfs ● notice ● run ● unionfs 27
Ongoing work, welcomes help ● PCI arbiter ● Safe concurrent access to PCI config space ● Seed FOSDEM’18 talk Hurd’s PCI arbiter ● Could use an IO-MMU to make it safe ● ACPI translator ● Provide access to ACPI operations – System shutdown… ● Rump translator (and libguestfs?) ● Hardware support, filesystems support ● See FOSDEM’16 talk Hurd, Rump kernel, sound, and USB ● 64bit kernel support ● Then on 64bit userland support ● SMP support 28
No driver in the kernel? ● Minimal kernel support ● Tasks, memory, IPC ● But also, ATM ● Disk drivers ● We moved network drivers to userspace thanks to netdde ● See FOSDEM’14 talk GNU/Hurd DDE userland device drivers ● Move disk drivers? 29
Moving disk drivers to userspace? ● What’s the issue? ● Booting the whole stuff :) ● One more grub-loaded module 30
Hurd boot e x t 2 f s e x e c r o o t K e r n e l T a s k s , m e m o r y , I P C , d i s k 31
Hurd boot s t a r t u p p r o c a u t h e x t 2 f s e x e c r o o t K e r n e l T a s k s , m e m o r y , I P C , d i s k 32
Hurd boot i n i t s s t t a a r r t t u u p p p p r r o o c c a a u u t t h h e e x x t t 2 2 f f s s e e x x e e c c r r o o o o t t K K e e r r n n e e l l T T a a s s k k s s , , m m e e m m o o r r y y , , I I P P C C , , d d i i s s k k 33
Hurd boot n e t d d e p fj n e t i n i t s s t t a a r r t t u u p p p p r r o o c c a a u u t t h h e e x x t t 2 2 f f s s e e x x e e c c r r o o o o t t K K e e r r n n e e l l T T a a s s k k s s , , m m e e m m o o r r y y , , I I P P C C , , d d i i s s k k 34
Hurd boot, userland disk e x t 2 f s e x e c r o o t d i s k K e r n e l T a s k s , m e m o r y , I P C 35
Hurd boot, userland disk s t a r t u p p r o c a u t h e e x x t t 2 2 f f s s e e x x e e c c r r o o o o t t d d i i s s k k K K e e r r n n e e l l T T a a s s k k s s , , m m e e m m o o r r y y , , I I P P C C 36
Hurd boot, userland disk i n i t s t a r t u p p r o c a u t h e e x x t t 2 2 f f s s e e x x e e c c r r o o o o t t d d i i s s k k K K e e r r n n e e l l T T a a s s k k s s , , m m e e m m o o r r y y , , I I P P C C 37
Hurd boot, userland disk n e t d d e p fj n e t i n i t s t a r t u p p r o c a u t h e e x x t t 2 2 f f s s e e x x e e c c r r o o o o t t d d i i s s k k K K e e r r n n e e l l T T a a s s k k s s , , m m e e m m o o r r y y , , I I P P C C 38
Conclusion ● A lot of nice things to achieve in GNU/Hurd ● Really finish them – It’s fun to hack something – It’s better to have it finished :) ● Making a microkernel-based OS a real thing is hard ● GNU/Hurd is almost there with Debian/Guix/Arch – Just needs your help :) 124
Thanks! ● For listening ● And to the people working on all this ● 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 125
Recommend
More recommend