A roadmap for the Hurd? · 28 Ongoing work, welcomes help PCI arbiter Safe concurrent access to PCI...

28
1 A roadmap for the Hurd? Samuel Thibault 2019 February 3rd

Transcript of A roadmap for the Hurd? · 28 Ongoing work, welcomes help PCI arbiter Safe concurrent access to PCI...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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