bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Running rump for the / filesystem


From: Samuel Thibault
Subject: Running rump for the / filesystem
Date: Mon, 9 Dec 2019 00:08:38 +0100
User-agent: NeoMutt/20170609 (1.8.3)

Hello,

I have been thinking about how to get rump running for the / filesystem.

Looking at how things go between ext2fs and exec: in grub.cfg we have
roughly:

module ext2fs --exec-server-task='${exec-task}' '$(task-create)' 
'$(task-resume)'
module exec '$(exec-task=task-create)'

i.e. the kernel is told to create two tasks, to pass a reference to
the exec task to the ext2fs task, and to let only the ext2fs task to
run.  What happens then is in diskfs_start_bootstrap, which calls
start_execserver, which uses task_set_special_port to set the
TASK_BOOTSTRAP_PORT special port to a send right to ext2fs, and resumes
the exec task. I.e. basically ext2fs tells exec where it is so that exec
can start the userland with / available.

I'm thinking that the same can be used for the rump translator,
something like:

module rump --fs-server-task='${fs-task}' '$(task-create)' '$(task-resume)'
module ext2fs --exec-server-task='${exec-task}' '$(fs-task=task-create)'
module exec '$(exec-task=task-create)'

and we'd make rump's initialization use task_set_special_port to set
the TASK_BOOTSTRAP_PORT special port of ext2fs to a send right to rump,
and resume it. When ext2fs sees that this port is set, it would use it
instead of the gnumach-provided _hurd_device_master port to open
devices.

And we can nest this yet more for the pci-arbiter:

module pci-arbiter --disk-server-task='${disk-task}' '$(task-create)' 
'$(task-resume)'
module rump --fs-server-task='${fs-task}' '$(disk-task=task-create)'
module ext2fs --exec-server-task='${exec-task}' '$(fs-task=task-create)'
module exec '$(exec-task=task-create)'

and we'd make pci-arbiter's initialization use task_set_special_port
to set the TASK_BOOTSTRAP_PORT special port of rump to a send right to
pci-arbiter and resume it. When libpciaccess sees that this port is set,
it would use it instead of looking up /server/bus/pci.

Any taker on getting this to work?  That'd allow to at last get rid of
the disk drivers from gnumach :D

Samuel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]