Hi Jörg,
thank you for introducing yourself and for your interest in Genode!
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.
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.
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/ba9ef7fdee07c42bc772c8b515bc9d80...
- 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.
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.
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