a roadmap for the hurd? · 28 ongoing work, welcomes help pci arbiter safe concurrent access to pci...
TRANSCRIPT
![Page 1: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/1.jpg)
1
A roadmap for the Hurd?
Samuel Thibault
2019 February 3rd
![Page 2: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/2.jpg)
2
The Hurd is all aboutfreedom #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
![Page 3: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/3.jpg)
15
Micro-kernel layering
pfinetproc
authext2fs
root user
sh
cp
Kernel Tasks, memory, IPC
![Page 4: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/4.jpg)
16
Micro-kernel layering
pfinetproc
authext2fs
root user
sh
cp
Kernel Tasks, memory, IPC
![Page 5: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/5.jpg)
17
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
![Page 6: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/6.jpg)
18
Hurd possibilities
isofs
Kernel
pfinetproc
authext2fs
root user
sh
cpftpfs
![Page 7: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/7.jpg)
19
Hurd possibilities
€ settrans -c ~/ftp: /hurd/hostmux /hurd/ftpfs /
(just once for good)
€ settrans -a ~/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 permanently stored in ext2fs
€ settrans ~/.signature /hurd/run /usr/games/fortune
![Page 8: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/8.jpg)
20
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
![Page 9: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/9.jpg)
21
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
![Page 10: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/10.jpg)
22
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\*
![Page 11: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/11.jpg)
23
Bits to polish
● Namespace-based translators● cd software.tar.gz,,/● cat README
● cd disk.img,,part1,,ext2fs/
![Page 12: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/12.jpg)
24
Bits to polish
● mboxfs● cd mbox,,/● mkdir that_man● mv $(grep -l that@mail *) that_man
![Page 13: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/13.jpg)
25
Bits to polish
● Xmlfs● cd index.html,,/● cd html/body/● for i in $(find . -name h1); do cat $i/.text ; done
![Page 14: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/14.jpg)
26
Bits to polish
● High-level language bindings for translators● Perl (pith)● Lisp● Java● Python
![Page 15: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/15.jpg)
27
Bits to polish
● Some more in hurdextras/● jfs● notice● run● unionfs
![Page 16: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/16.jpg)
28
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
![Page 17: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/17.jpg)
29
No driver in the kernel?
● Minimal kernel support● Tasks, memory, IPC
● But also, ATM● Disk drivers
● We moved network drivers to userspacethanks to netdde● See FOSDEM’14 talk GNU/Hurd DDE userland
device drivers● Move disk drivers?
![Page 18: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/18.jpg)
30
Moving disk drivers to userspace?
● What’s the issue?● Booting the whole stuff :)● One more grub-loaded module
![Page 19: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/19.jpg)
31
Hurd boot
Kernel
rootext2fs exec
Tasks, memory, IPC, disk
![Page 20: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/20.jpg)
32
Hurd boot
proc auth
startup
Kernel
rootexecext2fs
Tasks, memory, IPC, disk
![Page 21: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/21.jpg)
33
Hurd boot
proc auth
startup
Kernel
rootexecext2fs
Tasks, memory, IPC, disk
proc auth
startup
Kernel
rootexecext2fs
init
Tasks, memory, IPC, disk
![Page 22: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/22.jpg)
34
Hurd boot
proc auth
startup
Kernel
rootexecext2fs
Tasks, memory, IPC, disk
proc auth
startup
Kernel
rootexecext2fs
initpfinetnetdde
Tasks, memory, IPC, disk
![Page 23: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/23.jpg)
35
Hurd boot, userland disk
disk
Kernel Tasks, memory, IPC
rootext2fs exec
![Page 24: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/24.jpg)
36
Hurd boot, userland disk
disk
Kernel Tasks, memory, IPC
rootext2fs exec
proc auth
startup
disk
Kernel Tasks, memory, IPC
rootexecext2fs
![Page 25: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/25.jpg)
37
Hurd boot, userland disk
disk
Kernel Tasks, memory, IPC
rootext2fs exec
proc auth
startup
disk
Kernel Tasks, memory, IPC
rootexecext2fs
init
![Page 26: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/26.jpg)
38
Hurd boot, userland disk
disk
Kernel Tasks, memory, IPC
rootext2fs exec
proc auth
startup
disk
Kernel Tasks, memory, IPC
rootexecext2fs
initpfinetnetdde
![Page 27: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/27.jpg)
124
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 :)
![Page 28: A roadmap for the Hurd? · 28 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](https://reader034.vdocuments.net/reader034/viewer/2022050601/5fa8247fc7751a5b350b35c8/html5/thumbnails/28.jpg)
125
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 Systemshttp://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.37.9653&rep=rep1&type=pdf