On Thu, Sep 17, 2015 at 11:27:45AM +0200, Norman Feske wrote:
Hi Alex,
On 17.09.2015 10:41, Alexander Senier wrote:
I'm trying to run some more elaborate demos on with Linux as the base system. My host is a Debian Stretch (x86_64), I'm on master which I checked out this morning (5cf8c49c).
When trying to run 'noux_vim', a completely black SDL window (no text or anything) shows up. The following is output on the command line:
$ make run/noux_vim
unfortunately, all but the simplest noux scenarios don't work on Linux. Ironically, 'fork' is not implemented on this base platform. On regular L4-like microkernels, it is possible to remotely manipulate address spaces. So the noux runtime is able to copy the address space of the forking noux process to another one. The Linux kernel does not allow us to do that (well, at least when not using ptrace or a similar hook).
Consequently, implementing fork on Linux calls for a different implementation where the noux process itself plays a more active role (i.e., issuing the Linux clone syscall directly, copying the locally implemented region-manager structures). It is actually quite tricky. So far, I found that the hassle wasn't worth the effort.
The plain noux.run script does work because is solely executes 'ls', which does not rely on fork. In contrast, the noux_vim.run scenario requires fork because Vim temporarily spawns a shell at startup.
Do you deem noux as critical in your Linux-based scenario? If yes, we should investigate to best way how to go forward.
Cheers Norman
Sorry to jump in, but running noux_vim in qemu with base.foc32 as the platform also gives a black screen. Could this be related?