Hello,
As this list can attest, I previously spent a bit of time diving into the way
dynamic linking is supported by L4Re to get shared mode programs working. This
turned out to have a relatively simple fix related to symbols employed by GCC-
generated code.
But during this exercise, I gained some familiarity with the way libraries are
loaded, and this appears to involve the virtual filesystem support, with the
loader perusing the filesystem to access libraries, and with these being
…
[View More]provided as modules by the "rom" filesystem.
Since then, I've spent some time looking at how files are provided by
filesystems and accessed by code that uses the conventional C or POSIX library
interfaces. It raises a few questions about why things are done in a
particular way in L4Re, and which approaches are in use for other L4-based
systems, especially those that seek to provide general-purpose, multi-user
solutions.
What I think I now understand about the virtual filesystem support in L4Re is
as follows. The virtual filesystem itself is a "client-side" construct,
meaning that it resides within any given program. That programs have their own
view of a filesystem is not too different from what the documentation about
systems like the Hurd describes and advocates, and I suppose it is a tempting
approach because it gives each program the flexibility to be customised in
this regard.
However, it seems that beyond the internal "mount tree" representation,
configuration of the namespace hierarchy is largely done using the L4Re
namespace concept, with namespaces acting as directories, and non-namespace
objects within the hierarchy interpreted as particular file types. Apart from
the interpretation of namespaces as directories, it seems that for the most
part, dataspaces are employed to be interpreted as file objects.
I will admit that I didn't really look very hard at how different systems
provide file access before now, but what surprised me slightly was the
apparent lack of delegation in L4Re. As far as I can tell, on systems based on
kernels like Linux, the open library function will employ a system call to
delegate the matter of finding the file and obtaining a way of accessing it to
the familiar monolithic-kernel-plus-filesystems arrangement.
On more "exotic" systems (than Linux) like Minix 3 or the Hurd, it appears
that delegation to a virtual filesystem server [1] or servers [2] occurs to
mediate access to specific files. Some systems like Inferno and Plan 9 employ
protocols [3] to formalise the client-server relationship. I had almost
expected to find similar things in L4Re, but I could only confirm their
absence after reviewing the various VFS abstractions.
One thing I wonder about is whether the current L4Re approach is able to
satisfactorily deal with filesystem content that needs to serve different user
entities, with content having different permission and ownership rights. It
seems that the filesystem logic has to be available as a library within a
program, which is not necessarily a problem.
But to avoid filesystem content being completely exposed to the discretion of
user programs (reminiscent of the problems with early Network File System
implementations), the library would need to call out to other entities, which
doesn't appear to be done with the current L4Re abstractions. One could
implement support for, say, the ext3 filesystem in a library, operating on a
dataspace provided at some kind of mountpoint in a directory (with the
directory being provided by a namespace, of course) but it would be like
giving a user program access to a block device in a traditional Unix-like
system.
Are there any articles about the design of L4Re that might explain the
motivations here? And are there any accessible-but-detailed articles about
other microkernel-based systems and the way in which they structure their
filesystem architectures? I looked around on the TU-Dresden site for
materials, but I didn't immediately find anything obviously relevant.
Paul
[1] https://wiki.minix3.org/doku.php?id=developersguide:vfsinternals
[2] https://www.gnu.org/software/hurd/hurd-talk.html#pat
[3] http://doc.cat-v.org/inferno/4th_edition/styx
[View Less]
FOSDEM 2019 - Microkernels and Component-based OSes devroom
CALL FOR PARTICIPATION
The developers of several free and open-source microkernel-based operating
systems will meet at FOSDEM 2019 [1] in Brussels, Belgium and will share a
developer room on Sunday February 03, 2019 [2]. The devroom is currently
looking for content in the form of talks and activities related to the
area of
microkernel-, unikernel-, and componenent-based operating systems. Possible
topics include, but are not limited …
[View More]to:
* introduction of a specific OS or framework
* design of subsystems and the general architecture of an OS
* enabling support for hardware (architectures, device drivers)
* used languages and tools
* maintenance and testing
* security and robustness
* trends and challenges
* use cases, experiences, lessons learned and demos
Please use the Pentabarf [3] system to submit your proposals. You do
not need to create a new account if you already have one. When in doubt,
please use the devroom mailing list [4]. If you do not want to give a
talk yourself, you may still send suggestions for what else you would
like to see, or do in the devroom. Please send your suggestions to the
mailing list. The deadline for your proposal is on December the 1st 2018.
Make sure to include the following in your proposal:
* title of your talk (will be printed in the FOSDEM booklet)
* your full name (will be printed in the FOSDEM booklet)
* a short abstract (one or two paragraphs)
* duration of your talk (please, at least 25 and no longer than 55 min)
The official devroom schedule (along with the accepted talks) will be
announced on December the 15th on the devroom's mailing list and the
speakers will be notified via e-mail. The schedule will also be published
on the FOSDEM website.
About FOSDEM
FOSDEM is a two-day event organised by volunteers to promote the
widespread use of free and open source software. Taking place in the
beautiful city of Brussels (Belgium), FOSDEM is widely recognised as the
best such conference in Europe. FOSDEM covers a wide spectrum of free
and open source software projects, and offers a platform for people to
collaborate. To this end, FOSDEM has set up developer rooms (devrooms)
with network/internet connectivity and projectors where teams can meet
and showcase their projects. Devrooms are a place for teams to discuss,
hack and publicly present latest directions, lightning talks, news and
discussions. Besides developer rooms, FOSDEM also offers main tracks,
lightning talks, certification exams and project stands. Every year,
FOSDEM hosts more than 5000 developers at the ULB Solbosch campus.
Participation and attendance is totally free, though the organisers
gratefully accept donations and sponsorship. No registration necessary.
About the devroom
Since the first Microkernel devroom in 2012 this devroom has been part of
each following FOSDEM. By now it has become a somewhat institutionalized
tradition for the micro kernel community to meet there; to this date over
a dozen projects have participated in one way or another. Each of the
projects face similar challenges but come up with partially different
solutions. Therefore, the goal of the Microkernel devroom is to bring the
various projects together, let them exchange ideas, cross-pollinate and
socialize.
Social events
It also has become a habit that the microkernel projects dine together
somewhere in Brussels. The year 2019 will not be any different, so there is
going to be a microkernel family dinner on Saturday night. We try place a
reservation, so we will inform you about the exact location and time later.
Consult the FOSDEM web and other projects for additional social events such
as the famous FOSDEM-organized Friday Beer Event and the FOSDEM-arranged
free sightseeing tours for spouses.
Important dates recap
* 01.12.2018: Deadline for submissions
* 15.12.2018: Schedule published and speakers notified of acceptance
* 03.02.2019: The devroom takes places
Links
[1] http://fosdem.org
[2] https://fosdem.org/2019/practical/transportation
[3] https://penta.fosdem.org/submission/FOSDEM19
[4] https://lists.fosdem.org/listinfo/microkernel-devroom
See you all at FOSDEM!
[View Less]
Hi all.
I've been looking at Google and Wikipedia for information about L4, and
it's fairly thin. I've come up with that L4 has read and write registers
and performs IPC by fixed-length registers, with all actions synchronous (I
guess that means you send a message and block until the target thread reads
the message).
Is there a more concrete document anywhere about implementing an L4
microkernel and what makes it L4?
I'm surveying the field at the moment and looking at all the advances made
…
[View More]in computer software—security, managed language runtimes, hypervisors,
real-time OS—and trying to project the possibilities for a next-generation
operating system. There's enough divergence that a rewrite from scratch
might make sense; and besides, I've drawn up a method for getting a
self-hosting CLR running with only anonymous memory allocation and VFS file
page mapping, along with a method of getting the CLR to self-host and
getting it up and running before an actual OS kernel.
In other words: it's readily-achievable to write a CLR in C#, get it
running on itself before the kernel comes up, then load a kernel, VMM, VFS,
ABI, scheduler, and so forth—all written in C#, compiled to CIL, and
totally independent of the hardware architecture underneath—and then throw
away the loader and bring up init. The kernel would need to use an
abstract factory model to do common tasks which require hardware-specific
code, and the CLR would need to load an assembly with a concrete factory
for the particular hardware and a few built-in native assembly calls; but
it's doable.
This is all theoretical at the moment, and I want to explore the particular
edges a little to see what I find out.
[View Less]
[Apology for the shameless ad, but might be of interest to some]
BedRock Systems is a stealth startup with a global team. Our platform is based upon cutting-edge technology, including the latest generation of L4 microkernel, and leverages the next level of development methodologies and tools. We were founded by industry veterans who built large successful companies from scratch. Our top-notch team is a mixture of the best from industry and academia.
Come transform the computing landscape. …
[View More]Join us at www.bedrocksystems.com <http://www.bedrocksystems.com/>.
BedRock Systems Engineering team.
[View Less]