Discussion:
Using Genode 17.05 with Fiasco.OC
Jörg-Christian Böhme
2017-07-24 15:16:26 UTC
Permalink
Hello,

first, thanks for your effort guys. I'm very glad to see that a microkernel
architecture/framework is exists in C++ :-)

A short description about me:
I'm C++ enthusiasts (C++ User Group Duesseldorf and Meeting C++
stuff member) and also very interested about operating systems. I pay
attention to security feature.
For some year, Blackberry announced that they discontinued BB10. I was very
disappointed about that because BB10 is developed in Qt/C++ and focuses in
security because they based on a microkernel architecture from QNX as
operating system. After the announcement from Blackberry, I was thinking
about to write a microkernel architecture in C++ but I checked if they
exists a microkernel architecture in C++ and I was very happy about that
they really exists.
I started first with Fiasco.OC but I found out that in Genode it uses the
new C++ Standard so here I'm :-)

I started a month ago with Gnode hello tutorial and play around with them.
Therefore, I call myself a newbie :-)
But at the end, I will use Genode on my laptop (like turmvilla example) and
start to develop some application on it :-).
But first, I think about to start with a small server. The host provider
that I use, use a QEMU with KVM enable as virtual server. So it is not
possilbe to use NOVA on it because of the KVM enabled featuer (I think) but
Fiasco.OC works.


The problem:
So I try to build/create a image from the lighttpd example with Fiasco.OC
kernel. The image started but the lighttpd does not work. Also the
hello tutorial with Fiasco.OC does not work anymore.

I checked the issue tracker on github but I didn't find any issue about
that.


What I figure out:
- Hello tutorial
When I increase in the hello tutorial the "default caps" from 50 to 54 in
the config, then the tutorial is working with Fiasco.OC kernel.
- lighttpd
Here I must first "move" the timer service in the config (see my commit
on github [1]) then it works with the NOVA kernel. With Fiasco.OC I get
following error:
Error: nic_drv -> : environment ROM session denied (label="device_pd",
ram_quota=6144, cap_quota=3, diag=0)
I try to add "device_pd" in the boot modules because it is missing in the
rom fs but device_pd is not compile for the Fiasco.OC, only for NOVA.
I found out following in:
genode-src/repos/os/src/drivers/platform/spec/x86/device_pd/target.mk
It looks like device_pd is only build for NOVA.


Is this a known issue or somebody working on it ?
Or works the lighttpd example with Fiasco.OC kernel for anyone ?
If you still need additional infos, let me know.


Regards,
Jörg

[1]
https://github.com/Bjoe/genode/commit/8522e1b06c62e33988a03c5f308f16fad5250d45
Norman Feske
2017-07-25 11:45:45 UTC
Permalink
Hi Jörg,

thank you for introducing yourself and for your interest in Genode!
Post by Jörg-Christian Böhme
I started a month ago with Gnode hello tutorial and play around with them.
Therefore, I call myself a newbie :-)
But at the end, I will use Genode on my laptop (like turmvilla example) and
start to develop some application on it :-). But first, I think about to
start with a small server. The host provider that I use, use a QEMU with
KVM enable as virtual server. So it is not possilbe to use NOVA on it
because of the KVM enabled featuer (I think) but
Fiasco.OC works.
We added the -no-kvm option in '<build-dir>/etc/build.conf' by default a
few years ago when Qemu/KVM did not implement all the features required
by NOVA. There should be a good chance that NOVA works with recent Qemu
versions. Could you give NOVA on Qemu/KVM another spin and report the
specific problem you encountered?

In general, I warmly recommend using NOVA over Fiasco.OC as NOVA is the
most commonly used (and thoroughly tested) Genode base platform on x86.
Post by Jörg-Christian Böhme
So I try to build/create a image from the lighttpd example with Fiasco.OC
kernel. The image started but the lighttpd does not work. Also the
hello tutorial with Fiasco.OC does not work anymore.
I checked the issue tracker on github but I didn't find any issue about
that.
- Hello tutorial
When I increase in the hello tutorial the "default caps" from 50 to 54
in the config, then the tutorial is working with Fiasco.OC kernel.
I think that this issue is fixed in the current master branch,
specifically by commit [1]. Prior this change, Genode's core consumed
one additional (dataspace) capability per RPC object when running on
Fiasco.OC, which remained undetected until we added the capability
accounting in 17.05.

[1]
https://github.com/genodelabs/genode/commit/ba9ef7fdee07c42bc772c8b515bc9d808c401112
Post by Jörg-Christian Böhme
- lighttpd
Here I must first "move" the timer service in the config (see my commit
on github [1]) then it works with the NOVA kernel.
The position of the timer <start> node within the config should not make
any difference.

I just tried out the lighttpd.run script with KERNEL=foc on x86_32. It
works when adding the '<default caps="100"/>' declaration. Opening
'http://localhost:5555/' in the web browser shows the "Hello Genode" page.
Post by Jörg-Christian Böhme
With Fiasco.OC I get
Error: nic_drv -> : environment ROM session denied (label="device_pd",
ram_quota=6144, cap_quota=3, diag=0)
I try to add "device_pd" in the boot modules because it is missing in the
rom fs but device_pd is not compile for the Fiasco.OC, only for NOVA.
genode-src/repos/os/src/drivers/platform/spec/x86/device_pd/target.mk
It looks like device_pd is only build for NOVA.
Admittedly, the log messages look a bit scary but this output is normal
on Fiasco.OC where the platform driver does not support device PDs
(IOMMU). We should probably dim the noise a bit. ;-)

Cheers
Norman
--
Dr.-Ing. Norman Feske
Genode Labs

http://www.genode-labs.com · http://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Loading...